๐ค 35. HF Agents Course ๋ณธํธ 21 - smolagents ๋ฉ๋ชจ๋ฆฌ๋ก ์ฅ๊ธฐ ์์ ์ปจํ ์คํธ ์ ์งํ๊ธฐ
์ด๋ฒ ํธ์์๋ smolagents ์์ด์ ํธ๊ฐ ์ด์ ์คํ ๋งฅ๋ฝ์ ๊ธฐ์ตํด ๋ค์ ์์ ์ ํ๋๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
ํต์ฌ ์ฐธ๊ณ :
- https://github.com/huggingface/agents-course
- https://huggingface.co/learn/agents-course
- https://huggingface.co/docs/smolagents
1) ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๊ฐ
์ด๋ณด์๊ฐ ๊ฐ์ฅ ์์ฃผ ๊ฒช๋ ๋ฌธ์ ๋ ๋ค์์ ๋๋ค.
- ๊ฐ์ ์ง์๋ฅผ ๋งค๋ฒ ๋ค์ ์ค๋ช ํด์ผ ํจ
- ์ด์ ์ถ๋ ฅ ํ์(JSON/ํ)์ ๋ค์ ์คํ์์ ์์ด๋ฒ๋ฆผ
- ์ฅ๊ธฐ ์ ๋ฌด(์ฃผ๊ฐ ๋ณด๊ณ , ํฐ์ผ ์ถ์ )์์ ๋งฅ๋ฝ ์์ค
๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ค๊ณํ๋ฉด, ์์ด์ ํธ๊ฐ โ์ด์ ๊ฒฐ๋ก /๊ท์น/์ถ๋ ฅ ๊ณ์ฝโ์ ์ฌ์ฌ์ฉํฉ๋๋ค.
2) ์ค์ต ๋ชฉํ
- ๋ชฉํ: ๊ณ ๊ฐ๋ฌธ์ ์์ฝ ์์ด์ ํธ๊ฐ
priority_rule๊ณผoutput_schema๋ฅผ ๊ธฐ์ตํด ์ฌ์คํ ์ ์ผ๊ด๋ ๊ฒฐ๊ณผ ์์ฑ - ์ฑ๊ณต ํ์ :
- 1์ฐจ ์คํ์์ ๊ท์น ์ ์ฅ
- 2์ฐจ ์คํ์์ ๊ท์น ์ฌ์ค๋ช ์์ด ๋์ผ ์คํค๋ง ์ถ๋ ฅ
- ๋ก๊ทธ์ ๋ฉ๋ชจ๋ฆฌ ๋ก๋/์ ์ฉ ํ์ ํ์ธ
3) ์ค๋น๋ฌผ
- ๋๊ตฌ: Python 3.10+, venv, pip
- ์
๋ ฅ ํ์ผ:
tickets_day1.txttickets_day2.txt
- ์คํ ๋ช ๋ น:
python -m venv .venv
source .venv/bin/activate
pip install -U smolagents4) ์ฌํ ๋จ๊ณ
Step A. ์ ๋ ฅ ์ค๋น
tickets_day1.txt
๊ฒฐ์ ์คํจ ๋ฌธ์ 3๊ฑด, ๋ก๊ทธ์ธ ์ค๋ฅ 1๊ฑด, ๊ธฐ๋ฅ ์์ฒญ 1๊ฑดtickets_day2.txt
๊ฒฐ์ ์คํจ ๋ฌธ์ 1๊ฑด, ํ๋ถ ์์ฒญ 2๊ฑด, ๋ก๊ทธ์ธ ์ค๋ฅ 2๊ฑดStep B. ์์ด์ ํธ ์คํฌ๋ฆฝํธ ์์ฑ
memory_agent.py
from smolagents import CodeAgent
from pathlib import Path
import json
MEMORY_FILE = Path("agent_memory.json")
def load_memory():
if MEMORY_FILE.exists():
return json.loads(MEMORY_FILE.read_text(encoding="utf-8"))
return {
"priority_rule": "๊ฒฐ์ /ํ๋ถ > ๋ก๊ทธ์ธ > ๊ธฐ๋ฅ์์ฒญ",
"output_schema": ["date", "top_issue", "action"]
}
def save_memory(mem):
MEMORY_FILE.write_text(json.dumps(mem, ensure_ascii=False, indent=2), encoding="utf-8")
memory = load_memory()
agent = CodeAgent(tools=[])
def run(ticket_text, date):
prompt = f"""
๊ท์น:
- ์ฐ์ ์์: {memory['priority_rule']}
- ์ถ๋ ฅํค: {memory['output_schema']}
์
๋ ฅ: {ticket_text}
์์ฒญ: ์ ๊ท์น์ ๋ฐ๋ผ JSON 1๊ฐ๋ง ์ถ๋ ฅ
date๋ {date}๋ก ์ฑ์๋ผ.
"""
result = agent.run(prompt)
return result
print(run(Path("tickets_day1.txt").read_text(encoding="utf-8"), "2026-05-26"))
save_memory(memory)Step C. ์คํ
python memory_agent.pyStep D. 2์ฐจ ์คํ(์ ๋ ฅ๋ง ๊ต์ฒด)
memory_agent.py ๋ง์ง๋ง ์ค ์
๋ ฅ ํ์ผ๋ง tickets_day2.txt๋ก ๋ฐ๊ฟ ์ฌ์คํ:
python memory_agent.py5) ์ฑ๊ณต ํ์ ์ฒดํฌ๋ฆฌ์คํธ
- ๋ ์คํ ๋ชจ๋ JSON ๋จ์ผ ๊ฐ์ฒด ์ถ๋ ฅ
- ํค๊ฐ
date/top_issue/action์์๋ก ์ ์ง - day2 ์คํ์์๋ ์ฐ์ ์์ ๊ท์น(๊ฒฐ์ /ํ๋ถ ์ฐ์ )์ด ๋ฐ์
-
agent_memory.jsonํ์ผ ์กด์ฌ
6) ๋์ ๊ตฌ์กฐ
flowchart TD A[ํฐ์ผ ์ ๋ ฅ ํ์ผ] --> B[๋ฉ๋ชจ๋ฆฌ ๋ก๋ agent_memory.json] B --> C[CodeAgent ํ๋กฌํํธ ๊ตฌ์ฑ] C --> D[๋ชจ๋ธ ์ถ๋ก ] D --> E[JSON ์ถ๋ ฅ] E --> F[๋ฉ๋ชจ๋ฆฌ ์ ์ง/์ ๋ฐ์ดํธ]
7) ์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
- ์ถ๋ ฅ ๊ณ์ฝ ๊ณ ์ : ์๋ํ ์ฐ๋(n8n, ETL)์์๋ ํค ์ด๋ฆ/์์๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ณ ์ .
- ์ฐ์ ์์ ๊ท์น ๋ถ๋ฆฌ: ์ ์ฑ ๋ณ๊ฒฝ ์ ์ฝ๋ ์์ ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ๋ง ๊ฐฑ์ .
- ํ๊ท ํ ์คํธ: ์ํ ์ ๋ ฅ 3~5๊ฐ๋ก ์ฌ์คํํด ํฌ๋งท ์ผ๊ด์ฑ ์ ๊ฒ.
8) ์์ฃผ ๋๋ ์ค์
- ๋ฉ๋ชจ๋ฆฌ ํ์ผ์ ํ๋กฌํํธ์ ๋ฐ์ํ์ง ์์ โ ๋จ์ ์ ์ฅ๋ง ํ๊ณ ๋ฏธ์ฌ์ฉ
- ์ฑ๊ณต ํ์ ์์ด โ๋์ถฉ ์ข์ ๋ณด์โ์ผ๋ก ์ข ๋ฃ โ ์ด์ ์ ํ์ง ํ๋ค๋ฆผ
- ์ ๋ ฅ ํฌ๋งท์ด ๋ฐ๋์๋๋ฐ ์คํค๋ง ๊ณ ์ ๋ง ์ ์ง โ ํ์ ์ค๋ฅ
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์์ ๋ง๋ค๊ณ , ์ค์ต ์ฌํ์ฑ(๋ช ๋ น/์ ๋ ฅ/์ฑ๊ณตํ์ )๊ณผ ๋งํฌ๋ฅผ ์ฌ๋์ด ๊ฒ์ํด ๋ณด์ํ์ต๋๋ค.