ํ ์ค๋ก ๋งํ๋ฉด, ์์ด์ ํธ ์ค์ผ์คํธ๋ ์ด์
์ ์คํ ์ฃผ๊ธฐ + ์ํ ๊ณต์ + ์ค๋ฅ ๋ณต๊ตฌ๋ง ์ค๊ณํ๋ฉด ์ฌ๋ฌ ์์ด์ ํธ๊ฐ ์๋์ผ๋ก ํ์
ํ๋ค. ์ด๋ฒ ๋ณธํธ 13์ โ๊ฐ๋ณ ์์ด์ ํธโ๋ฅผ ๋์ด โํ์ ๋ฆฌ๋โ๊ฐ ๋๋ ๋ฒ์ ๋ค๋ฃฌ๋ค.
ํ ์ค ๊ฒฐ๋ก
ManagedAgent๋ก ์ฃผ๊ธฐ๋ณ ๊ณํ์ ๋ง๋ค๊ณ , ToolCollection์ผ๋ก ๋๊ตฌ๋ฅผ ๊ณต์ ํ๋ฉด, ์คํจ ๊ฐ์ง ์ ์๋์ผ๋ก ๋ณต๊ตฌํ๋ ์์ ์ ์ธ ์์ด์ ํธ ํ์ 30๋ถ์ ๊ตฌ์ถํ ์ ์๋ค.
๋งฅ๋ฝ ๋ณด์
Hugging Face Agents Course์์ ํต์ฌ์ ํญ์ ๊ฐ๋ค.
- ๋จ์ผ ์์ด์ ํธ๋ ๋๊ตฌ ํธ์ถ๋ก ๋๋์ง ์๋๋ค.
- ์ฌ๋ฌ ์์ด์ ํธ ๊ฐ์ ์ํ ๋๊ธฐํ์ ์คํจ ๋ณต๊ตฌ๊ฐ ์์ด์ผ ์ค๋ฌด์ ์ธ ์ ์๋ค.
- smolagents์
ManagedAgent๋ ์ด ํ๋ฆ์ ์ ์ธํ์ผ๋ก ๊ตฌ์ฑํ๊ธฐ ์ข๋ค.
์ด๋ฒ ๊ธ์ ๊ณ ๊ธ ์์ด์ ํธ ์ค๊ณ ์ ํ์ฉ์ผ๋ก, โ์์จ์ ์ธ ํ์ํฌโ๋ฅผ ์์ ์ตํ๋ ๋ชฉ์ ์ด๋ค.
๊ณต์ ๊ทผ๊ฑฐ ๋ฐ๋ก๋ณด๊ธฐ
- Agents Course(์ปค๋ฆฌํ๋ผ): https://huggingface.co/learn/agents-course
- Course ์ ์ฅ์(์ค์ต/๊ณผ์ ): https://github.com/huggingface/agents-course
- smolagents ๋ฌธ์(Agent/ToolCollection): https://huggingface.co/docs/smolagents
ํต์ฌ ์์ฝ (MECE)
1) ๊ฐ๋
- ManagedAgent: ์ฌ๋ฌ ์์ด์ ํธ๋ฅผ ์ค์ผ์คํธ๋ ์ด์ ํ๋ ์ค์ ๊ด๋ฆฌ์
- ToolCollection: ์ฌ๋ฌ ์์ด์ ํธ๊ฐ ๊ณต์ ํ๋ ๋๊ตฌ ์งํฉ
- Execution Cycle: ๊ณํ โ ์คํ โ ๊ฒ์ฆ โ ์์ ์ ๋ฐ๋ณต ๋ฃจํ
- State Sharing: ์์ด์ ํธ ๊ฐ์ ์ํ ์ ๋ณด ๊ณต์ ๋ฉ์ปค๋์ฆ
2) ์์ธ
์์ด์ ํธ ํ์ด ๋งํ๋ ์ด์ ๋ ๋ณดํต 3๊ฐ์ง๋ค.
- ๊ฐ ์์ด์ ํธ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํด ์ํ๊ฐ ๋๊ธฐํ๋์ง ์์
- ์คํจ ์ ๋ณต๊ตฌ ๋ก์ง์ด ์์ด ์ค๋จ๋๊ณ ํ์ธ ๋ถ๊ฐ๋ฅํจ
- ๋๊ตฌ ํธ์ถ์ด ์ค๋ณต๋์ด ์ฑ๋ฅ์ด ์ ํ๋จ
3) ๋์
ManagedAgentโ ์ค์ ๊ณํ ์์ฑ ๋ฐ ํ ๋นToolCollectionโ ๋๊ตฌ ์ค๋ณต ํธ์ถ ์ ๊ฑฐStateโ ์คํ ์ํ ๊ณต์ ๋ฐ ๋๊ธฐํError Recoveryโ ์คํจ ๊ฐ์ง์ ์๋ ๋ณต๊ตฌ
4) ์คํ
์ด๋ฒ ๋ฌธ์์ day13_agent_orchestration.py๋ฅผ ๊ทธ๋๋ก ์คํํ๋ฉด,
- ์์ด์ ํธ ํ ๊ตฌ์ถ
- ์ฃผ๊ธฐ๋ณ ์คํ ์ ์ด
- ์ํ ๊ณต์ ๋ฐ ์คํจ ๋ณต๊ตฌ ๊น์ง ํ ๋ฒ์ ๋๋ผ ์ ์๋ค.
flowchart TB A[์ฌ์ฉ์ ์์ฒญ] --> B[ManagedAgent] B --> C{๊ณํ ์์ฑ} C --> D[ToolCollection ๋๊ตฌ ํ ๋น] D --> E[Agent1 ์คํ] E --> F{์ฑ๊ณต?} F -->|Yes| G[์ํ ์ ์ฅ] F -->|No| H[๋ณต๊ตฌ ์๋] H --> I{๋ณต๊ตฌ ์ฑ๊ณต?} I -->|Yes| G I -->|No| J[์๋ฌ ๋ก๊น ] G --> K[๋ค์ ์์ด์ ํธ] K --> L[์ต์ข ๊ฒฐ๊ณผ]
์ฉ์ด/๋น์ ์ค๋ช
- ManagedAgent: ํ๋ก์ ํธ ๋งค๋์
- ToolCollection: ๊ณต์ฉ ๋๊ตฌํจ
- Execution Cycle: ์ฃผ๊ฐ ์คํ๋ฆฐํธ
- State: ์งํ ์ํ์ํ
- Error Recovery: ๋ฒ๊ทธ ํจ์น ์๋ํ
์ฆ, ํ๋ก์ ํธ ๋งค๋์ (ManagedAgent)๊ฐ ์ฃผ๊ฐ ์คํ๋ฆฐํธ(Execution Cycle)๋ฅผ ๊ณํํ๊ณ , ํ์๋ค์๊ฒ ๊ณต์ฉ ๋๊ตฌํจ(ToolCollection)์ ์ ๊ณตํ๋ฉฐ, ์งํ ์ํ์ํ(State)์ ๊ณต์ ํ๊ณ , ๋ฒ๊ทธ ๋ฐ์ ์ ์๋์ผ๋ก ํจ์น(Error Recovery)ํ๋ ํ๋ฆ์ด๋ค.
์ค์ต: 30๋ถ ์ฌํ (๋๊ตฌ/์ ๋ ฅ/์คํ๋ช ๋ น/์ฑ๊ณตํ์ )
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) ๋๊ตฌ ์ ํ์ฒดํฌ (๊ธฐ๋ฅ ๋ชจ๋ ํ ์คํธ)
- ๋๊ตฌ:
day13_agent_orchestration.py - ์ ๋ ฅ: ๋ด์ฅ ํ ์คํธ ์ผ์ด์ค(๋๊ตฌ ํธ์ถ ํ ์คํธ)
- ์คํ๋ช ๋ น:
python day13_agent_orchestration.py --mode selfcheck- ์ฑ๊ณตํ์ : ์ถ๋ ฅ JSON์
"tools_ok": true,"orchestration_ok": true
Step 3) ๋จ์ผ ์ค์ผ์คํธ๋ ์ด์ ์คํ
- ๋๊ตฌ:
day13_agent_orchestration.py - ์ ๋ ฅ: ๋จ์ผ ๋ณตํฉ ์ ๋ฌด ์์ฒญ
- ์คํ๋ช ๋ น:
# .env์ OPENAI_API_KEY ๋๋ HF_TOKEN ํ์
python day13_agent_orchestration.py \
--mode single \
--provider auto \
--task "์ต๊ทผ AI ๊ธฐ์ ๋ํฅ์ ์กฐ์ฌํ๊ณ ๊ฐ ๊ธฐ์ ์ ์ฅ๋จ์ ์ ๋น๊ตํ ๋ณด๊ณ ์ ์์ฑ"- ์ฑ๊ณตํ์ : ๊ฒฐ๊ณผ์ ๋ณด๊ณ ์ ๊ตฌ์กฐ ํฌํจ, ๊ฐ ์์ด์ ํธ ์คํ ๋ก๊ทธ ํ์ธ ๊ฐ๋ฅ
Step 4) ๋ฐฐ์น ํ๊ฐ (์์ ์ฑ ํ ์คํธ)
- ๋๊ตฌ:
day13_agent_orchestration.py,sample_tasks_day13.json - ์ ๋ ฅ: ๋ณตํฉ ์์ฒญ 3๊ฐ(์ฌ๋ฌ ์์ด์ ํธ ํ์ ํ์)
- ์คํ๋ช ๋ น:
python day13_agent_orchestration.py \
--mode eval \
--provider auto \
--input sample_tasks_day13.json- ์ฑ๊ณตํ์ :
"pass": true๋๋"score" >= 0.66
์น ํ ํ์ํ ์นํธ์ํธ
์์ด์ ํธ ์ค์ผ์คํธ๋ ์ด์ ์ฑ๊ณต ๊ณต์
ManagedAgent๋ก ๋ฉ์ธ ๊ณํ ์์ฑToolCollection์ผ๋ก ๋๊ตฌ ๊ณต์State๋ก ์คํ ์ํ ๋๊ธฐํ- Error Recovery ๋ก์ง ์ถ๊ฐ
- ๋ฐฐ์น ํ ์คํธ๋ก ์์ ์ฑ ๊ฒ์ฆ
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
- CS ์๋ํ: 1์ฐจ ์๋ต โ 2์ฐจ ํ์ธ โ 3์ฐจ ๋ณด๊ณ ์ ์๋ํ ํ๋ฆ ๊ตฌ์ถ
- ์ฝํ ์ธ ์์ฑ: ๋ฆฌ์์น โ ์์ฝ โ ๋ฒ์ญ โ ๊ฒํ ์ ํ ์๋ํ
- ์ด์ ๋ชจ๋ํฐ๋ง: ์ํ ๊ณต์ ๋ฅผ ํตํด ๊ฐ ์์ด์ ํธ์ ์งํ ์ํฉ ์ค์๊ฐ ํ์ธ
ํ์ฅํ ๋ฏธ๋ ์ฌ๋ก
์ฌ๋ก A) ์์ด์ ํธ ๊ฐ ์ํ ๋ถ์ผ์น๋ก ๋ฐ์ดํฐ ์์ค
๊ฐ ์์ด์ ํธ๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค ๋ณด๋ ๋ง์ง๋ง ๊ฒฐ๊ณผ๋ฌผ์ ๋ถ์ ํํ ์ ๋ณด๊ฐ ํฌํจ๋๋ค. SharedState๋ฅผ ๋์
ํ๊ณ ๊ฐ ์์ด์ ํธ๊ฐ ์ํ๋ฅผ ํ์ธํ๋๋ก ์์ ํ์ ๋ฐ์ดํฐ ์ ํ๋๊ฐ 95%๋ก ๊ฐ์ ๋๋ค.
์ฌ๋ก B) ์ค๋ณต ๋๊ตฌ ํธ์ถ๋ก ์ฑ๋ฅ ์ ํ
์ฌ๋ฌ ์์ด์ ํธ๊ฐ ๋์ผํ API๋ฅผ ํธ์ถํ๋ค ๋ณด์ ์์ฒญ ํ๋์ ๋๋ฌํด ์๋น์ค ์ค๋จ์ด ๋ฐ์ํ๋ค. ToolCollection์ ๋์
ํ๊ณ ๋๊ตฌ ํธ์ถ์ ์ค์์์ ๊ด๋ฆฌํ์ ์๋ต ์๊ฐ์ด 70% ๊ฐ์ ๋๋ค.
์ฌ๋ก C) ์คํจ ์ ๋ณต๊ตฌ ๋ก์ง ๋ถ์ฌ
๋คํธ์ํฌ ์ค๋ฅ ๋ฐ์ ์ ์์ด์ ํธ๊ฐ ๋ชจ๋ ์ค๋จ๋๋ค. RetryAgent์ FallbackAgent๋ฅผ ์ถ๊ฐํ๊ณ , ์คํจ ์ ์๋์ผ๋ก ๋์ฒด ์์ด์ ํธ๊ฐ ์๋ํ๋๋ก ์ค๊ณํ๋๋ผ์ด์ ์์ ์ฑ์ด ํฌ๊ฒ ๊ฐ์ ๋๋ค.
์ ์ฉ ์ฒดํฌ๋ฆฌ์คํธ
- ๊ฐ์ํ๊ฒฝ + ํจํค์ง ์ค์น ์๋ฃ
-
selfcheck์ฑ๊ณต(tools_ok=true,orchestration_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
์ค์ต ํ์ผ ๋ค์ด๋ก๋
- Day13 ์ค์ต ๊ฐ์ด๋ README
- day13_agent_orchestration.py
- sample_tasks_day13.json
- hf-agents-day13-orchestration.zip
๋ณด๊ฐ ์ถ๊ฐ: single / eval ์ถ๋ ฅ ์์
์ด๋ณด์ ํผ์ ์ ์ค์ด๊ธฐ ์ํด ์ ์ ์ถ๋ ฅ ์์๋ฅผ ๊ณ ์ ํ๋ค.
single ์ ์ ์์
{
"mode": "single",
"task": "AI ๊ธฐ์ ๋ํฅ ์กฐ์ฌ",
"result": {
"research_agent": "์กฐ์ฌ ์๋ฃ",
"analysis_agent": "๋ถ์ ์๋ฃ",
"report_agent": "๋ณด๊ณ ์ ์์ฑ ์๋ฃ"
},
"ok": true,
"state": {
"current_phase": "completed",
"agents_used": ["research", "analysis", "report"]
}
}eval ์ ์ ์์
{
"mode": "eval",
"total": 3,
"correct": 2,
"score": 0.67,
"pass": true,
"failures": [
{
"task_id": 2,
"error": "network_timeout",
"recovered": true
}
]
}๋น์ ์ ์์(์ํ ๋๊ธฐํ ์คํจ)
{
"mode": "single",
"ok": false,
"error": "state_sync_failed",
"details": "Agent1๊ณผ Agent2์ ์ํ ๋ถ์ผ์น ๊ฐ์ง"
}ํ์ง ์ ๊ฒํ (2026-04-07)
- ์ฌํ์ฑ: 8.5/10
- ๊ณต์ ๊ทผ๊ฑฐ ์ฐ๊ฒฐ: 9.0/10
- ์ด์ ์ ์ฉ์ฑ: 9.0/10
- ๋ฌธ์ ๊ฐ๋ ์ฑ: 8.5/10
์ฆ์ ๋ณด๊ฐ ํฌ์ธํธ 1๊ฐ
- ToolCollection์ ๋์ฐ ์ฐ์ ์์ ์ค์ ์์๋ฅผ ์ถ๊ฐํด ์ค๋ฌด์์ ์์ฃผ ๋ฐ์ํ๋ ์ถฉ๋ ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃฌ๋ค.
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์ ์์ฑ ๋ฐ ๊ตฌ์กฐํ๋ฅผ ์ํํ์ผ๋ฉฐ, ์ต์ข ๊ณต๊ฐ ์ ์ฌ๋์ด ๊ฒํ ยท๋ณด์ ํ๋ค.