์ด๋ฒ ์ค์ตํธ์ 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
๊ณต์ ๊ทผ๊ฑฐ ๋ฐ๋ก๋ณด๊ธฐ
- Agents Course(์ปค๋ฆฌํ๋ผ): https://huggingface.co/learn/agents-course
- Course ์ ์ฅ์(์ค์ต ์ฝ๋): https://github.com/huggingface/agents-course
- smolagents ๋ฌธ์(Agent/Tool ์ฌ์ฉ๋ฒ): https://huggingface.co/docs/smolagents
0) ์ค์ต ๋ชฉํ
- ๋๊ตฌ 3๊ฐ(
search_docs,calculate,draft_reply)๋ฅผ ๊ฐ์ง ๋ผ์ฐํ ์์ด์ ํธ๋ฅผ ์คํํ๋ค. - ๋์ผ ์
๋ ฅ์์
baseline_accuracy์contract_accuracy๋ฅผ ๋น๊ตํ๋ค. - ์ฑ๊ณต ํ์ ๊ธฐ์ค(์ฌํ ๊ฐ๋ฅ)์ ํต๊ณผํ๋ค.
1) ์ฌ์ ์ค๋น
- ๋๊ตฌ: Python 3.10+, ํฐ๋ฏธ๋, Git(์ ํ)
- ์
๋ ฅ:
day4_mini_project_agent.pysample_tasks_day4.jsonrequirements.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.75pass: true
- ์ถ๋ ฅ JSON์
๊ธฐ์ค ์ํ ๊ฒฐ๊ณผ:
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๊ฐ์ง)
-
ModuleNotFoundError๋ฐ์- ์์ธ: ๊ฐ์ํ๊ฒฝ ๋ฏธํ์ฑ ๋๋ ํจํค์ง ์ค์น ๋๋ฝ
- ํด๊ฒฐ:
source .venv/bin/activateํpip install -r requirements.txt
-
No such file or directory(์ด๋ชจ์ง/๊ณต๋ฐฑ ๊ฒฝ๋ก)- ์์ธ:
๐ค HF-Agents-Course๊ฒฝ๋ก ๊ณต๋ฐฑ/์ด๋ชจ์ง ์ด์ค์ผ์ดํ ๋๋ฝ - ํด๊ฒฐ: ๊ฒฝ๋ก๋ฅผ ๋ฐ์ดํ๋ก ๊ฐ์ธ๊ฑฐ๋
๐ค\ HF-Agents-Courseํํ๋ก ์ด์ค์ผ์ดํ
- ์์ธ:
-
์ ๋ ฅ JSON์ list ํ์์ด์ด์ผ ํฉ๋๋ค์๋ฌ- ์์ธ:
sample_tasks_day4.json๋ฃจํธ ๊ตฌ์กฐ๊ฐ ๊ฐ์ฒด({})๋ก ๋ฐ๋ - ํด๊ฒฐ: ๋ฃจํธ๋ ๋ฐ๋์ ๋ฐฐ์ด(
[]) ์ ์ง, ๊ฐ ํญ๋ชฉ์request,expected_toolํฌํจ
- ์์ธ:
-
๊ณ์ฐ ์์ฒญ์ธ๋ฐ
search_docs๋ก ๋ผ์ฐํ ๋จ- ์์ธ: ๋ผ์ฐํฐ ํค์๋ ๊ท์น์ ๋๋ฉ์ธ ํํ ๋๋ฝ
- ํด๊ฒฐ:
contract_router()์calc_keywords์ ํ์ ํํ(์ ์ฐ/์๊ฐ/์ธ๊ธ ๋ฑ) ์ถ๊ฐ
-
ZeroDivisionError๋๋ ์์ ํ์ฑ ์คํจ- ์์ธ: ์๋ชป๋ ์์ ์
๋ ฅ(์:
10/0, ๋ฌธ์ ์์ธ ์์) - ํด๊ฒฐ: ์ ๋ ฅ ์ ๊ฒ์ฆ ๊ท์น ์ถ๊ฐ, ์คํจ ์ ์ฌ์ ๋ ฅ ์๋ด ๋ฉ์์ง ๋ฐํ
- ์์ธ: ์๋ชป๋ ์์ ์
๋ ฅ(์:
์น ํ ์นํธ์ํธ
๋ผ์ฐํ ์์ด์ ํธ ํ์ง์ โ๋ชจ๋ธ ์ฑ๋ฅโ๋ณด๋ค โ๊ท์น ํ์งโ์ด ๋จผ์ ๋ค.
- ์์ฒญ ๋ถ๋ฅ ๊ธฐ์ค์ ๋ช ์(๋ฌธ์/๊ณ์ฐ/๋ต์ฅ)
- ๋๊ตฌ๋ณ ์ฑ๊ณต ๊ธฐ์ค์ ์ซ์๋ก ์ ์
- ์คํจ๋ฅผ ์์ธ๊ฐ ์๋ ์ ์ ๋ถ๊ธฐ๋ก ์ฒ๋ฆฌ
baseline vs contract๋ฅผ ๋งค๋ฒ ๋น๊ตํด ๊ฐ์ ์ฌ๋ถ๋ฅผ ์์นํ
20๋ถ ๋ณด๊ฐ ๋ฃจํด
- 5๋ถ: ์ค๋ถ๋ฅ ์์ 3๊ฐ ์ผ์ด์ค ์ถ์ถ
- 5๋ถ:
contract_routerํค์๋/์ฐ์ ์์ ๋ณด์ - 5๋ถ:
sample_tasks_day4.json์ ์ค์ ์ ๋ฌด 3๊ฑด ์ถ๊ฐ - 5๋ถ:
--mode eval์ฌ์คํ ํ ์ ์/์คํจ์์ธ ๊ธฐ๋ก
์ค์ต ํ์ผ ๋ค์ด๋ก๋
- Day4 ์ค์ต ๊ฐ์ด๋ README
- day4_mini_project_agent.py
- sample_tasks_day4.json
- hf-agents-day4-mini-project.zip
์ฐธ๊ณ ๋งํฌ (์ฐ์ ์์)
- https://github.com/huggingface/agents-course
- https://huggingface.co/learn/agents-course
- 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๋ฅผ ํ์ฉํด ์ด์ ์์ฑ ๋ฐ ๊ตฌ์กฐํ๋ฅผ ์ํํ์ผ๋ฉฐ, ์ต์ข ๊ณต๊ฐ ์ ์ฌ๋์ด ๊ฒํ ยท๋ณด์ ํ๋ค.