์ด๋ฒˆ ์‹ค์ŠตํŽธ์€ Hugging Face Agents Course ์ด๋ก (ํˆด ์„ ํƒ, ์‹คํ–‰ ๋ฃจํ”„, ๊ด€์ฐฐ/๊ฒ€์ฆ)์„ ์ž‘๊ฒŒ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋กœ ์˜ฎ๊ธฐ๋Š” 1ํŽธ์ด๋‹ค. ๋ชฉํ‘œ๋Š” โ€œ์š”์ฒญ์„ ์ฝ๊ณ  ์ ์ ˆํ•œ ๋„๊ตฌ๋ฅผ ๊ณ ๋ฅด๋Š” ๋ผ์šฐํŒ… ์—์ด์ „ํŠธโ€๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•ด ๋ณด๊ณ , ์ •ํ™•๋„ ๊ฐœ์„ (baseline โ†’ contract)์„ ์ˆ˜์น˜๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

flowchart TD
  A[์‚ฌ์šฉ์ž ์š”์ฒญ] --> B{๋ผ์šฐํ„ฐ ๊ทœ์น™}
  B -->|๋ฌธ์„œ์กฐํšŒ| C[search_docs]
  B -->|์ˆ˜์‹/์˜ˆ์‚ฐ| D[calculate]
  B -->|๋‹ต์žฅ/๊ณต์ง€| E[draft_reply]
  C --> F[๊ฒฐ๊ณผ ๊ด€์ฐฐ]
  D --> F
  E --> F
  F --> G[์„ฑ๊ณตํŒ์ •: ์ •ํ™•๋„/์˜ค๋ฅ˜์œจ]
  G -->|๊ฐœ์„  ํ•„์š”| H[๋ผ์šฐํ„ฐ ๊ทœ์น™ ์ˆ˜์ •]
  H --> B

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

0) ์‹ค์Šต ๋ชฉํ‘œ

  • ๋„๊ตฌ 3๊ฐœ(search_docs, calculate, draft_reply)๋ฅผ ๊ฐ€์ง„ ๋ผ์šฐํŒ… ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  • ๋™์ผ ์ž…๋ ฅ์—์„œ baseline_accuracy์™€ contract_accuracy๋ฅผ ๋น„๊ตํ•œ๋‹ค.
  • ์„ฑ๊ณต ํŒ์ • ๊ธฐ์ค€(์žฌํ˜„ ๊ฐ€๋Šฅ)์„ ํ†ต๊ณผํ•œ๋‹ค.

1) ์‚ฌ์ „ ์ค€๋น„

  • ๋„๊ตฌ: Python 3.10+, ํ„ฐ๋ฏธ๋„, Git(์„ ํƒ)
  • ์ž…๋ ฅ:
    • day4_mini_project_agent.py
    • sample_tasks_day4.json
    • 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)) ํ™•์ธ
    • ์„ค์น˜ ์—๋Ÿฌ ์—†์ด ์ข…๋ฃŒ

2) ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ ๋ฐฐ์น˜ ํ‰๊ฐ€ ์‹คํ–‰

  • ๋„๊ตฌ: day4_mini_project_agent.py
  • ์ž…๋ ฅ: sample_tasks_day4.json (์š”์ฒญ 8๊ฐœ)
  • ์‹คํ–‰๋ช…๋ น:
python day4_mini_project_agent.py --mode eval --input sample_tasks_day4.json
  • ์„ฑ๊ณตํŒ์ •:
    • ์ถœ๋ ฅ JSON์— improved: true
    • contract_accuracy >= 0.75
    • pass: true

๊ธฐ์ค€ ์ƒ˜ํ”Œ ๊ฒฐ๊ณผ: baseline_accuracy=0.375, contract_accuracy=1.0

3) ๋‹จ์ผ ์š”์ฒญ ํ•ธ์ฆˆ์˜จ

  • ๋„๊ตฌ: day4_mini_project_agent.py
  • ์ž…๋ ฅ: ์ž„์˜ ์—…๋ฌด ์š”์ฒญ 1๊ฐœ
  • ์‹คํ–‰๋ช…๋ น:
