ํ•œ ์ค„๋กœ ๋งํ•˜๋ฉด, smolagents๋Š” ๋„๊ตฌ ํ•จ์ˆ˜ + ๋ชจ๋ธ + ์‹คํ–‰ ๋ฃจํ”„๋งŒ ์—ฐ๊ฒฐํ•˜๋ฉด ๋ฐ”๋กœ ์—์ด์ „ํŠธ๋ฅผ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์ถœ๋ฐœ์ ์ด๋‹ค. ์ด๋ฒˆ ๋ณธํŽธ 1ํŽธ์€ โ€œ์ฒ˜์Œ๋ถ€ํ„ฐ ์™„๋ฒฝโ€์ด ์•„๋‹ˆ๋ผ, ์‹คํ–‰-๊ฒ€์ฆ-ํ™•์žฅ ์ˆœ์„œ๋กœ ์‹คํŒจ ์—†์ด ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•œ๋‹ค.

ํ•œ ์ค„ ๊ฒฐ๋ก 

๋จผ์ € selfcheck๋กœ ๋„๊ตฌ๊ฐ€ ์ •์ƒ์ธ์ง€ ํ™•์ธํ•˜๊ณ , ๊ทธ๋‹ค์Œ single๊ณผ eval๋กœ ํ™•์žฅํ•˜๋ฉด ์ดˆ๋ณด์ž๋„ 20๋ถ„ ์•ˆ์— ์ฒซ CodeAgent๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งฅ๋ฝ ๋ณด์™„

Hugging Face Agents Course์—์„œ ํ•ต์‹ฌ์€ ํ•ญ์ƒ ๊ฐ™๋‹ค.

  • ์—์ด์ „ํŠธ๋Š” ๋ชจ๋ธ๋งŒ ์ข‹๋‹ค๊ณ  ๋๋‚˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋„๊ตฌ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ€๋ฅด๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๋ฃจํ”„๊ฐ€ ์žˆ์–ด์•ผ ์‹ค๋ฌด์— ์“ธ ์ˆ˜ ์žˆ๋‹ค.
  • smolagents๋Š” ์ด ๋ฃจํ”„๋ฅผ ์งง์€ ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑํ•˜๊ธฐ ์ข‹๋‹ค.

์ด๋ฒˆ ๊ธ€์€ Unit 2(smolagents) ์ž…๋ฌธ ์ „ํ™˜์šฉ์œผ๋กœ, โ€œ์ž‘๋™ํ•˜๋Š” ์ตœ์†Œ ๋‹จ์œ„โ€๋ฅผ ์†์— ์ตํžˆ๋Š” ๋ชฉ์ ์ด๋‹ค.

๊ณต์‹ ๊ทผ๊ฑฐ ๋ฐ”๋กœ๋ณด๊ธฐ

ํ•ต์‹ฌ ์š”์•ฝ (MECE)

1) ๊ฐœ๋…

  • CodeAgent: ์ž์—ฐ์–ด ์š”์ฒญ์„ ๋ฐ›์•„, ํ•„์š”ํ•˜๋ฉด ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ๋„๊ตฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‹คํ–‰์ž
  • Tool: ๊ณ„์‚ฐ/๋ณ€ํ™˜/์กฐํšŒ ๊ฐ™์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜
  • Model: ์–ด๋–ค ๋ชจ๋ธ(OpenAI/HF Inference)๋กœ ์ถ”๋ก ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์—”์ง„

2) ์›์ธ

์ดˆ๋ณด์ž๊ฐ€ ๋ง‰ํžˆ๋Š” ์ด์œ ๋Š” ๋ณดํ†ต 3๊ฐ€์ง€๋‹ค.

  1. ํŒจํ‚ค์ง€๋Š” ์„ค์น˜ํ–ˆ๋Š”๋ฐ ๋„๊ตฌ ํ•จ์ˆ˜๊ฐ€ ์ •์ƒ์ธ์ง€ ํ™•์ธ์„ ์•ˆ ํ•จ
  2. API ํ‚ค ์—†์ด ๋ฐ”๋กœ ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•จ
  3. ๋‹จ์ผ ์„ฑ๊ณต ํ›„ ๋ฐฐ์น˜ ๊ฒ€์ฆ์„ ์•ˆ ํ•ด์„œ ์žฌํ˜„์„ฑ์ด ๋‚ฎ์Œ

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

์น ํŒ ํŒ์„œํ˜• ์น˜ํŠธ์‹œํŠธ

์„ค์น˜๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฑด ๊ฒ€์ฆ ์ˆœ์„œ๋‹ค.

  1. selfcheck๋กœ ๋„๊ตฌ๋ถ€ํ„ฐ ํ™•์ธ
  2. single๋กœ ์ฒซ ์„ฑ๊ณต 1ํšŒ ํ™•๋ณด
  3. eval๋กœ ์žฌํ˜„์„ฑ ์ ์ˆ˜ํ™”
  4. ์ ์ˆ˜ ๋‚ฎ์œผ๋ฉด ํ”„๋กฌํ”„ํŠธ/๋„๊ตฌ ์ •์˜๋ฅผ ์ˆ˜์ •

