๐ค 38. HF Agents Course ๋ณธํธ 2 - CodeAgent์ ๊ณ์ฐ๊ธฐ ๋๊ตฌ ๋ถ์ฌ ์์ ์ฑ ๋์ด๊ธฐ
๋ชฉํ:
smolagents์CodeAgent์ ์ฌ์ฉ์ ์ ์ ๊ณ์ฐ๊ธฐ ๋๊ตฌ๋ฅผ ์ฐ๊ฒฐํด, ๋จ์ ์์น ์์ ์์ ๋ต๋ณ ์์ ์ฑ์ ๋์ด๋ ๊ธฐ๋ณธ ํจํด์ ์ตํ๋ค.
1) ์ด๋ฒ ํธ์์ ๋ฐฐ์ฐ๋ ๊ฒ
- ์์ด์ ํธ๊ฐ โ์ง์ ๊ณ์ฐโ ๋์ โ๋๊ตฌ ํธ์ถโ์ ํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ
- ์ด๋ณด์๋ ์ฌํ ๊ฐ๋ฅํ ์ต์ ํ๋ก์ ํธ ๊ตฌ์กฐ
- ์ค๋ฌด์์ ๊ณ์ฐ/๋ณํ๋ฅ ์ ๋ฌด ์๋ํ๋ก ํ์ฅํ๋ ํฌ์ธํธ
2) ๋์ ๊ตฌ์กฐ (Mermaid)
flowchart TD U[์ฌ์ฉ์ ์ง๋ฌธ] --> A[CodeAgent] A --> D{๊ณ์ฐ ํ์?} D -- ์ --> T[CalculatorTool ํธ์ถ] T --> O[๊ณ์ฐ ๊ฒฐ๊ณผ ๋ฐํ] O --> A D -- ์๋์ค --> R[์ผ๋ฐ ๋ต๋ณ] A --> F[์ต์ข ์ถ๋ ฅ]
3) ์ค์ต ์ค๋น
๋๊ตฌ
- Python 3.10+
- ํฐ๋ฏธ๋
- ๊ฐ์ํ๊ฒฝ(venv)
์ ๋ ฅ(ํ ์คํธ ์ง๋ฌธ)
"17.5% ๋ถ๊ฐ์ธ๋ฅผ ์ ์ฉํ 128000์์ ์ต์ข ๊ธ์ก์ ๊ณ์ฐํด์ค""(24500 * 3) - 15000 ๊ณ์ฐํด์ค"
์คํ ๋ช ๋ น
mkdir -p ~/hf-agents-part2 && cd ~/hf-agents-part2
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install "smolagents[toolkit]"์ฑ๊ณต ํ์
- ์ค์น ํ ์๋ฌ ์์ด ํ๋กฌํํธ ๋ณต๊ท
python -c "import smolagents; print('ok')"๊ฒฐ๊ณผ๊ฐok
4) ์ฝ๋ ์์ฑ
app.py:
from smolagents import CodeAgent, InferenceClientModel, Tool
class CalculatorTool(Tool):
name = "calculator"
description = "์ฌ์น์ฐ์ฐ/๊ดํธ ๊ณ์ฐ์ ์ํํฉ๋๋ค. ์
๋ ฅ์ ์์ ๋ฌธ์์ด์ด์ด์ผ ํฉ๋๋ค."
inputs = {
"expression": {
"type": "string",
"description": "์: (24500 * 3) - 15000"
}
}
output_type = "string"
def forward(self, expression: str):
allowed = "0123456789+-*/(). %"
if any(ch not in allowed for ch in expression):
return "์ค๋ฅ: ํ์ฉ๋์ง ์์ ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค."
try:
result = eval(expression, {"__builtins__": {}}, {})
return str(result)
except Exception as e:
return f"์ค๋ฅ: {e}"
model = InferenceClientModel()
agent = CodeAgent(
tools=[CalculatorTool()],
model=model,
)
queries = [
"17.5% ๋ถ๊ฐ์ธ๋ฅผ ์ ์ฉํ 128000์์ ์ต์ข
๊ธ์ก์ ๊ณ์ฐํด์ค. ํ์ํ ์์ calculator๋ก ๊ณ์ฐํด.",
"(24500 * 3) - 15000 ๊ณ์ฐํด์ค. calculator๋ฅผ ์จ์ ๊ฒฐ๊ณผ๋ง ์๋ ค์ค."
]
for q in queries:
print("\n[์ง๋ฌธ]", q)
print("[๋ต๋ณ]", agent.run(q))5) ์คํ
python app.py์ฑ๊ณต ํ์
- ์ต์ 2๊ฐ ์ง๋ฌธ ๋ชจ๋ ๊ฒฐ๊ณผ ์ถ๋ ฅ
- ๊ณ์ฐ ์ง๋ฌธ์์ ๋๊ตฌ ํธ์ถ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
- ์ซ์ ๊ฒฐ๊ณผ๊ฐ ์๊ธฐ๋ก ๊ฒ์ฐํ์ ๋ ์ผ์น
6) ์ด๋ณด์์ฉ ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋
ModuleNotFoundError๋ฐ์
โ ๊ฐ์ํ๊ฒฝ ํ์ฑํ ์ฌ๋ถ ํ์ธ ํ ์ฌ์คํ- HF ๋ชจ๋ธ ํธ์ถ ์ค๋ฅ
โ ํ์ ์HF_TOKENํ๊ฒฝ๋ณ์ ์ค์ - ์์ ํ์ฑ ์ค๋ฅ
โ ์์์์ ํ๊ธ/์ผํ ์ ๊ฑฐ ํ ์ฌ์ง๋ฌธ
7) ์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
- ์ ์ฐ ๋ณด์กฐ: ์ธ์จ/ํ ์ธ์จ ๊ณ์ฐ ์๋ํ
- ์ด์ ๋ฆฌํฌํธ: ๋ฐ๋ณต KPI ๊ณ์ฐ์ ์์ด์ ํธ+๋๊ตฌ๋ก ํ์คํ
- ์ ๋ขฐ์ฑ ํฅ์: โ๋ง๋ก ๊ณ์ฐโ๋ณด๋ค โ๋๊ตฌ ๊ณ์ฐโ์ ๊ฐ์ ํด ์ค๋ฅ ๊ฐ์
8) ๋ค์ ํธ ์๊ณ
๋ค์ ๋ณธํธ์์๋ ๊ฒ์ ๋๊ตฌ + ๊ณ์ฐ ๋๊ตฌ๋ฅผ ํจ๊ป ์ฌ์ฉํด, โ๊ทผ๊ฑฐ ์์ง + ๊ณ์ฐ ๊ฒ์ฆโ์ด ๊ฐ๋ฅํ ์ค๋ฌดํ ์์ด์ ํธ๋ก ํ์ฅํ๋ค.
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์ ๊ตฌ์ฑ๊ณผ ์์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์์ฑ์๊ฐ ์ค์ต ์ฌํ์ฑ๊ณผ ๋งํฌ/ํํ์ ๊ฒํ ํด ํธ์งํ์ต๋๋ค.