python day4_mini_project_agent.py --mode single --request "์ด๋ฒˆ ๋‹ฌ ๋น„์šฉ 99000 + 12000 ๊ณ„์‚ฐํ•ด์ค˜"
  • ์„ฑ๊ณตํŒ์ •:
    • chosen_tool์ด ์š”์ฒญ ์œ ํ˜•๊ณผ ์ผ์น˜(์˜ˆ: ๊ณ„์‚ฐ ์š”์ฒญ์ด๋ฉด calculate)
    • ok: true

4) ๋ณธ์ธ ์—…๋ฌด ๋ฐ์ดํ„ฐ๋กœ ํ™•์žฅ

  • ๋„๊ตฌ: sample_tasks_day4.json, ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ
  • ์ž…๋ ฅ: ์‹ค์ œ ์—…๋ฌด ์š”์ฒญ 10๊ฐœ ์ด์ƒ(๋ฌธ์„œ์กฐํšŒ/๊ณ„์‚ฐ/๋‹ต์žฅ ํ˜ผํ•ฉ)
  • ์‹คํ–‰๋ช…๋ น:
python day4_mini_project_agent.py --mode eval --input sample_tasks_day4.json
  • ์„ฑ๊ณตํŒ์ •:
    • contract_accuracy๊ฐ€ ๊ธฐ์กด๋ณด๋‹ค ์ƒ์Šน ๋˜๋Š” ์œ ์ง€
    • ์˜ค๋ถ„๋ฅ˜ ์ผ€์ด์Šค ์›์ธ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Œ(ํ‚ค์›Œ๋“œ ๋ˆ„๋ฝ/๋ชจํ˜ธํ•œ ์š”์ฒญ ๋“ฑ)

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

์‚ฌ๋ก€ A) ๊ณ„์‚ฐ์š”์ฒญ์ด ๋ฌธ์„œ์กฐํšŒ๋กœ ์ž์ฃผ ๋น ์ง€๋˜ ํŒ€

์š”์ฒญ๋ฌธ์— โ€œ์ •์‚ฐโ€, โ€œ์›๊ฐ€โ€, โ€œํ•ฉ๊ณ„โ€ ๊ฐ™์€ ๋„๋ฉ”์ธ ํ‘œํ˜„์ด ๋งŽ์•„ ๊ธฐ์กด ํ‚ค์›Œ๋“œ ์…‹์œผ๋กœ๋Š” ๊ณ„์‚ฐ ์˜๋„๋ฅผ ๋†“์ณค๋‹ค. contract_router()์— ํ˜„์—… ์šฉ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„๋ฅผ ์กฐ์ •ํ•˜์ž ์ •ํ™•๋„๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๊ฐœ์„ ๋๋‹ค.

์‚ฌ๋ก€ B) ๋‹ต์žฅ ์ดˆ์•ˆ ํ’ˆ์งˆ์ด ๋“ค์ญ‰๋‚ ์ญ‰ํ•˜๋˜ ํŒ€

draft_reply ์ถœ๋ ฅ ํ˜•์‹์„ ์ž์œ  ํ…์ŠคํŠธ๋กœ ๋‘์–ด ํ›„์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์ด ๋ถˆ์•ˆ์ •ํ–ˆ๋‹ค. tone, main_point, next_action ํ•„๋“œ๋ฅผ ๊ณ ์ •ํ•œ ํ›„ ์žฌ์ž‘์—…๋ฅ ์ด ์ค„์—ˆ๋‹ค.

6) ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (์‹ค์Šต ์ค‘ ์ž์ฃผ ๋ง‰ํžˆ๋Š” 5๊ฐ€์ง€)

  1. ModuleNotFoundError ๋ฐœ์ƒ

    • ์›์ธ: ๊ฐ€์ƒํ™˜๊ฒฝ ๋ฏธํ™œ์„ฑ ๋˜๋Š” ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ˆ„๋ฝ
    • ํ•ด๊ฒฐ: source .venv/bin/activate ํ›„ pip install -r requirements.txt
  2. No such file or directory (์ด๋ชจ์ง€/๊ณต๋ฐฑ ๊ฒฝ๋กœ)

    • ์›์ธ: ๐Ÿค— HF-Agents-Course ๊ฒฝ๋กœ ๊ณต๋ฐฑ/์ด๋ชจ์ง€ ์ด์Šค์ผ€์ดํ”„ ๋ˆ„๋ฝ
    • ํ•ด๊ฒฐ: ๊ฒฝ๋กœ๋ฅผ ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ๊ฑฐ๋‚˜ ๐Ÿค—\ HF-Agents-Course ํ˜•ํƒœ๋กœ ์ด์Šค์ผ€์ดํ”„
  3. ์ž…๋ ฅ JSON์€ list ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค ์—๋Ÿฌ

    • ์›์ธ: sample_tasks_day4.json ๋ฃจํŠธ ๊ตฌ์กฐ๊ฐ€ ๊ฐ์ฒด({})๋กœ ๋ฐ”๋€œ
    • ํ•ด๊ฒฐ: ๋ฃจํŠธ๋Š” ๋ฐ˜๋“œ์‹œ ๋ฐฐ์—ด([]) ์œ ์ง€, ๊ฐ ํ•ญ๋ชฉ์— request, expected_tool ํฌํ•จ
  4. ๊ณ„์‚ฐ ์š”์ฒญ์ธ๋ฐ search_docs๋กœ ๋ผ์šฐํŒ…๋จ

    • ์›์ธ: ๋ผ์šฐํ„ฐ ํ‚ค์›Œ๋“œ ๊ทœ์น™์— ๋„๋ฉ”์ธ ํ‘œํ˜„ ๋ˆ„๋ฝ
    • ํ•ด๊ฒฐ: contract_router()์˜ calc_keywords์— ํ˜„์—… ํ‘œํ˜„(์ •์‚ฐ/์›๊ฐ€/์„ธ๊ธˆ ๋“ฑ) ์ถ”๊ฐ€
  5. ZeroDivisionError ๋˜๋Š” ์ˆ˜์‹ ํŒŒ์‹ฑ ์‹คํŒจ

    • ์›์ธ: ์ž˜๋ชป๋œ ์ˆ˜์‹ ์ž…๋ ฅ(์˜ˆ: 10/0, ๋ฌธ์ž ์„ž์ธ ์ˆ˜์‹)
    • ํ•ด๊ฒฐ: ์ž…๋ ฅ ์ „ ๊ฒ€์ฆ ๊ทœ์น™ ์ถ”๊ฐ€, ์‹คํŒจ ์‹œ ์žฌ์ž…๋ ฅ ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ ๋ฐ˜ํ™˜

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

๋ผ์šฐํŒ… ์—์ด์ „ํŠธ ํ’ˆ์งˆ์€ โ€œ๋ชจ๋ธ ์„ฑ๋Šฅโ€๋ณด๋‹ค โ€œ๊ทœ์น™ ํ’ˆ์งˆโ€์ด ๋จผ์ €๋‹ค.

  • ์š”์ฒญ ๋ถ„๋ฅ˜ ๊ธฐ์ค€์„ ๋ช…์‹œ(๋ฌธ์„œ/๊ณ„์‚ฐ/๋‹ต์žฅ)
  • ๋„๊ตฌ๋ณ„ ์„ฑ๊ณต ๊ธฐ์ค€์„ ์ˆซ์ž๋กœ ์ •์˜
  • ์‹คํŒจ๋ฅผ ์˜ˆ์™ธ๊ฐ€ ์•„๋‹Œ ์ •์ƒ ๋ถ„๊ธฐ๋กœ ์ฒ˜๋ฆฌ
  • baseline vs contract๋ฅผ ๋งค๋ฒˆ ๋น„๊ตํ•ด ๊ฐœ์„  ์—ฌ๋ถ€๋ฅผ ์ˆ˜์น˜ํ™”

