๐ค 47. HF Agents Course ๋ณธํธ 1 - Unit 1 ์ ๋ฌธ๊ณผ Alfred ์ฒซ ์์ด์ ํธ ์ ์ฒด ํ๋ฆ
๋ชฉํ: Hugging Face Agents Course์ Unit 1์ด ๋ฌด์์ ๊ฐ๋ฅด์น๋์ง ๋จผ์ ์ก๊ณ ,
smolagents๋ก Alfred ์คํ์ผ์ ์ฒซ ์์ด์ ํธ๋ฅผ ์ง์ ์คํํด ์์ด์ ํธ์ ๊ธฐ๋ณธ ์๋ ๋ฐฉ์์ ์์ผ๋ก ํ์ธํ๋ค.
๊ณต์ ์ฝ์ค ๊ธฐ์ค์ผ๋ก HF Agents Course๋ ๊ธฐ์ด ๊ฐ๋ โ ํ๋ ์์ํฌ โ ์ค์ ์ ์ค์ผ์ด์ค โ ์ต์ข ๊ณผ์ ์ 4๊ฐ ํฐ ์ถ์ผ๋ก ์งํ๋๋ค. ๊ทธ์ค Unit 1์ ๊ฐ์ฅ ์ค์ํ๋ค. ์ฌ๊ธฐ์ ์์ด์ ํธ๊ฐ ๋ฌด์์ธ์ง, LLM์ด ์ด๋ค ์ญํ ์ ํ๋์ง, ๋๊ตฌ๋ฅผ ์ด๋ป๊ฒ ๋ถ์ด๋์ง, Think โ Act โ Observe ๋ฃจํ๊ฐ ์ ํ์ํ์ง๋ฅผ ์ดํดํด์ผ ๋ค์ smolagentsยทLangGraphยทLlamaIndex ํํธ๊ฐ ์ฌ์์ง๋ค.
๊ณต์ Unit 1 ์๊ฐ๋ ๋ง์ง๋ง์ Alfred๋ผ๋ ์ฒซ ์์ด์ ํธ๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ํ๋ค. ์ฆ, ์ด ๋จ์์ ์ด๋ก ๋ง ์ฝ๋ ํํธ๊ฐ ์๋๋ผ ๊ฐ๋ ์ ๋ฐ๋ก ์คํ์ผ๋ก ์ฐ๊ฒฐํ๋ ์ ๋ฌธ ์ค์ต ๋จ์์ด๋ค.
๋จผ์ ํฐ ๊ทธ๋ฆผ๋ถํฐ
- GitHub ์ ์ฅ์: ์ฝ์ค ์ ์ฒด๊ฐ 4๊ฐ ์ ๋๊ณผ ๋ณด๋์ค ์ ๋์ผ๋ก ๊ตฌ์ฑ๋จ์ ๋ณด์ฌ์ค๋ค.
- ์ฝ์ค ์๊ฐ ํ์ด์ง: ๊ธฐ์ด ์ด๋ก , ํธ์ฆ์จ, ๊ณผ์ , ์ฑ๋ฆฐ์ง ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋ค.
- Unit 1 ์๊ฐ: ์์ด์ ํธ, LLM, ๋๊ตฌ, Think-Act-Observe, Alfred ์ฒซ ์์ด์ ํธ๋ฅผ ํต์ฌ ํ์ต ๋ชฉํ๋ก ๋๋ค.
- smolagents ๋ฌธ์: ์ ์ ์ฝ๋๋ก
CodeAgent๋ฅผ ๋ง๋ค๊ณ ๋๊ตฌ๋ฅผ ๋ถ์ผ ์ ์์์ ๋ณด์ฌ์ค๋ค.
Unit 1์์ ์ค์ ๋ก ๋ฐฐ์ฐ๋ ๊ฒ
1) ์์ด์ ํธ๋ ๋ฌด์์ธ๊ฐ
์์ด์ ํธ๋ ๋จ์ํ ํ ์คํธ๋ฅผ ์ด์ด์ ์ฐ๋ ์ฑ๋ด์ด ์๋๋ค. ๋ชฉํ๋ฅผ ๋ฐ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์๊ฐํ๊ณ , ๋๊ตฌ๋ฅผ ํธ์ถํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๊ด์ฐฐํ ๋ค ๋ค์ ํ๋์ ๊ฒฐ์ ํ๋ ์คํ ์ฃผ์ฒด์ ๊ฐ๊น๋ค.
2) LLM์ ์์ด์ ํธ์ ๋ ์ญํ ์ ํ๋ค
๊ณต์ ์ฝ์ค๋ LLM์ ์์ด์ ํธ์ โbrainโ์ผ๋ก ์ค๋ช ํ๋ค. ๋ค๋ง LLM ํผ์๋ง์ผ๋ก๋ ์ธ๋ถ ์ธ๊ณ์ ์ํธ์์ฉํ๊ธฐ ์ด๋ ต๋ค. ๊ทธ๋์ ๊ณ์ฐ, ๊ฒ์, ํ์ผ ์ฝ๊ธฐ ๊ฐ์ ์์ ์ ๋๊ตฌ(tool) ๊ฐ ๋งก๊ณ , LLM์ ์ด๋ค ๋๊ตฌ๋ฅผ ์ธ์ ์ธ์ง ๊ฒฐ์ ํ๋ค.
3) Think โ Act โ Observe ๋ฃจํ๊ฐ ํต์ฌ์ด๋ค
์์ด์ ํธ๋ ๋ณดํต ์๋ ํ๋ฆ์ผ๋ก ์์ง์ธ๋ค.
flowchart LR U[์ฌ์ฉ์ ๋ชฉํ] --> T[Think ๋ฌธ์ ํด์ยท๊ณํ] T --> A[Act ๋๊ตฌ ํธ์ถยท์ฝ๋ ์คํ] A --> O[Observe ๊ฒฐ๊ณผ ํ์ธ] O --> D{๋ชฉํ ๋ฌ์ฑ?} D -- ์๋์ค --> T D -- ์ --> R[์ต์ข ๋ต๋ณ]
์ด ๋ฃจํ๋ฅผ ์ดํดํ๋ฉด ์ดํ ํ๋ ์์ํฌ๋ฅผ ๋ฐ๊ฟ๋ ๋ณธ์ง์ ๊ฑฐ์ ๊ฐ๋ค.
4) ์ฒซ ์์ด์ ํธ ์ค์ต์ ์๋ฏธ
Unit 1์ ๊ฒฐ๊ตญ โ๊ฐ๋ ์ ์๋ ๊ฒโ๋ณด๋ค ์์ ์ฑ๊ณต ๊ฒฝํ์ ๋ง๋๋ ๊ฒ์ ๊ฐ๊น๋ค. Alfred ๊ฐ์ ๊ฐ๋จํ ์์ด์ ํธ๋ฅผ ํ ๋ฒ ๋๋ ค๋ณด๋ฉด,
- LLM์ด ์ด๋๊น์ง ์ค์ค๋ก ํด๊ฒฐํ๋์ง
- ์ด๋ค ์๊ฐ์ ๋๊ตฌ๊ฐ ํ์ํ์ง
- ์ถ๋ ฅ์ด ์ ๊ฐ๋ ๋ถ์์ ํ์ง
- ํ๋กฌํํธ์ ๋๊ตฌ ์ค๊ณ๊ฐ ์ ์ค์ํ์ง
๋ฅผ ๊ฐ์ผ๋ก ์ดํดํ๊ฒ ๋๋ค.
์ด๋ฒ ๊ธ์์ ๋ง๋ค ๊ฒ
์๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ ๋ฌธ์ฉ Alfred ์์ด์ ํธ๋ฅผ ๋ง๋ ๋ค.
- ์ ๋ ฅ: ๊ฐ๋จํ ์ง๋ฌธ 2๊ฐ
- ๋๊ตฌ: ๊ณ์ฐ๊ธฐ 1๊ฐ
- ์์ด์ ํธ:
smolagents.CodeAgent - ์ฑ๊ณต ๊ธฐ์ค: ๊ณ์ฐ์ด ํ์ํ ์ง๋ฌธ์์ ๋๊ตฌ๋ฅผ ํ์ฉํด ์์ ์ ์ผ๋ก ์ ๋ต์ ๋ธ๋ค.
์ค๋น๋ฌผ
- Python 3.10+
- ํฐ๋ฏธ๋
- ์ธํฐ๋ท ์ฐ๊ฒฐ
- ์ ํ: Hugging Face ํ ํฐ(
HF_TOKEN)
์ค์ต: Alfred ์คํ์ผ ์ฒซ ์์ด์ ํธ ๋ง๋ค๊ธฐ
Step 1) ์์ ํด๋ ๋ง๋ค๊ธฐ
์ ๋ ฅ
mkdir -p ~/hf-agents-course-unit1-alfred
cd ~/hf-agents-course-unit1-alfred์ฑ๊ณต ํ์
pwd- ๊ฒฝ๋ก ๋์ด
hf-agents-course-unit1-alfred๋ฉด ํต๊ณผ.
Step 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-ok')"smolagents-ok๊ฐ ์ถ๋ ฅ๋๋ฉด ํต๊ณผ.
Step 3) ์์ด์ ํธ ์ฝ๋ ์์ฑ
alfred_first_agent.py ํ์ผ์ ๋ง๋ค๊ณ ์๋ ์ฝ๋๋ฅผ ๋ฃ๋๋ค.
from smolagents import CodeAgent, InferenceClientModel, tool
@tool
def calculator(expression: str) -> str:
"""Safely evaluate a simple arithmetic expression.
Args:
expression: Arithmetic 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 = [
"7 * (13 + 5)๋ ์ผ๋ง์ผ? ๊ณ์ฐ ๊ณผ์ ์ ์งง๊ฒ ์ค๋ช
ํด์ค.",
"23.5์ 19.8์ ํฉ์ ๊ตฌํ๊ณ , 2๋ก ๋๋ ๊ฐ์ ์๋ ค์ค."
]
for i, question in enumerate(questions, start=1):
print(f"\n=== Question {i} ===")
print(f"INPUT: {question}")
answer = agent.run(question)
print("OUTPUT:")
print(answer)์ฝ๋์์ ๊ผญ ๋ณผ ํฌ์ธํธ
@tool: ํ์ด์ฌ ํจ์๋ฅผ ์์ด์ ํธ๊ฐ ์ธ ์ ์๋ ๋๊ตฌ๋ก ๋ฐ๊พผ๋ค.CodeAgent: ํ์ํ๋ฉด ์ฝ๋ ํํ๋ก ํ๋์ ๊ตฌ์ฑํด ๋๊ตฌ๋ฅผ ํธ์ถํ๋ค.InferenceClientModel(): Hugging Face ์ถ๋ก ๋ชจ๋ธ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฐ๊ฒฐํ๋ค.max_steps=5: ๋ฌดํ ๋ฃจํ๋ฅผ ๋ง๋ ์ต์ ์์ ์ฅ์น๋ค.
Step 4) ์ฒซ ์คํ
์คํ ๋ช ๋ น
python alfred_first_agent.py์ฑ๊ณต ํ์
์๋ 4๊ฐ๋ฅผ ๋ง์กฑํ๋ฉด ์ฑ๊ณต์ด๋ค.
- ์คํ์ด ์์ธ ์์ด ๋๋๋ค.
=== Question 1 ===๊ณผ=== Question 2 ===๊ฐ ์ถ๋ ฅ๋๋ค.- ๋ ์ง๋ฌธ ๋ชจ๋ ์ซ์ ๊ฒฐ๊ณผ๊ฐ ํฌํจ๋๋ค.
- ์ ์ด๋ ๊ณ์ฐ์ด ํ์ํ ์ง๋ฌธ์์ ๋๊ตฌ ์ฌ์ฉ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ ๋ต์ด ๋์จ๋ค.
Step 5) ๋๊ตฌ ์๋ ๋ฒ์ ๊ณผ ๋น๊ตํ๊ธฐ
์ด๋ฒ์๋ ๋๊ตฌ๋ฅผ ์ ๊ฑฐํด ์ฐจ์ด๋ฅผ ๋ณธ๋ค.
์ ๋ ฅ
tools=[calculator]๋ฅผ tools=[]๋ก ๋ฐ๊พผ๋ค.
์คํ ๋ช ๋ น
python alfred_first_agent.py์ฑ๊ณต ํ์
- ๊ฐ์ ์ง๋ฌธ์ ๋ํด ๋ต๋ณ ํ์ง ์ฐจ์ด๋ฅผ ๊ด์ฐฐํ ์ ์๋ค.
- ๊ณ์ฐ ์ค๋ช ์ด ๋ ๋ชจํธํด์ง๊ฑฐ๋, ์ซ์ ์ ๋ขฐ๋๊ฐ ๋ฎ์์ง ์ ์๋ค.
- ์ด ์ฐจ์ด๋ฅผ ํ์ธํ๋ฉด โ์ ์์ด์ ํธ์ ๋๊ตฌ๋ฅผ ๋ถ์ด๋๊ฐโ๊ฐ ์ดํด๋๋ค.
Step 6) ์ค๋ฌดํ ์ง๋ฌธ์ผ๋ก ๋ฐ๊ฟ๋ณด๊ธฐ
์ง๋ฌธ์ ์๋์ฒ๋ผ ๋ฐ๊ฟ ๋ค์ ์คํํด๋ณธ๋ค.
์ ๋ ฅ
questions = [
"๊ด๊ณ ํด๋ฆญ๋ฅ ์ด 2.4%์ด๊ณ ๋
ธ์ถ์ด 12500ํ๋ฉด ํด๋ฆญ ์๋ ๋ช ํ์ผ?",
"์ ๊ตฌ๋
๋ฃ 19๋ฌ๋ฌ ์ํ์ 37๋ช
์ด ์ฐ๋ฉด ์ ๋งค์ถ์ ์ผ๋ง์ผ?"
]์คํ ๋ช ๋ น
python alfred_first_agent.py์ฑ๊ณต ํ์
- ํด๋ฆญ ์, ๋งค์ถ ๊ฐ์ ์ค๋ฌด ์ซ์๊ฐ ๊ณ์ฐ๋๋ค.
- ๋๊ตฌ๊ฐ ๋จ์ ๋ฐ๋ชจ๊ฐ ์๋๋ผ ์ ๋ฌด ๋ณด์กฐ์ ๋ฐ๋ก ์ฐ๊ฒฐ๋จ์ ํ์ธํ ์ ์๋ค.
์ด๋ณด์ ๊ธฐ์ค์ผ๋ก ์ดํดํ๋ฉด ์ข์ ํต์ฌ
์์ด์ ํธ๋ โ์๊ฐ๋ง ํ๋ ๋ชจ๋ธโ์ด ์๋๋ค
์ค์ํ ๊ฑด ๋ง ์ํ๋ ๊ฒ๋ณด๋ค ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์ธ๋ถ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋๋ค.
๋๊ตฌ๋ ์ ๋ต๋ฅ ์ ๋์ด์ฌ๋ฆฌ๋ ์์ ์ฅ์น๋ค
ํนํ ๊ณ์ฐ, ๊ฒ์, ํ์ผ ์ฒ๋ฆฌ์ฒ๋ผ ํ๋ฆฌ๋ฉด ๋ฐ๋ก ํฐ ๋๋ ์์ ์ ๋๊ตฌ ๋ถ๋ฆฌ๊ฐ ์ ๋ฆฌํ๋ค.
์์ ๋๊ตฌ 1๊ฐ๋ก๋ ํ์ต ํจ๊ณผ๊ฐ ํฌ๋ค
์ฒ์๋ถํฐ ์น๊ฒ์, ํ์ผ์์คํ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค ๋ถ์ผ ํ์ ์๋ค. ๊ณ์ฐ๊ธฐ 1๊ฐ๋ง ๋ถ์ฌ๋ ์์ด์ ํธ ์ฌ๊ณ ๋ฐฉ์์ ์ดํดํ๊ธฐ ์ถฉ๋ถํ๋ค.
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
1) ์ด์ ์งํ ์์ฝ ๋ด
- CTR, CVR, ROAS, ๋งค์ถ ํฉ๊ณ์ฒ๋ผ ๊ณ์ฐ์ด ํ์ํ ๋ง์ผํ ๋ฆฌํฌํธ์ ๋ฐ๋ก ์์ฉ ๊ฐ๋ฅํ๋ค.
2) ๊ณ ๊ฐ ์๋ ์ ์ฒ๋ฆฌ
- ์๋ด ์ ์ ์ฃผ๋ฌธ ๊ธ์ก, ํ ์ธ์จ, ๋จ์ ๊ธฐ๊ฐ์ ๋จผ์ ๊ณ์ฐํด ๋ถ์ด๋ ๋ณด์กฐ ์์ด์ ํธ๋ก ํ์ฅํ ์ ์๋ค.
3) ๋ด๋ถ ์ ๋ฌด ์๋ํ์ ์ฒซ ๋ฐํ
- ์ฒ์์ ๊ณ์ฐ๊ธฐ ๋๊ตฌ 1๊ฐ
- ๋ค์์ CSV ์ฝ๊ธฐ ๋๊ตฌ
- ๊ทธ๋ค์์ API ํธ์ถ ๋๊ตฌ
์ด ์์๋ก ํค์ฐ๋ฉด ์คํจ ํ๋ฅ ์ด ๋ฎ๋ค.
์์ฃผ ๋งํ๋ ์ง์
1) ModuleNotFoundError: No module named 'smolagents'
source .venv/bin/activate
which python
python -m pip install "smolagents[toolkit]"2) ์ธ์ฆ ๋๋ ์ถ๋ก ํธ์ถ ์ค๋ฅ
๊ณต์ ๋ฌธ์์ InferenceClientModel()์ Hugging Face ์ถ๋ก ํ๊ฒฝ์ ์ฐ๋ฏ๋ก, ์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ์ธ์ฆ์ด ํ์ํ ์ ์๋ค.
export HF_TOKEN=hf_your_token_here
python alfred_first_agent.py3) ๋๊ตฌ๊ฐ ํธ์ถ๋์ง ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ๋
- ์ง๋ฌธ์ ๋ ๊ณ์ฐ ์ค์ฌ์ผ๋ก ๋ฐ๊พผ๋ค.
- ์ซ์์ ์ฐ์ฐ์ด ๋ถ๋ช ํ ๋ฌธ์ ๋ฅผ ๋ฃ๋๋ค.
max_steps๋ฅผ ๋๋ฌด ๋ฎ๊ฒ ์ก์ง ์๋๋ค.
4) ๊ณ์ฐ๊ธฐ ๋๊ตฌ๊ฐ ๋๋ฌด ์ํํด ๋ณด์ผ ๋
์ด๋ฒ ์ฝ๋๋ ์
๋ฌธ์ฉ ์์๋ค. ์ค์ ์ด์์์๋ eval ๋์ ํ์ ๊ธฐ๋ฐ ๊ณ์ฐ๊ธฐ๋ก ๋ฐ๊พธ๋ ํธ์ด ๋ ์์ ํ๋ค. ๋ค๋ง ๊ณต์ smolagents ๋ฌธ์๊ฐ ๊ฐ์กฐํ๋ฏ, ํต์ฌ์ ์ ์ ์ฝ๋๋ก ์์ด์ ํธ ๊ตฌ์กฐ๋ฅผ ๋จผ์ ์ดํดํ๋ ๊ฒ์ด๋ค.
๊ณต์ ์๋ฃ์ ์ฐ๊ฒฐํด์ ๋ณด๋ฉด ์ข์ ์์
- ์ฝ์ค ์๊ฐ ํ์ด์ง์์ ์ ์ฒด ๊ตฌ์กฐ ํ์ธ
- Unit 1 ์๊ฐ์์ ํ์ต ๋ชฉํ ํ์ธ
- smolagents Quickstart๋ก ์ต์ ์ฝ๋ ํจํด ์ตํ๊ธฐ
- ์ Alfred ์์ ๋ฅผ ์ง์ ์คํ
- ์ดํ Unit 2 ํ๋ ์์ํฌ ๋น๊ต๋ก ๋์ด๊ฐ๊ธฐ
ํ ์ค ์ ๋ฆฌ
HF Agents Course ๋ณธํธ 1์ ํต์ฌ์ โ์์ด์ ํธ๋ ๋ฌด์์ธ๊ฐโ๋ฅผ ์ถ์์ ์ผ๋ก ์ดํดํ๋ ๋ฐ์ ๋๋์ง ์๋๋ค. LLM + ๋๊ตฌ + Think-Act-Observe ๋ฃจํ๋ฅผ ์์ ์ฝ๋๋ก ์ง์ ๋๋ ค๋ณด๋ฉฐ, ์ดํ ๋ชจ๋ ํ๋ ์์ํฌ ํ์ต์ ๊ณตํต ๋ผ๋๋ฅผ ๋ชธ์ ์ตํ๋ ๊ฒ์ด ์ง์ง ๋ชฉํ๋ค.
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์๊ณผ ์์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , Hugging Face Agents Course GitHub ์ ์ฅ์ยท๊ณต์ ์ฝ์ค ์๊ฐยทUnit 1 ์๊ฐยทsmolagents ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋์ด ์ฌํ ๋จ๊ณ, ์คํ ๋ช ๋ น, ์ฑ๊ณต ํ์ , ๋งํฌ ๋ฐ์ ํญ๋ชฉ์ ๊ฒํ ํด ํธ์งํ์ต๋๋ค.