์‹ค๋ฌด ์ ์šฉ ํฌ์ธํŠธ

  • CS ์ž๋™ํ™”: ํ™˜๋ถˆ/๊ฒฐ์ œ/๊ธฐ์ˆ ๋ฌธ์˜ ๋ถ„๊ธฐ ์ „, ์ˆซ์ž ๊ณ„์‚ฐ ๋กœ์ง ๋„๊ตฌํ™”
  • ์šด์˜ ๋ณด๊ณ : โ€œ์ˆซ์ž๋งŒ ๋‹ตํ•˜๊ธฐโ€ ๊ฐ™์€ ์ถœ๋ ฅ ์ œ์•ฝ์œผ๋กœ ํ›„์ฒ˜๋ฆฌ ์•ˆ์ •ํ™”
  • ํ™•์žฅ ์ „๋žต: ๋ฐฐ์น˜ ํ‰๊ฐ€ JSON์— ์‹ค์ œ ์—…๋ฌด ์š”์ฒญ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ๊ฐ„ ๋‹จ์œ„ ์„ฑ๋Šฅ ์ถ”์ 

ํ˜„์žฅํ˜• ๋ฏธ๋‹ˆ ์‚ฌ๋ก€

์‚ฌ๋ก€ A) ์ฒซ ์‹คํ–‰์€ ๋๋Š”๋ฐ ์žฌํ˜„์ด ์•ˆ ๋˜๋˜ ๊ฒฝ์šฐ

single๋งŒ ์„ฑ๊ณตํ•˜๊ณ  ๊ณง๋ฐ”๋กœ ์‹ค๋ฌด์— ๋ถ™์˜€๋‹ค๊ฐ€ ์š”์ฒญ ํ˜•ํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ ์‹คํŒจ๊ฐ€ ์ฆ๊ฐ€ํ–ˆ๋‹ค. eval์„ ์ฃผ๊ฐ„ ๋ฃจํ‹ด์œผ๋กœ ๋„ฃ๊ณ  ์ƒ˜ํ”Œ ์š”์ฒญ์„ 3๊ฐœโ†’10๊ฐœ๋กœ ๋Š˜๋ฆฌ์ž ์‹คํŒจ ์ผ€์ด์Šค๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋“œ๋Ÿฌ๋‚ฌ๋‹ค.

์‚ฌ๋ก€ B) ์ถœ๋ ฅ ํŒŒ์‹ฑ ๋•Œ๋ฌธ์— ์ž๋™ํ™”๊ฐ€ ์ž์ฃผ ๋Š๊ธฐ๋˜ ๊ฒฝ์šฐ

์‘๋‹ต ํ˜•์‹์ด ๋“ค์ญ‰๋‚ ์ญ‰ํ•ด์„œ ํ›„์ฒ˜๋ฆฌ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž์ฃผ ๊นจ์กŒ๋‹ค. ๊ฒฐ๊ณผ ํฌ๋งท์„ โ€œ์ˆซ์ž๋งŒโ€ ๋˜๋Š” ๊ณ ์ • JSON์œผ๋กœ ๊ฐ•์ œํ•œ ๋’ค ์šด์˜ ์•ˆ์ •์„ฑ์ด ํฌ๊ฒŒ ๊ฐœ์„ ๋๋‹ค.

์ ์šฉ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • ๊ฐ€์ƒํ™˜๊ฒฝ + ํŒจํ‚ค์ง€ ์„ค์น˜ ์™„๋ฃŒ
  • selfcheck ์„ฑ๊ณต(tools_ok=true)
  • .env์— OPENAI_API_KEY ๋˜๋Š” HF_TOKEN ์„ค์ •
  • single ๋ชจ๋“œ๋กœ ์ฒซ ์„ฑ๊ณต ๊ฒฐ๊ณผ ํ™•๋ณด
  • eval ์ ์ˆ˜(score) ๊ธฐ๋ก ํ›„ ๊ฐœ์„  ํฌ์ธํŠธ 1๊ฐœ ์ด์ƒ ๋ฉ”๋ชจ

์ฐธ๊ณ  ๋งํฌ (์šฐ์„ ์ˆœ์œ„)

  1. https://github.com/huggingface/agents-course
  2. https://huggingface.co/learn/agents-course
  3. https://huggingface.co/docs/smolagents

์‹ค์Šต ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

๋ณด๊ฐ• ์ถ”๊ฐ€: 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๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ ์ž‘์„ฑ ๋ฐ ๊ตฌ์กฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ, ์ตœ์ข… ๊ณต๊ฐœ ์ „ ์‚ฌ๋žŒ์ด ๊ฒ€ํ† ยท๋ณด์ •ํ•œ๋‹ค.