์ด๋ฒ ํธ์ smolagents ๊ธฐ๋ฐ ๋ฉํฐํด ๋ฆฌ์์น ์ด์์คํดํธ๋ฅผ ๋ง๋๋ ์ค์ต์ด๋ค.
ํต์ฌ์ โ์ง์ โ ๋ก์ปฌ ์ง์ ๊ฒ์ โ ์ฒดํฌ๋ฆฌ์คํธ ์์ฑ โ FINAL: ๊ณ์ฝ ์ถ๋ ฅโ ํ๋ฆ์ ๊ณ ์ ํด, ํ ์๋ํ์ ๋ฐ๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ ํํ๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค.
- ์ด์ ํธ: ๐ค 12. ๋ณธํธ 06
ํ ์ค ๊ฒฐ๋ก
๋๊ตฌ ์ถ๋ ฅ ๊ณ์ฝ(FINAL:)์ ๋จผ์ ๊ณ ์ ํ๊ณ , ์จ๋ผ์ธ(smolagents)ยท์คํ๋ผ์ธ(fallback) ์คํ ๊ฒฝ๋ก๋ฅผ ํจ๊ป ๋๋ฉด ์ค์ต ์ฌํ์ฑ๊ณผ ์ด์ ์์ ์ฑ์ ๋์์ ํ๋ณดํ ์ ์๋ค.
flowchart LR A[์ฌ์ฉ์ ์ง์] --> B[search_docs ํด] B --> C[build_checklist ํด] C --> D[CodeAgent ์ถ๋ก ] D --> E[FINAL ๊ณ์ฝ ๋ฌธ์์ด] E --> F[single/eval ํ์] F --> G[PASS/FAIL ํ์ ]
์ค์ต ๋ชฉํ
- smolagents
CodeAgent์ ์ปค์คํ ๋๊ตฌ 2๊ฐ๋ฅผ ์ฐ๊ฒฐํ๋ค. - ์ถ๋ ฅ ํฌ๋งท์
FINAL: summary=... | checklist=... | verdict=...๋ก ๊ณ ์ ํ๋ค. selfcheck โ single โ eval์์๋ก ์ฌํ ๊ฐ๋ฅํ ๊ฒ์ฆ ๋ฃจํ๋ฅผ ๋ง๋ ๋ค.
์ค์ต ํ์ผ
1) ํ๊ฒฝ ์ค๋น
- ๋๊ตฌ: Python 3.10+, ํฐ๋ฏธ๋, ๊ฐ์ํ๊ฒฝ
- ์
๋ ฅ:
requirements.txt(+ ์จ๋ผ์ธ ๋ชจ๋๋ฉด API ํค) - ์คํ๋ช ๋ น:
cd "/home/tw2/Documents/n8n/data/shared/syn/8.quartz/Agent/๐ค HF-Agents-Course/downloads"
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt- ์ฑ๊ณตํ์ :
(.venv)ํ๋กฌํํธ๊ฐ ๋ณด์ธ๋ค.- ์ค์น๊ฐ ์๋ฌ ์์ด ๋๋๋ค.
2) ์ ํ์ฒดํฌ ์คํ (๋๊ตฌ ๋จ์ ๊ฒ์ฆ)
- ๋๊ตฌ:
day13_multitool_research_handson.py - ์
๋ ฅ: ๋ด์ฅ ํ
์คํธ ์ง์(
smolagents tool calling ํ๊ฐ) - ์คํ๋ช ๋ น:
python3 day13_multitool_research_handson.py --mode selfcheck- ์ฑ๊ณตํ์ :
- ์ถ๋ ฅ JSON์
"selfcheck_ok": true
- ์ถ๋ ฅ JSON์
3) ๋จ์ผ ์คํ (์คํ๋ผ์ธ ์ฌํ ๊ฒฝ๋ก)
- ๋๊ตฌ:
day13_multitool_research_handson.py - ์ ๋ ฅ: ์ง์ 1๊ฐ
- ์คํ๋ช ๋ น:
python3 day13_multitool_research_handson.py \
--mode single \
--offline \
--query "HF Agents Course์์ tool calling ํ์ต ํฌ์ธํธ ์ ๋ฆฌ"- ์ฑ๊ณตํ์ :
verdict๊ฐREADY๋๋NEEDS_REVIEWsummary,checklistํ๋๊ฐ ๋น์ด ์์ง ์๋ค.
4) ๋จ์ผ ์คํ (์จ๋ผ์ธ smolagents ๊ฒฝ๋ก)
- ๋๊ตฌ:
day13_multitool_research_handson.py,smolagents, LLM API ํค - ์
๋ ฅ:
OPENAI_API_KEY(์์)- ๋ชจ๋ธ:
openai/gpt-4o-mini(๊ธฐ๋ณธ)
- ์คํ๋ช ๋ น:
export OPENAI_API_KEY="<your-key>"
python3 day13_multitool_research_handson.py \
--mode single \
--model openai/gpt-4o-mini \
--query "smolagents์์ CodeAgent์ ToolCallingAgent ์ฐจ์ด๋ฅผ ์์ฝํด์ค"- ์ฑ๊ณตํ์ :
- ๊ฒฐ๊ณผ JSON์
summary/checklist/verdict๊ฐ ํ์ฑ๋๋ค. verdict๊ฐREADY๋๋NEEDS_REVIEW์ด๋ค.
- ๊ฒฐ๊ณผ JSON์
5) ๋ฐฐ์น ํ๊ฐ (์ฌํ์ฑ ์ ๊ฒ)
- ๋๊ตฌ:
sample_tasks_day13.json - ์ ๋ ฅ: ์ํ ํ์คํฌ 3๊ฐ
- ์คํ๋ช ๋ น:
# ์คํ๋ผ์ธ ํ๊ฐ
python3 day13_multitool_research_handson.py --mode eval --offline --input sample_tasks_day13.json
# ์จ๋ผ์ธ ํ๊ฐ
python3 day13_multitool_research_handson.py --mode eval --input sample_tasks_day13.json- ์ฑ๊ณตํ์ :
pass = true๋๋score >= 0.66
์ฝ๋์์ ๊ผญ ๋ณผ ํฌ์ธํธ
search_course_docs()- ์ง์ ๊ธฐ๋ฐ ๋ฌธ์ ์ค๋ํซ ๊ฒ์(๋ก์ปฌ ์ง์๋ฒ ์ด์ค)
make_checklist()- ์์ฝ ๊ฒฐ๊ณผ๋ฅผ ์คํ ๊ฐ๋ฅํ ์ ๊ฒ ํญ๋ชฉ์ผ๋ก ๋ณํ
parse_final_block()FINAL:๊ณ์ฝ ๋ฌธ์์ด์ ๊ตฌ์กฐํ JSON์ผ๋ก ํ์ฑ
offline_agent()/online_agent()- ์ด์ ์ฅ์ ๋๋น ์ด์ค ์คํ ๊ฒฝ๋ก
ํธ๋ฌ๋ธ์ํ (์์ฃผ ๋งํ๋ 5๊ฐ์ง)
-
ModuleNotFoundError: smolagents- ์์ธ: ๊ฐ์ํ๊ฒฝ ๋ฏธํ์ฑํ ๋๋ ์์กด์ฑ ๋ฏธ์ค์น
- ํด๊ฒฐ:
source .venv/bin/activateํpip install -r requirements.txt
-
OPENAI_API_KEY๋๋ฝ์ผ๋ก ์จ๋ผ์ธ ์คํ ์คํจ- ์์ธ: LiteLLMModel ์ธ์ฆ ์ ๋ณด ๋ฏธ์ค์
- ํด๊ฒฐ:
export OPENAI_API_KEY="..."ํ ์ฌ์คํ (ํน์--offline์ผ๋ก ๋จผ์ ๊ฒ์ฆ)
-
input JSON root must be list- ์์ธ:
sample_tasks_day13.json๋ฃจํธ๋ฅผ ๊ฐ์ฒด{}๋ก ์ ์ฅ - ํด๊ฒฐ: ๋ฃจํธ๋ฅผ ๋ฐฐ์ด
[]ํ์์ผ๋ก ์ ์ง
- ์์ธ:
-
FINAL:ํ์ฑ ์คํจ (verdict=PARSE_ERROR)- ์์ธ: ๋ชจ๋ธ ์ถ๋ ฅ์ด ๊ณ์ฝ ํฌ๋งท์ ๋ฒ์ด๋จ
- ํด๊ฒฐ: ํ๋กฌํํธ์ ์ถ๋ ฅ ํ์์ ๋ ์๊ฒฉํ ๊ณ ์ ํ๊ณ , ํ์ ์ ์ฌ์๋ ๋ก์ง ์ถ๊ฐ
-
ํ๊ธ/์ด๋ชจ์ง ๊ฒฝ๋ก์์ ํ์ผ ์ฐพ๊ธฐ ์คํจ
- ์์ธ: ๊ฒฝ๋ก ์ธ์ฉ ๋๋ฝ
- ํด๊ฒฐ: ๊ฒฝ๋ก ์ ์ฒด๋ฅผ ํฐ๋ฐ์ดํ๋ก ๊ฐ์ธ ์คํ
์ฒดํฌ๋ฆฌ์คํธ
-
selfcheck_ok=trueํ์ธ -
single --offline๊ฒฐ๊ณผ์์summary/checklist/verdictํ์ธ -
single(์จ๋ผ์ธ)์์ ๋์ผ ๊ณ์ฝ ํ์ฑ ํ์ธ -
eval๊ฒฐ๊ณผscore๊ธฐ๋ก - ํ ๊ธฐ์ค์ผ๋ก
required_keyword1๊ฐ ์ด์ ์ปค์คํฐ๋ง์ด์ฆ
์ฐธ๊ณ ๋งํฌ (์ฐ์ ์์)
- https://github.com/huggingface/agents-course
- https://huggingface.co/learn/agents-course
- https://huggingface.co/docs/smolagents
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์ ์์ฑยท๊ตฌ์กฐํยท์์ ์ฝ๋ ์ ๋ฆฌ๋ฅผ ์ํํ์ผ๋ฉฐ, ์ต์ข ๋ฐํ ์ ์ฌ๋์ด ์ฌํ ์ ์ฐจ์ ๋งํฌ๋ฅผ ์ ๊ฒํ๋ค.