20๋ถ„ ๋ณด๊ฐ• ๋ฃจํ‹ด

  • 5๋ถ„: ์˜ค๋ถ„๋ฅ˜ ์ƒ์œ„ 3๊ฐœ ์ผ€์ด์Šค ์ถ”์ถœ
  • 5๋ถ„: contract_router ํ‚ค์›Œ๋“œ/์šฐ์„ ์ˆœ์œ„ ๋ณด์ •
  • 5๋ถ„: sample_tasks_day4.json์— ์‹ค์ œ ์—…๋ฌด 3๊ฑด ์ถ”๊ฐ€
  • 5๋ถ„: --mode eval ์žฌ์‹คํ–‰ ํ›„ ์ ์ˆ˜/์‹คํŒจ์›์ธ ๊ธฐ๋ก

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

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

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

๋ณด๊ฐ• ์ถ”๊ฐ€: ๋‚œ์ด๋„ ๋ ˆ์ด๋ธ” ์šด์˜ ์˜ˆ์‹œ

๋ฐฐ์น˜ ํ‰๊ฐ€๋ฅผ ๋” ๋นจ๋ฆฌ ํ•ด์„ํ•˜๋ ค๋ฉด ์ƒ˜ํ”Œ ํƒœ์Šคํฌ์— ๋‚œ์ด๋„ ๋ ˆ์ด๋ธ”์„ ๋„ฃ๋Š” ๊ฒŒ ํšจ๊ณผ์ ์ด๋‹ค.

์˜ˆ์‹œ(sample_tasks_day4.json):

[
  {"request":"์ด๋ฒˆ ๋‹ฌ ๋น„์šฉ 99000+12000 ๊ณ„์‚ฐ", "expected_tool":"calculate", "difficulty":"easy"},
  {"request":"ํ™˜๋ถˆ ๊ทœ์ • ๋ฌธ์„œ ์ฐพ์•„ ์š”์•ฝ", "expected_tool":"search_docs", "difficulty":"medium"},
  {"request":"๊ฒฐ์ œ ์˜ค๋ฅ˜ ์•ˆ๋‚ด ๋ฉ”์ผ ์ดˆ์•ˆ + ํ†ค ์™„ํ™”", "expected_tool":"draft_reply", "difficulty":"hard"}
]

ํ•ด์„ ํ…œํ”Œ๋ฆฟ:

  • easy ์ •ํ™•๋„ โ‰ฅ 0.9
  • medium ์ •ํ™•๋„ โ‰ฅ 0.8
  • hard ์ •ํ™•๋„ โ‰ฅ 0.7

์ด๋ ‡๊ฒŒ ๋ณด๋ฉด ์ „์ฒด ์ ์ˆ˜๋Š” ๋น„์Šทํ•ด๋„, ์‹ค์ œ ๋ณ‘๋ชฉ ๊ตฌ๊ฐ„(๋ณดํ†ต/์–ด๋ ค์›€)์„ ๋” ๋นจ๋ฆฌ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

ํ’ˆ์งˆ ์ ๊ฒ€ํ‘œ (2026-02-28)

  • ์žฌํ˜„์„ฑ: 9.0/10
  • ๊ณต์‹ ๊ทผ๊ฑฐ ์—ฐ๊ฒฐ: 9.0/10
  • ์šด์˜ ์ ์šฉ์„ฑ: 9.0/10
  • ๋ฌธ์„œ ๊ฐ€๋…์„ฑ: 8.5/10

์ฆ‰์‹œ ๋ณด๊ฐ• ํฌ์ธํŠธ 1๊ฐœ

  • ๋‚œ์ด๋„๋ณ„ ์˜ค๋ถ„๋ฅ˜ Top3๋ฅผ ์ž๋™ ์ถœ๋ ฅํ•˜๋Š” ์š”์•ฝ ์Šคํฌ๋ฆฝํŠธ(๋˜๋Š” ํ‘œ ํ…œํ”Œ๋ฆฟ)๋ฅผ ์ถ”๊ฐ€ํ•ด ํšŒ๊ณ  ์‹œ๊ฐ„์„ ๋” ์ค„์ธ๋‹ค.

์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๊ณ ์ง€

์ด ๋ฌธ์„œ๋Š” ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ ์ž‘์„ฑ ๋ฐ ๊ตฌ์กฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ, ์ตœ์ข… ๊ณต๊ฐœ ์ „ ์‚ฌ๋žŒ์ด ๊ฒ€ํ† ยท๋ณด์ •ํ•œ๋‹ค.