๐ค 51. HF Agents Course ๋ณธํธ 1 - ์ฝ์ค ์ง๋๋ถํฐ Alfred ์ฒซ ์คํ๊น์ง ํ ๋ฒ์ ์ดํดํ๊ธฐ
๋ชฉํ: HF Agents Course์ ์ ์ฒด ํ์ต ์ง๋๋ฅผ ๋จผ์ ์ก๊ณ , Unit 1์์ ๊ฐ์กฐํ๋ ์์ด์ ํธ ๊ธฐ๋ณธ ๋ฃจํ๋ฅผ
smolagents๋ก ์ง์ ์ฌํํ๋ค.
Hugging Face Agents Course๋ฅผ ์ฒ์ ๋ณด๋ฉด ์ ๋ณด๊ฐ ๋ง์ ๋ณด์ด์ง๋ง, ์ค์ ์ถ๋ฐ์ ์ ๋จ์ํ๋ค. ๋จผ์ ์ด ์ฝ์ค๊ฐ ์ด๋๊น์ง ๊ฐ๋์ง๋ฅผ ์ดํดํ๊ณ , ๊ทธ๋ค์ ์์ด์ ํธ๊ฐ ์ด๋ป๊ฒ ์๊ฐํ๊ณ ํ๋ํ๋์ง๋ฅผ ์์ฃผ ์์ ์์ ๋ก ํ์ธํ๋ฉด ๋๋ค. ๊ณต์ GitHub ์ ์ฅ์์ ์ฝ์ค ํ์ด์ง๋ Unit 1์ ์์ด์ ํธ ๊ธฐ์ด, Unit 2๋ฅผ ํ๋ ์์ํฌ, Unit 3๋ฅผ ์ ์ค์ผ์ด์ค, Unit 4๋ฅผ ์ต์ข ๊ณผ์ ๋ก ๋ฐฐ์นํ๋ค. ์ฆ, ์ฒซ ํธ์์ ํด์ผ ํ ์ผ์ ํ๋ คํ ๋ฐ๋ชจ๊ฐ ์๋๋ผ ํ์ต ์งํ ํ์ + ์ต์ ์คํ ์ฑ๊ณต์ด๋ค.
๋จผ์ ์ก์์ผ ํ ํฐ ๊ทธ๋ฆผ
flowchart TD A[HF Agents Course ์์] --> B[Unit 1: ์์ด์ ํธ ๊ธฐ์ด] B --> C[๋ฌธ์ ํด์] C --> D[Think] D --> E[Act] E --> F[Observe] F --> G{๋ชฉํ ๋ฌ์ฑ?} G -- ์๋์ค --> D G -- ์ --> H[์ต์ข ๋ต๋ณ] A --> I[Unit 2: smolagentsยทLangGraphยทLlamaIndex] A --> J[Unit 3: Agentic RAG ๋ฑ ์ ์ค์ผ์ด์ค] A --> K[Unit 4: ๊ณผ์ ยทํ๊ฐ]
์ด ๊ทธ๋ฆผ์ ํต์ฌ์ ํ๋๋ค. Unit 1์ ์ดํ ๋ชจ๋ ํ๋ ์์ํฌ ํ์ต์ ๊ณตํต ์๋ฆฌ๋ฅผ ์ก๋ ๊ตฌ๊ฐ์ด๋ผ๋ ์ ์ด๋ค.
๊ณต์ ์๋ฃ ๊ธฐ์ค ํต์ฌ ์์ฝ
1) ์ฝ์ค๋ ๋จ๊ณํ์ด๋ค
๊ณต์ ์ ์ฅ์์ ์ฝ์ค ์๊ฐ ํ์ด์ง ๊ธฐ์ค์ผ๋ก HF Agents Course๋ ๋ค์ ์์๋ก ์งํ๋๋ค.
- Unit 0: ์จ๋ณด๋ฉ
- Unit 1: ์์ด์ ํธ ๊ธฐ์ด
- Unit 2: ํ๋ ์์ํฌ ๋น๊ต์ ์ค์ต
- Unit 3: ์ค์ ์ ์ค์ผ์ด์ค
- Unit 4: ์ต์ข ๊ณผ์ ์ ํ๊ฐ
์ด๋ณด์๋ผ๋ฉด ์ง๊ธ ๋น์ฅ Unit 2 ๋ฌธ๋ฒ์ผ๋ก ๋ฐ์ด๋ค๊ธฐ๋ณด๋ค, Unit 1์ ๋๊ตฌยทํ๋ยท๊ด์ฐฐ ๊ฐ๋ ์ ๋จผ์ ๋ชธ์ ์ตํ๋ ํธ์ด ํจ์ฌ ๋น ๋ฅด๋ค.
2) ์์ด์ ํธ๋ ๋ชฉํ ํด๊ฒฐ ํ๋ฆ์ด๋ค
์ผ๋ฐ ์ฑ๋ด์ ๋ต์ ๋ฐ๋ก ์์ฑํ๋ ๋ฐ ๊ฐํ์ง๋ง, ์์ด์ ํธ๋ ๋ค์ ํ๋ฆ์ ๊ฐ์ง๋ค.
- ๋ชฉํ๋ฅผ ํด์ํ๋ค.
- ํ์ํ ๋๊ตฌ๋ฅผ ๊ณ ๋ฅธ๋ค.
- ๋๊ตฌ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณธ๋ค.
- ๋ถ์กฑํ๋ฉด ํ ๋ฒ ๋ ์๋ํ๋ค.
- ์ถฉ๋ถํ๋ฉด ์ต์ข ๋ต์ ๋ธ๋ค.
์ด ๊ตฌ์กฐ๋ฅผ ๋ณดํต Think โ Act โ Observe๋ก ์ดํดํ๋ฉด ๋๋ค.
3) smolagents๋ ์ฒซ ์ค์ต์ฉ์ผ๋ก ๊ฐ๋ณ๋ค
๊ณต์ smolagents ๋ฌธ์๋ ์์ฃผ ์ ์ ์ฝ๋๋ก ์ฒซ ์์ด์ ํธ๋ฅผ ๋ง๋ค ์ ์๊ฒ ์ค๊ณ๋์ด ์๋ค. ์
๋ฌธ ๋จ๊ณ์์๋ ์ด ๋จ์ํจ์ด ์ฅ์ ์ด๋ค. ๋ณต์กํ ์ค์ผ์คํธ๋ ์ด์
๋ณด๋ค ์๊ฒ ์คํํด ๋ณด๊ณ ๋ฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ๊ฒฝํ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฒ ๊ธ์ ์ค์ต ๋ชฉํ
์ด๋ฒ ๊ธ์์๋ ์๋ 2๊ฐ์ง๋ฅผ ์ฌํํ๋ค.
smolagents์คํ ํ๊ฒฝ์ ์ค๋นํ๋ค.- Alfred ์คํ์ผ์ ์์ฃผ ์์ ์์ด์ ํธ๋ฅผ ์คํํด ๋๊ตฌ ์ฌ์ฉ ํ๋ฆ์ ํ์ธํ๋ค.
์ค๋น๋ฌผ
- Python 3.10 ์ด์
- ํฐ๋ฏธ๋
- ์ธํฐ๋ท ์ฐ๊ฒฐ
- ํ์ ์ Hugging Face ํ ํฐ (
HF_TOKEN)
์ค์ต 1) ์์ ํด๋ ์ค๋น
๋๊ตฌ
- ํฐ๋ฏธ๋
์ ๋ ฅ
mkdir -p ~/hf-agents-course-alfred
cd ~/hf-agents-course-alfred์ฑ๊ณต ํ์
pwd- ์ถ๋ ฅ ๊ฒฝ๋ก ๋์ด
hf-agents-course-alfred์ด๋ฉด ์ฑ๊ณต.
์ค์ต 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.__version__)"- ๋ฒ์ ๋ฌธ์์ด์ด ์ถ๋ ฅ๋๋ฉด ์ค์น ์ฑ๊ณต.
์ค์ต 3) Alfred ์คํ์ผ ์ฒซ ์์ด์ ํธ ์์ฑ
์ด๋ฒ ์์ ๋ โ๊ฐ๋จํ ๊ณ์ฐ์ ๋๊ตฌ๋ก ์ฒ๋ฆฌํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์งง๊ฒ ์ค๋ช ํ๋ ๋ณด์กฐ ์์ด์ ํธโ๋ค. ์ด๋ฆ๋ง Alfred ์คํ์ผ๋ก ๋๊ณ , ๊ตฌ์กฐ๋ ์ด๋ณด์์๊ฒ ๋ณด์ด๊ธฐ ์ฝ๊ฒ ์ต์ํํ๋ค.
ํ์ผ๋ช
alfred_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()
alfred = CodeAgent(
tools=[calculator],
model=model,
max_steps=5,
)
question = "์ 29๋ฌ๋ฌ ์ํ์ 18๋ช
์ด ๊ตฌ๋
ํ๋ฉด ์ ๋งค์ถ์ ์ผ๋ง์ธ์ง ๊ณ์ฐํ๊ณ ํ ์ค๋ก ์ค๋ช
ํด์ค."
result = alfred.run(question)
print(result)์ค์ต 4) ์คํํ๊ธฐ
์คํ ๋ช ๋ น
python alfred_first_agent.py์ฑ๊ณต ํ์
์๋ 3๊ฐ์ง๋ฅผ ๋ง์กฑํ๋ฉด ๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ์์ธ ์์ด ์ข ๋ฃ๋๋ค.
- ๊ฒฐ๊ณผ์
522๊ฐ ํฌํจ๋๋ค. - ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํ๋ ์งง์ ํ๊ตญ์ด ๋๋ ์์ด ๋ฌธ์ฅ์ด ํจ๊ป ๋์จ๋ค.
์ค์ต 5) ๋๊ตฌ ์ฌ์ฉ ์ฌ๋ถ ์ฒด๊ฐํ๊ธฐ
์ด์ ๋๊ตฌ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ค์ ์คํํด ๋ณธ๋ค.
์์ ํฌ์ธํธ
tools=[]์ฆ, ์๋ ํ ์ค์
tools=[calculator]์ด๋ ๊ฒ ๋ฐ๊พผ๋ค.
tools=[]์คํ ๋ช ๋ น
python alfred_first_agent.py์ฑ๊ณต ํ์
- ์๋ต์ ์์ฑ๋ ์ ์๋ค.
- ํ์ง๋ง ๊ณ์ฐ ์ ํ๋์ ์ฌํ์ฑ์ด ๋๊ตฌ ๋ฒ์ ๋ณด๋ค ํ๋ค๋ฆด ์ ์๋ค.
- ์ด ์ฐจ์ด๋ฅผ ํ์ธํ๋ฉด Unit 1์์ ์ ๋๊ตฌ ๊ฐ๋ ์ ๊ฐ์กฐํ๋์ง ๊ฐ์ด ์กํ๋ค.
์ด๋ณด์์ฉ ํด์ค
์ ๊ณ์ฐ๊ธฐ๋ถํฐ ์์ํ๋?
๊ฒ์, ๋ธ๋ผ์ฐ์ , API ๋๊ตฌ๋ ๋งค๋ฒ ํ๊ฒฝ ๋ณ์๊ฐ ๋ง๋ค. ๋ฐ๋ฉด ๊ณ์ฐ๊ธฐ๋ ์ ๋ ฅ๊ณผ ์ ๋ต์ด ๋ช ํํด์ ์์ด์ ํธ ๋ฃจํ๋ฅผ ๋ฐฐ์ฐ๊ธฐ์ ์ข๋ค.
์ CodeAgent๋ฅผ ์ฐ๋?
smolagents ๋ฌธ์์์ ๊ฐ์กฐํ๋ฏ CodeAgent๋ ์์
๋จ๊ณ๋ฅผ ์ฝ๋์ฒ๋ผ ํํํ ์ ์์ด, ๋๊ตฌ ์กฐํฉ์ด๋ ๋ฐ๋ณต ๋ก์ง์ ์ดํดํ๊ธฐ ์ฝ๋ค. ์
๋ฌธ ๋จ๊ณ์์๋ โ์์ด์ ํธ๊ฐ ์ค๊ฐ ํ๋์ ์กฐ์งํ๋คโ๋ ๊ฐ๊ฐ์ ์ก๊ธฐ์ ์ข๋ค.
์ ์ฑ๊ณต ํ์ ์ ๋ฐ๋ก ์ ๋?
์ด๋ณด์๋ โ์คํ์ ๋๋๋ฐ ๋ด๊ฐ ๋ง๊ฒ ํ ๊ฑด์งโ์์ ์์ฃผ ๋งํ๋ค. ๊ทธ๋์ ์ค์ต ๋ฌธ์์๋ ๋ฐ๋์ ๋๊ตฌ / ์ ๋ ฅ / ์คํ ๋ช ๋ น / ์ฑ๊ณต ํ์ ์ด ์์ด์ผ ์ฌํ์ฑ์ด ์ฌ๋ผ๊ฐ๋ค.
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
1) ๋ง์ผํ ์ซ์ ๊ฒ์ฐ
CTR, CPA, ROAS, ๊ตฌ๋ ๋งค์ถ ๊ณ์ฐ์ฒ๋ผ ์์ ์ซ์ ์ ๋ฌด๋ฅผ ๋จผ์ ๋งก๊ธฐ๊ธฐ ์ข๋ค.
2) ์ด์ํ ๋ฐ๋ณต ์ง๋ฌธ ์๋ํ
๋ฐํ๋ฅ , ํ ์ธ์จ, ์ ์ฐ์ก ๊ฐ์ ๊ณ์ฐ ์ง๋ฌธ์ ์์ด์ ํธ ์ ๋ ฅ์ผ๋ก ๋ฐ๊ฟ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
3) ๋ค์ ํ์ฅ ๊ฒฝ๋ก
์ถ์ฒ ์์๋ ์๋์ฒ๋ผ ๊ฐ๋ฉด ์์ ์ ์ด๋ค.
- ๊ณ์ฐ๊ธฐ ๋๊ตฌ
- CSV ์ฝ๊ธฐ ๋๊ตฌ
- ์น ๊ฒ์ ๋๊ตฌ
- ์ธ๋ถ API ๋๊ตฌ
- ๋ฉํฐ์คํ ์ํฌํ๋ก
์์ฃผ ๋งํ๋ ๋ฌธ์
ModuleNotFoundError: smolagents
source .venv/bin/activate
pip install "smolagents[toolkit]"๋ชจ๋ธ ํธ์ถ ๋๋ ์ธ์ฆ ์ค๋ฅ
ํ๊ฒฝ์ ๋ฐ๋ผ Hugging Face ํ ํฐ์ด ํ์ํ ์ ์๋ค.
export HF_TOKEN=hf_your_token_here
python alfred_first_agent.py๋ต์ด ์ฅํฉํ๊ฑฐ๋ ๋ถ์์ ํ ๋
- ์ง๋ฌธ์ ์งง๊ฒ ์ด๋ค.
max_steps๋ฅผ 4~5 ์ ๋๋ก ์ ํํ๋ค.- ์ฒ์์ ๊ณ์ฐ์ฒ๋ผ ์ ๋ต์ด ๋ถ๋ช ํ ํ์คํฌ๋ก ๊ฒ์ฆํ๋ค.
eval์ด ๋ถ๋ด๋ ๋
๊ทธ ์ฐ๋ ค๋ ๋ง๋ค. ์ด์ ํ๊ฒฝ์์๋ ์์ ํ ํ์๋ ๊ฒ์ฆ๋ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ฐ๊พธ๋ ํธ์ด ๋ซ๋ค. ์ฌ๊ธฐ์๋ ์์ด์ ํธ ๊ตฌ์กฐ ์ดํด์ฉ ์ต์ ์์ ๋ก๋ง ์ฌ์ฉํ๋ค.
์ถ์ฒ ํ์ต ์์
- ์ฝ์ค ์๊ฐ ํ์ด์ง๋ก ์ ์ฒด ๋ก๋๋งต ํ์ธ
- Unit 1์ ๊ธฐ๋ณธ ๊ฐ๋ ์ฝ๊ธฐ
smolagentsQuickstart ํ์ธ- ์ด ๊ธ ์ค์ต์ผ๋ก ์ฒซ ์์ด์ ํธ ์คํ
- ๋ค์ ๊ธ์์ ๋๊ตฌ ํ์ฅ ๋๋ ์ค์ตํธ์ผ๋ก ์ด๋
ํ ์ค ์์ฝ
HF Agents Course ๋ณธํธ 1์์ ๊ฐ์ฅ ์ค์ํ ์ฒซ ์ฑ๊ณต์ ์ฝ์ค ์ ์ฒด ์ง๋๋ฅผ ์ดํดํ๊ณ , ๋๊ตฌ๋ฅผ ์ฐ๋ ์ต์ ์์ด์ ํธ๋ฅผ ์ง์ ํ ๋ฒ ๋๋ ค๋ณด๋ ๊ฒ์ด๋ค.
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ก ์ด์์ ์์ฑํ ๋ค, Hugging Face Agents Course GitHub ์ ์ฅ์, ๊ณต์ ์ฝ์ค ํ์ด์ง, smolagents ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋์ด ์ฌํ ๋จ๊ณ, ๋ช
๋ น์ด, ์ฑ๊ณต ํ์ , ๋งํฌ ๊ตฌ์กฐ๋ฅผ ๊ฒํ ํด ํธ์งํ์ต๋๋ค.