ํ ์ค๋ก ๋งํ๋ฉด, smolagents๋ ๋๊ตฌ ํจ์ + ๋ชจ๋ธ + ์คํ ๋ฃจํ๋ง ์ฐ๊ฒฐํ๋ฉด ๋ฐ๋ก ์์ด์ ํธ๋ฅผ ๋๋ฆด ์ ์๋ ๊ฐ์ฅ ๊ฐ๋ฒผ์ด ์ถ๋ฐ์ ์ด๋ค. ์ด๋ฒ ๋ณธํธ 1ํธ์ โ์ฒ์๋ถํฐ ์๋ฒฝโ์ด ์๋๋ผ, ์คํ-๊ฒ์ฆ-ํ์ฅ ์์๋ก ์คํจ ์์ด ์์ํ๋ ๋ฐ ์ง์คํ๋ค.
ํ ์ค ๊ฒฐ๋ก
๋จผ์ selfcheck๋ก ๋๊ตฌ๊ฐ ์ ์์ธ์ง ํ์ธํ๊ณ , ๊ทธ๋ค์ single๊ณผ eval๋ก ํ์ฅํ๋ฉด ์ด๋ณด์๋ 20๋ถ ์์ ์ฒซ CodeAgent๋ฅผ ์ฌํํ ์ ์๋ค.
๋งฅ๋ฝ ๋ณด์
Hugging Face Agents Course์์ ํต์ฌ์ ํญ์ ๊ฐ๋ค.
- ์์ด์ ํธ๋ ๋ชจ๋ธ๋ง ์ข๋ค๊ณ ๋๋์ง ์๋๋ค.
- ๋๊ตฌ๋ฅผ ์์ ํ๊ฒ ๋ถ๋ฅด๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํ๋ ๋ฃจํ๊ฐ ์์ด์ผ ์ค๋ฌด์ ์ธ ์ ์๋ค.
- smolagents๋ ์ด ๋ฃจํ๋ฅผ ์งง์ ์ฝ๋๋ก ๊ตฌ์ฑํ๊ธฐ ์ข๋ค.
์ด๋ฒ ๊ธ์ Unit 2(smolagents) ์ ๋ฌธ ์ ํ์ฉ์ผ๋ก, โ์๋ํ๋ ์ต์ ๋จ์โ๋ฅผ ์์ ์ตํ๋ ๋ชฉ์ ์ด๋ค.
๊ณต์ ๊ทผ๊ฑฐ ๋ฐ๋ก๋ณด๊ธฐ
- Agents Course(์ปค๋ฆฌํ๋ผ): https://huggingface.co/learn/agents-course
- Course ์ ์ฅ์(์ค์ต/๊ณผ์ ): https://github.com/huggingface/agents-course
- smolagents ๋ฌธ์(Agent/Tool API): https://huggingface.co/docs/smolagents
ํต์ฌ ์์ฝ (MECE)
1) ๊ฐ๋
- CodeAgent: ์์ฐ์ด ์์ฒญ์ ๋ฐ์, ํ์ํ๋ฉด ์ฝ๋ ํํ๋ก ๋๊ตฌ๋ฅผ ํธ์ถํ๋ ์คํ์
- Tool: ๊ณ์ฐ/๋ณํ/์กฐํ ๊ฐ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํจ์
- Model: ์ด๋ค ๋ชจ๋ธ(OpenAI/HF Inference)๋ก ์ถ๋ก ํ ์ง ๊ฒฐ์ ํ๋ ์์ง
2) ์์ธ
์ด๋ณด์๊ฐ ๋งํ๋ ์ด์ ๋ ๋ณดํต 3๊ฐ์ง๋ค.
- ํจํค์ง๋ ์ค์นํ๋๋ฐ ๋๊ตฌ ํจ์๊ฐ ์ ์์ธ์ง ํ์ธ์ ์ ํจ
- API ํค ์์ด ๋ฐ๋ก ์์ด์ ํธ๋ฅผ ์คํํจ
- ๋จ์ผ ์ฑ๊ณต ํ ๋ฐฐ์น ๊ฒ์ฆ์ ์ ํด์ ์ฌํ์ฑ์ด ๋ฎ์
3) ๋์
selfcheckโ ๋๊ตฌ ๋จ์ ์ ์ ๋์ ํ์ธsingleโ ๋จ์ผ ์์ฒญ์์ ๋๊ตฌ ์ ํ/๊ฒฐ๊ณผ ํ์ธevalโ ์ฌ๋ฌ ์ ๋ ฅ์ ํ ๋ฒ์ ๋๋ ค ์ฌํ์ฑ ์ ์ ํ์ธ
4) ์คํ
์ด๋ฒ ๋ฌธ์์ day5_first_agent_smolagents.py๋ฅผ ๊ทธ๋๋ก ์คํํ๋ฉด,
- ๋๊ตฌ ๋จ์ ์ฒดํฌ
- ๋จ์ผ ์์ฒญ ์คํ
- ๋ฐฐ์น ํ๊ฐ(์ ์ํ) ๊น์ง ํ ๋ฒ์ ๋๋ผ ์ ์๋ค.
flowchart LR A[๋ฌธ์ ์ธ์ง: ์์ด์ ํธ๊ฐ ์ ๋์๊ฐ] --> B[์์ธ ๋ถํด: ์ค์น/ํค/๋๊ตฌ] B --> C[๋์ ์ ํ: selfcheck -> single -> eval] C --> D[์คํ/๊ฒ์ฆ: score >= 0.66] D --> E[ํ์ฅ: ์ค๋ฌด ์์ฒญ JSON ์ถ๊ฐ]
์ฉ์ด/๋น์ ์ค๋ช
- ์์ด์ ํธ: ์ ์ ์ฌ์
- ๋๊ตฌ(Tool): ์ฌ๋ด ์์คํ (๊ณ์ฐ๊ธฐ/๊ฒ์๊ธฐ)
- ํ๋กฌํํธ(Task): ์ ๋ฌด ์ง์์
- ํ๊ฐ(Eval): ๊ต์ก ๋๋๊ณ ์ค๋ฌด ํ ์คํธ ๋ณด๋ ๊ณผ์
์ฆ, ์ ์ (์์ด์ ํธ)์๊ฒ ์์คํ ์ ๊ทผ๊ถํ(๋๊ตฌ)๊ณผ ์ ๋ฌด์ง์(ํ๋กฌํํธ)๋ฅผ ์ฃผ๊ณ , ํ ์คํธ(Eval)๋ก ํฉ๊ฒฉ์ ํ์ธํ๋ ํ๋ฆ์ด๋ค.
์ค์ต: 20๋ถ ์ฌํ (๋๊ตฌ/์ ๋ ฅ/์คํ๋ช ๋ น/์ฑ๊ณตํ์ )
Step 1) ํ๊ฒฝ ์ค๋น
- ๋๊ตฌ: Python 3.10+, ํฐ๋ฏธ๋
- ์
๋ ฅ:
requirements.txt - ์คํ๋ช ๋ น:
cd /home/tw2/Documents/n8n/data/shared/syn/8.quartz/Agent/๐ค\ HF-Agents-Course/downloads
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt- ์ฑ๊ณตํ์ : ์ค์น ์๋ฌ ์์ด ์ข
๋ฃ,
(.venv)ํ๋กฌํํธ ํ์ธ
Step 2) ๋๊ตฌ ์ ํ์ฒดํฌ (๋ชจ๋ธ ํธ์ถ ์ )
- ๋๊ตฌ:
day5_first_agent_smolagents.py - ์ ๋ ฅ: ๋ด์ฅ ํ ์คํธ ์ผ์ด์ค(๋ง์ /๊ณฑ์ /VAT)
- ์คํ๋ช ๋ น:
python day5_first_agent_smolagents.py --mode selfcheck- ์ฑ๊ณตํ์ : ์ถ๋ ฅ JSON์
"tools_ok": true
Step 3) ๋จ์ผ ์์ฒญ ์คํ
- ๋๊ตฌ:
day5_first_agent_smolagents.py - ์ ๋ ฅ: ๋จ์ผ ์ ๋ฌด ์์ฒญ 1๊ฐ
- ์คํ๋ช ๋ น:
# .env์ OPENAI_API_KEY ๋๋ HF_TOKEN ํ์
python day5_first_agent_smolagents.py \
--mode single \
--provider auto \
--task "31๊ณผ 14๋ฅผ ๋ํ ๋ค 2๋ฅผ ๊ณฑํด์ค. ๋ต์ ์ซ์๋ง ๋งํด์ค"- ์ฑ๊ณตํ์ : ๊ฒฐ๊ณผ ํ
์คํธ์
90ํฌํจ
Step 4) ๋ฐฐ์น ํ๊ฐ
- ๋๊ตฌ:
day5_first_agent_smolagents.py,sample_tasks_day5.json - ์ ๋ ฅ: ์ํ ์์ฒญ 3๊ฐ(์ ๋ต ์ซ์ ํฌํจ)
- ์คํ๋ช ๋ น:
python day5_first_agent_smolagents.py \
--mode eval \
--provider auto \
--input sample_tasks_day5.json- ์ฑ๊ณตํ์ :
"pass": true๋๋"score" >= 0.66
์น ํ ํ์ํ ์นํธ์ํธ
์ค์น๋ณด๋ค ์ค์ํ ๊ฑด ๊ฒ์ฆ ์์๋ค.
selfcheck๋ก ๋๊ตฌ๋ถํฐ ํ์ธsingle๋ก ์ฒซ ์ฑ๊ณต 1ํ ํ๋ณดeval๋ก ์ฌํ์ฑ ์ ์ํ- ์ ์ ๋ฎ์ผ๋ฉด ํ๋กฌํํธ/๋๊ตฌ ์ ์๋ฅผ ์์
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
- CS ์๋ํ: ํ๋ถ/๊ฒฐ์ /๊ธฐ์ ๋ฌธ์ ๋ถ๊ธฐ ์ , ์ซ์ ๊ณ์ฐ ๋ก์ง ๋๊ตฌํ
- ์ด์ ๋ณด๊ณ : โ์ซ์๋ง ๋ตํ๊ธฐโ ๊ฐ์ ์ถ๋ ฅ ์ ์ฝ์ผ๋ก ํ์ฒ๋ฆฌ ์์ ํ
- ํ์ฅ ์ ๋ต: ๋ฐฐ์น ํ๊ฐ JSON์ ์ค์ ์ ๋ฌด ์์ฒญ์ ์ถ๊ฐํด ์ฃผ๊ฐ ๋จ์ ์ฑ๋ฅ ์ถ์
ํ์ฅํ ๋ฏธ๋ ์ฌ๋ก
์ฌ๋ก A) ์ฒซ ์คํ์ ๋๋๋ฐ ์ฌํ์ด ์ ๋๋ ๊ฒฝ์ฐ
single๋ง ์ฑ๊ณตํ๊ณ ๊ณง๋ฐ๋ก ์ค๋ฌด์ ๋ถ์๋ค๊ฐ ์์ฒญ ํํ๊ฐ ๋ฐ๋ ๋ ์คํจ๊ฐ ์ฆ๊ฐํ๋ค. eval์ ์ฃผ๊ฐ ๋ฃจํด์ผ๋ก ๋ฃ๊ณ ์ํ ์์ฒญ์ 3๊ฐโ10๊ฐ๋ก ๋๋ฆฌ์ ์คํจ ์ผ์ด์ค๊ฐ ๋น ๋ฅด๊ฒ ๋๋ฌ๋ฌ๋ค.
์ฌ๋ก B) ์ถ๋ ฅ ํ์ฑ ๋๋ฌธ์ ์๋ํ๊ฐ ์์ฃผ ๋๊ธฐ๋ ๊ฒฝ์ฐ
์๋ต ํ์์ด ๋ค์ญ๋ ์ญํด์ ํ์ฒ๋ฆฌ ์คํฌ๋ฆฝํธ๊ฐ ์์ฃผ ๊นจ์ก๋ค. ๊ฒฐ๊ณผ ํฌ๋งท์ โ์ซ์๋งโ ๋๋ ๊ณ ์ JSON์ผ๋ก ๊ฐ์ ํ ๋ค ์ด์ ์์ ์ฑ์ด ํฌ๊ฒ ๊ฐ์ ๋๋ค.
์ ์ฉ ์ฒดํฌ๋ฆฌ์คํธ
- ๊ฐ์ํ๊ฒฝ + ํจํค์ง ์ค์น ์๋ฃ
-
selfcheck์ฑ๊ณต(tools_ok=true) -
.env์OPENAI_API_KEY๋๋HF_TOKEN์ค์ -
single๋ชจ๋๋ก ์ฒซ ์ฑ๊ณต ๊ฒฐ๊ณผ ํ๋ณด -
eval์ ์(score) ๊ธฐ๋ก ํ ๊ฐ์ ํฌ์ธํธ 1๊ฐ ์ด์ ๋ฉ๋ชจ
์ฐธ๊ณ ๋งํฌ (์ฐ์ ์์)
- https://github.com/huggingface/agents-course
- https://huggingface.co/learn/agents-course
- https://huggingface.co/docs/smolagents
์ค์ต ํ์ผ ๋ค์ด๋ก๋
- Day5 ์ค์ต ๊ฐ์ด๋ README
- day5_first_agent_smolagents.py
- sample_tasks_day5.json
- hf-agents-day5-first-agent.zip
๋ณด๊ฐ ์ถ๊ฐ: single / eval ์ถ๋ ฅ ์์
์ด๋ณด์ ํผ์ ์ ์ค์ด๊ธฐ ์ํด ์ ์ ์ถ๋ ฅ ์์๋ฅผ ๊ณ ์ ํ๋ค.
single ์ ์ ์์
{
"mode": "single",
"task": "31๊ณผ 14๋ฅผ ๋ํ ๋ค 2๋ฅผ ๊ณฑํด์ค",
"result": "90",
"ok": true
}eval ์ ์ ์์
{
"mode": "eval",
"total": 3,
"correct": 3,
"score": 1.0,
"pass": true
}๋น์ ์ ์์(ํค ๋๋ฝ)
{
"mode": "single",
"ok": false,
"error": "api_key_missing"
}ํ์ ๊ธฐ์ค์ ๋ฏธ๋ฆฌ ๋ณด๋ฉด ์คํ์ ๋๋๋ฐ ์ ์์ธ์ง ๋ชจ๋ฅด๊ฒ ๋ ์ํ๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์๋ค.
ํ์ง ์ ๊ฒํ (2026-02-28)
- ์ฌํ์ฑ: 9.0/10
- ๊ณต์ ๊ทผ๊ฑฐ ์ฐ๊ฒฐ: 9.0/10
- ์ด์ ์ ์ฉ์ฑ: 8.5/10
- ๋ฌธ์ ๊ฐ๋ ์ฑ: 8.5/10
์ฆ์ ๋ณด๊ฐ ํฌ์ธํธ 1๊ฐ
- API ํค ์ค๋ฅ ์ธ์ ๋คํธ์ํฌ ํ์์์/๋ ์ดํธ๋ฆฌ๋ฐ ์์๋ฅผ 1๊ฐ์ฉ ์ถ๊ฐํด ์ฅ์ ๋์ ๋ฒ์๋ฅผ ํ์ฅํ๋ค.
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์ ์์ฑ ๋ฐ ๊ตฌ์กฐํ๋ฅผ ์ํํ์ผ๋ฉฐ, ์ต์ข ๊ณต๊ฐ ์ ์ฌ๋์ด ๊ฒํ ยท๋ณด์ ํ๋ค.