๐ค 48. HF Agents Course ๋ณธํธ 1 - ์์ด์ ํธ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ์ฒซ smolagents ์คํ ๊ฐ์ด๋
๋ชฉํ: Hugging Face Agents Course์ Unit 1 ๊ด์ ์์ ์์ด์ ํธ์ ์ต์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ ,
smolagents๋ก ์ฒซ ์คํ๊น์ง ์ง์ ์ฌํํ๋ค.
Hugging Face Agents Course๋ ์ ์ฒด์ ์ผ๋ก ๊ธฐ์ด ๊ฐ๋ โ ํ๋ ์์ํฌ โ ์ค์ ์ ์ค์ผ์ด์ค โ ์ต์ข ๊ณผ์ ํ๋ฆ์ผ๋ก ์ค๊ณ๋์ด ์๋ค. ๊ทธ์ค ๋ณธํธ 1์ ๊ฐ์ฅ ๋จผ์ ์์ด์ ํธ๊ฐ ๋ฌด์์ธ์ง, LLM์ ์ด๋ค ์ญํ ์ ํ๋์ง, ์ ๋๊ตฌ๊ฐ ํ์ํ์ง๋ฅผ ์ก์ ์ฃผ๋ ์ ๋ฌธ ๊ตฌ๊ฐ์ด๋ค.
๊ณต์ ์ฝ์ค์ smolagents ๋ฌธ์๋ฅผ ๊ฐ์ด ๋ณด๋ฉด ์ด๋ฐ์ ๊ผญ ์ดํดํด์ผ ํ ์ถ์ ๋ค ๊ฐ์ง๋ค.
- ์์ด์ ํธ๋ ๋ชฉํ๋ฅผ ๋ฐ๊ณ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๋ต์ ์์ฑํ๋ค.
- LLM์ ํ๋จ์ ๋ด๋นํ์ง๋ง ์ธ๋ถ ์์ ์ ๋๊ตฌ๊ฐ ๋งก๋๋ค.
- ํต์ฌ ๋ฃจํ๋ Think โ Act โ Observe๋ค.
- ์ ๋ฌธ ์ค์ต์ ์์ ๋๊ตฌ ํ๋๋ก๋ ์ถฉ๋ถํ ํ์ต ํจ๊ณผ๊ฐ ํฌ๋ค.
์ด ๊ธ์์ ์ก์ ํฐ ๊ทธ๋ฆผ
flowchart TD A[์ฌ์ฉ์ ๋ชฉํ ์ ๋ ฅ] --> B[LLM์ด ๋ฌธ์ ํด์] B --> C{๋๊ตฌ๊ฐ ํ์ํ๊ฐ?} C -- ์ --> D[๋๊ตฌ ์คํ] C -- ์๋์ค --> F[์ง์ ๋ต๋ณ ๊ตฌ์ฑ] D --> E[์คํ ๊ฒฐ๊ณผ ๊ด์ฐฐ] E --> B F --> G[์ต์ข ์๋ต] E --> G
์ด ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ฉด ๋ค์์ LangGraph, LlamaIndex, smolagents๋ฅผ ๋ณด๋๋ผ๋ โํ๋ ์์ํฌ ๋ฌธ๋ฒโ๋ณด๋ค โ์์ด์ ํธ ๋ณธ์งโ์ด ๋จผ์ ๋ณด์ธ๋ค.
๊ณต์ ์๋ฃ ๊ธฐ์ค์ผ๋ก ๋ณธ ๋ณธํธ 1 ํต์ฌ
1) ์์ด์ ํธ๋ ์ฑ๋ด๋ณด๋ค ๋์ ๊ฐ๋ ์ด๋ค
์ผ๋ฐ ์ฑ๋ด์ ์ง๋ฌธ์ ๋ฐ๋ก ํ ์คํธ๋ฅผ ์ด์ด์ ๋ตํ๋ ๋ฐ ๊ฐํ๋ค. ๋ฐ๋ฉด ์์ด์ ํธ๋ ๋ชฉํ๋ฅผ ๋ณด๊ณ , ํ์ํ ์๋จ์ ๊ณ ๋ฅด๊ณ , ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ฉฐ, ๋ค์ ํ๋์ ๊ฒฐ์ ํ๋ค.
2) LLM์ ๋, ๋๊ตฌ๋ ์๋ฐ์ ๊ฐ๊น๋ค
๊ณต์ ์ฝ์ค๋ LLM์ ์์ด์ ํธ์ ์ค์ฌ ํ๋จ๊ธฐ๋ก ๋ณธ๋ค. ํ์ง๋ง ๊ณ์ฐ, ๊ฒ์, ํ์ผ ์ฝ๊ธฐ, API ํธ์ถ ๊ฐ์ ์ผ์ ๋ชจ๋ธ์ด ๋จธ๋ฆฟ์์ผ๋ก๋ง ์ฒ๋ฆฌํ๊ธฐ๋ณด๋ค ๊ฒ์ฆ ๊ฐ๋ฅํ ๋๊ตฌ๋ฅผ ์ฐ๋ ํธ์ด ์์ ์ ์ด๋ค.
3) Think-Act-Observe๊ฐ ์ค์ ๊ฐ๊ฐ์ ์์์ ์ด๋ค
์ด ๋ฃจํ๋ฅผ ์ดํดํ๋ฉด ์ ์ด๋ค ์ง๋ฌธ์ ์ ํ๊ณ ์ด๋ค ์ง๋ฌธ์ ํ๋ฆฌ๋์ง ์ค๋ช ์ด ์ฌ์์ง๋ค.
- Think: ์ง๊ธ ๋ฌด์์ ํด์ผ ํ๋์ง ํด์
- Act: ํ์ํ ๋๊ตฌ ํธ์ถ ๋๋ ์ฝ๋ ์คํ
- Observe: ๋์จ ๊ฒฐ๊ณผ ํ์ธ
- Repeat: ์์ง ๋ถ์กฑํ๋ฉด ๋ค์ ๋จ๊ณ ๋ฐ๋ณต
4) ์ฒซ ์ค์ต์ โ์๊ฒ ์ฑ๊ณตํ๊ธฐโ๊ฐ ์ค์ํ๋ค
์ฒ์๋ถํฐ ๋ณต์กํ ์น ์์ด์ ํธ๋ฅผ ๋ง๋ค ํ์๋ ์๋ค. smolagents ๋ฌธ์๋ ์์ฃผ ์ ์ ์ฝ๋๋ก ์์ํ๋ ๋ฐฉ์์ ๊ถ์ฅํ๋ค. ์
๋ฌธ ๋จ๊ณ์์๋ ๊ณ์ฐ๊ธฐ ๊ฐ์ ๋จ์ ๋๊ตฌ ํ๋๋ง ๋ถ์ฌ๋ ์ถฉ๋ถํ๋ค.
์ค์ต ๋ชฉํ
์ด๋ฒ ์ค์ต์์๋ ์๋ ์กฐ๊ฑด์ ์์ฃผ ์์ ์์ด์ ํธ๋ฅผ ๋ง๋ ๋ค.
- ํ๋ ์์ํฌ:
smolagents - ๋ชจ๋ธ ์ฐ๊ฒฐ:
InferenceClientModel - ๋๊ตฌ: ๊ณ์ฐ๊ธฐ 1๊ฐ
- ์คํ ๋ชฉํ: ์ซ์ ๊ณ์ฐ์ด ๋ค์ด๊ฐ ์ง๋ฌธ 2๊ฐ๋ฅผ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌ
์ค๋น๋ฌผ
- Python 3.10+
- ํฐ๋ฏธ๋
- ์ธํฐ๋ท ์ฐ๊ฒฐ
- ํ์ ์ Hugging Face ํ ํฐ (
HF_TOKEN)
์ค์ต 1) ์์ ํด๋ ์ค๋น
๋๊ตฌ
- ํฐ๋ฏธ๋
์ ๋ ฅ
mkdir -p ~/hf-agents-course-unit1
cd ~/hf-agents-course-unit1์ฑ๊ณต ํ์
pwd- ์ถ๋ ฅ ๊ฒฝ๋ก ๋์ด
hf-agents-course-unit1์ด๋ฉด ์ฑ๊ณต.
์ค์ต 2) ๊ฐ์ํ๊ฒฝ๊ณผ ํจํค์ง ์ค์น
์ ๋ ฅ
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install "smolagents[toolkit]"์ฑ๊ณต ํ์
python -c "import smolagents; print(smolagents.__name__)"smolagents๊ฐ ์ถ๋ ฅ๋๋ฉด ์ค์น ์ฑ๊ณต.
์ค์ต 3) ์ฒซ ์์ด์ ํธ ์ฝ๋ ์์ฑ
ํ์ผ๋ช
first_agent.py
์ ๋ ฅ
from smolagents import CodeAgent, InferenceClientModel, tool
@tool
def calculator(expression: str) -> str:
"""Evaluate a simple arithmetic expression.
Args:
expression: A math expression using numbers and + - * / ( )
"""
allowed = set("0123456789+-*/(). ")
if any(ch not in allowed for ch in expression):
return "Only simple arithmetic is allowed."
try:
result = eval(expression, {"__builtins__": {}}, {})
return str(result)
except Exception as e:
return f"calculation-error: {e}"
model = InferenceClientModel()
agent = CodeAgent(
tools=[calculator],
model=model,
max_steps=5,
)
questions = [
"17 * 24๋ ์ผ๋ง์ผ? ์งง๊ฒ ์ค๋ช
ํด์ค.",
"56.8๊ณผ 19.2๋ฅผ ๋ํ ๋ค 2๋ก ๋๋ ๊ฐ์ ์๋ ค์ค."
]
for idx, question in enumerate(questions, start=1):
print(f"\n=== Question {idx} ===")
print("INPUT:", question)
answer = agent.run(question)
print("OUTPUT:")
print(answer)์ฝ๋ ํด์ค
@tool: ์ผ๋ฐ ํ์ด์ฌ ํจ์๋ฅผ ์์ด์ ํธ์ฉ ๋๊ตฌ๋ก ๋ฐ๊พผ๋ค.CodeAgent: ํ์ํ๋ฉด ์ฝ๋ ํํ๋ก ์์ ๋จ๊ณ๋ฅผ ๊ตฌ์ฑํ๋ค.InferenceClientModel(): Hugging Face ์ถ๋ก ๋ชจ๋ธ ์ฐ๊ฒฐ์ฉ ๊ธฐ๋ณธ ์ง์ ์ ์ด๋ค.max_steps=5: ์ด๋ณด์ ์ค์ต์์ ๋ฃจํ ํญ์ฃผ๋ฅผ ์ค์ด๋ ์์ ์ฅ์น๋ค.
์ค์ต 4) ์ฒซ ์คํ
์คํ ๋ช ๋ น
python first_agent.py์ฑ๊ณต ํ์
์๋ 4๊ฐ๋ฅผ ๋ง์กฑํ๋ฉด ๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ์์ธ ์์ด ์ข ๋ฃ๋๋ค.
=== Question 1 ===,=== Question 2 ===๊ฐ ๋ชจ๋ ์ถ๋ ฅ๋๋ค.- ๊ฐ ์ง๋ฌธ์ ์ซ์ ๊ฒฐ๊ณผ๊ฐ ํฌํจ๋๋ค.
- ๊ณ์ฐ ๋ฌธ์ ์์ ๊ณ์ฐ๊ธฐ ๋๊ตฌ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ ๋ต๋ณ์ด ๋์จ๋ค.
์ค์ต 5) ๋๊ตฌ ์ ๋ฌด ๋น๊ต
๋๊ตฌ์ ํ์์ฑ์ ๋ ์ ๋ช ํ๊ฒ ๋ณด๋ ค๋ฉด ํ ๋ฒ ๋น๊ตํด ๋ณด๋ ๊ฒ ์ข๋ค.
์ ๋ ฅ
์๋ ํ ์ค๋ง ๋ฐ๊พผ๋ค.
tools=[]์ฆ, ์๋์
tools=[calculator]๋ฅผ ๋น์ด๋ค.
์คํ ๋ช ๋ น
python first_agent.py์ฑ๊ณต ํ์
- ๋ต๋ณ์ ๋์ค๋๋ผ๋ ๊ณ์ฐ ์ ๋ขฐ๋๊ฐ ํ๋ค๋ฆด ์ ์๋ค.
- ์ค๋ช ์ ๊ทธ๋ด๋ฏํ๋ฐ ์ซ์๊ฐ ํ๋ฆด ๊ฐ๋ฅ์ฑ์ด ์๊ธด๋ค.
- ์ด ์ฐจ์ด๋ฅผ ํ์ธํ๋ฉด โ์ ๋๊ตฌ๋ฅผ ๋ถ์ด๋๊ฐโ๊ฐ ๋ฐ๋ก ์ดํด๋๋ค.
์ค์ต 6) ์ค๋ฌดํ ์ ๋ ฅ์ผ๋ก ๋ฐ๊ฟ๋ณด๊ธฐ
์ด์ ์กฐ๊ธ ๋ ์ ๋ฌด์ ๊ฐ๊น์ด ์ง๋ฌธ์ผ๋ก ๋ฐ๊ฟ ๋ณธ๋ค.
์ ๋ ฅ
questions = [
"๊ด๊ณ ๋
ธ์ถ 12800ํ, CTR 2.5%๋ฉด ํด๋ฆญ ์๋ ๋ช ํ์ผ?",
"์ ๊ตฌ๋
๋ฃ 29๋ฌ๋ฌ ์ํ์ 43๋ช
์ด ์ฐ๋ฉด ์ ๋งค์ถ์ ์ผ๋ง์ผ?"
]์คํ ๋ช ๋ น
python first_agent.py์ฑ๊ณต ํ์
- ํด๋ฆญ ์, ๋งค์ถ ๊ฐ์ ์ค๋ฌด ์ซ์๊ฐ ๋ฐ๋ก ๊ณ์ฐ๋๋ค.
- ๋จ์ ๋ฐ๋ชจ๋ฅผ ๋์ด ์ด์ ์ซ์ ๋ณด์กฐ ์์ด์ ํธ๋ก ํ์ฅ ๊ฐ๋ฅํ๋ค๋ ๊ฐ์ด ์จ๋ค.
์ด๋ณด์ ํฌ์ธํธ๋ง ๊ณจ๋ผ์ ์ ๋ฆฌ
์์ด์ ํธ์ ํต์ฌ์ โ์ธ๋ถ ๊ธฐ๋ฅ ์ฌ์ฉโ์ด๋ค
๋ง์ ์ ๋ง๋๋ ๊ฒ๋ง์ผ๋ก๋ ๋ถ์กฑํ๋ค. ์ค์ ์ ๋ฌด์์๋ ์ ํํ ๊ณ์ฐ, ๊ฒ์, ์กฐํ, ์คํ์ด ์ค์ํ๋ค.
์์ ๋๊ตฌ 1๊ฐ๊ฐ ํ์ต ํจ์จ์ด ๋๋ค
์ฒ์๋ถํฐ ๋๊ตฌ 5๊ฐ๋ฅผ ๋ถ์ด๋ฉด ์คํ๋ ค ํท๊ฐ๋ฆฐ๋ค. ๊ณ์ฐ๊ธฐ์ฒ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ช ํํ ๋๊ตฌ๋ถํฐ ์์ํ๋ฉด ์์ด์ ํธ ๋ฃจํ๊ฐ ์ ๋ณด์ธ๋ค.
ํ๋กฌํํธ๋ณด๋ค ๊ตฌ์กฐ๊ฐ ๋จผ์ ๋ค
์ ๋ฌธ ๋จ๊ณ์์๋ ๋ฉ์ง ํ๋กฌํํธ๋ณด๋ค ์ ๋ ฅ โ ํ๋จ โ ๋๊ตฌ โ ๊ด์ฐฐ โ ์๋ต ๊ตฌ์กฐ๋ฅผ ๋ชธ์ ์ตํ๋ ๊ฒ ๋ ์ค์ํ๋ค.
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
1) ๋ง์ผํ ๋ฆฌํฌํธ ๋ณด์กฐ
CTR, CPC, CVR, ๋งค์ถ ํฉ๊ณ ๊ณ์ฐ์ฒ๋ผ ์ซ์ ์ค๋ฅ๊ฐ ๋ฐ๋ก ๋๋ฌ๋๋ ์์ ์ ์ ํฉํ๋ค.
2) ์ด์ํ ๊ณ์ฐ ์๋ํ
ํ๋ถ์ก, ํ ์ธ์จ, ์์๋ฃ, ์ ์ฐ ๊ธ์ก ๊ณ์ฐ์ ์ฐ๊ฒฐํ๊ธฐ ์ฝ๋ค.
3) ๋ค์ ๋จ๊ณ ํ์ฅ ๊ฒฝ๋ก
๊ฐ์ฅ ์์ ์ ์ธ ํ์ฅ ์์๋ ๋ณดํต ์ด๋ ๋ค.
- ๊ณ์ฐ๊ธฐ ๋๊ตฌ
- CSV ์ฝ๊ธฐ ๋๊ตฌ
- ์ธ๋ถ API ํธ์ถ ๋๊ตฌ
- ๊ฒ์/๋ธ๋ผ์ฐ์ ๋๊ตฌ
์์ฃผ ๋งํ๋ ๋ฌธ์
ModuleNotFoundError
source .venv/bin/activate
python -m pip install "smolagents[toolkit]"์ธ์ฆ ๋๋ ๋ชจ๋ธ ํธ์ถ ์ค๋ฅ
ํ๊ฒฝ์ ๋ฐ๋ผ Hugging Face ํ ํฐ์ด ํ์ํ ์ ์๋ค.
export HF_TOKEN=hf_your_token_here
python first_agent.py๋๊ตฌ ํธ์ถ์ด ์ ์ ๋ณด์ผ ๋
- ๊ณ์ฐ์ด ๋ถ๋ช ํ ์ง๋ฌธ์ผ๋ก ๋ฐ๊พผ๋ค.
- ํ ๋ฒ์ ๋๋ฌด ๋ณต์กํ ์๊ตฌ๋ฅผ ๋ฃ์ง ์๋๋ค.
max_steps๋ฅผ ์ง๋์น๊ฒ ๋ฎ๊ฒ ๋์ง ์๋๋ค.
eval์ด ๋ถ์ํ ๋
๋ง๋ค. ์ด์ ํ๊ฒฝ์์๋ ๋ ์์ ํ ํ์ ๊ธฐ๋ฐ ๊ณ์ฐ ๋ฐฉ์์ด ์ข๋ค. ๋ค๋ง ์ด๋ฒ ์์ ์ ๋ชฉ์ ์ ์์ด์ ํธ ๊ตฌ์กฐ ์ดํด์ด๋ฏ๋ก ์ต์ ์์๋ก ๋ณด๋ ํธ์ด ๋ง๋ค.
์ถ์ฒ ํ์ต ์์
- ๊ณต์ ์ฝ์ค ์๊ฐ ํ์ด์ง๋ก ์ ์ฒด ๊ตฌ์กฐ ํ์ธ
- Unit 1์์ ์์ด์ ํธ ๊ธฐ๋ณธ ๊ฐ๋ ์ฝ๊ธฐ
smolagentsQuickstart ๊ตฌ์กฐ ํ์ธ- ์ด ๊ธ์ ์์ ๋ก ์ฒซ ์คํ ์ฌํ
- ์ดํ ์ค์ตํธ์ด๋ Unit 2 ํ๋ ์์ํฌ ๋น๊ต๋ก ์ด๋
ํ ์ค ์์ฝ
HF Agents Course ๋ณธํธ 1์ ์ถ๋ฐ์ ์ ๋ณต์กํ ๋ฉํฐ์์ด์ ํธ๊ฐ ์๋๋ค. LLM์ด ๋๊ตฌ๋ฅผ ์จ์ ๋ฌธ์ ๋ฅผ ํธ๋ ์ต์ ๊ตฌ์กฐ๋ฅผ ์ง์ ๋๋ ค๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ๋ค.
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ก ์ด์์ ์์ฑํ ๋ค, Hugging Face Agents Course GitHub ์ ์ฅ์, ๊ณต์ ์ฝ์ค ํ์ด์ง, smolagents ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋์ด ์ฌํ ๋จ๊ณยท๋ช
๋ น์ดยท์ฑ๊ณต ํ์ ยท๋งํฌ ๊ตฌ์กฐ๋ฅผ ๊ฒํ ํด ํธ์งํ์ต๋๋ค.