๐ค 42. HF Agents Course ๋ณธํธ 1 - Hugging Face ์์ด์ ํธ ํ์ต ์งํ๊ณผ ์ฒซ smolagents ์คํ
ํ ์ค ๋ชฉํ: Hugging Face Agents Course๊ฐ ์ด๋ค ์์๋ก ์์ด์ ํธ๋ฅผ ๊ฐ๋ฅด์น๋์ง ์ก๊ณ ,
smolagents๋ก ๊ฐ์ฅ ์์ ์์ด์ ํธ๋ฅผ ์ง์ ์คํํด ๋ณธ๋ค.
Hugging Face Agents Course๋ ํฌ๊ฒ ๋ ์ถ์ผ๋ก ์งํ๋ฉ๋๋ค.
- Unit 1์์ ์์ด์ ํธ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๋ค.
- Unit 2์์
smolagents, LangGraph, LlamaIndex ๊ฐ์ ํ๋ ์์ํฌ๋ก ์ค์ ๊ตฌํ์ ๋ฐฐ์ด๋ค.
์
๋ฌธ์๋ผ๋ฉด ๋จผ์ โ์์ด์ ํธ๋ ๊ฒฐ๊ตญ ๋ชฉํ๋ฅผ ๋ฐ๊ณ โ ์๊ฐํ๊ณ โ ๋๊ตฌ๋ฅผ ์ฐ๊ณ โ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ โ ๋ค์ ํ๋จํ๋ ๋ฃจํโ๋ผ๋ ๊ฐ๊ฐ์ ์ก๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฐ๊ฐ์ ๊ฐ์ฅ ์งง๊ฒ ํ์ธํ๊ธฐ ์ข์ ๋๊ตฌ๊ฐ smolagents์
๋๋ค.
์ฝ์ค ์ ์ฒด์์ ๋ณธ ์ค๋ ์์น
- GitHub ์ ์ฅ์ ๊ธฐ์ค์ผ๋ก ์ฝ์ค๋ Unit 0~4์ ๋ณด๋์ค ์ ๋์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ฝ์ค ์๊ฐ ํ์ด์ง ๊ธฐ์ค์ผ๋ก Unit 1์ Agent Fundamentals, Unit 2๋ Frameworks์ ๋๋ค.
smolagents๊ณต์ ๋ฌธ์๋ ์ด ํ๋ฆ ์ค โ๊ฐ๋ฒผ์ด ์ฒซ ๊ตฌํโ์ ๊ฐ์ฅ ์ ๋ง๋ ์ ๋ฌธ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
flowchart TD A[HF Agents Course] --> B[Unit 1 Agent Fundamentals] A --> C[Unit 2 Frameworks] B --> B1[Thought / Action / Observation ์ดํด] B --> B2[๋๊ตฌ์ ๋ฉ์์ง ํ์ ์ดํด] C --> C1[smolagents] C --> C2[LangGraph] C --> C3[LlamaIndex] C1 --> D[์ฒซ ์์ด์ ํธ ์คํ]
ํต์ฌ์ ์ด๊ฒ๋๋ค.
- Unit 1์ด ์ ์์ด์ ํธ๊ฐ ํ์ํ์ง๋ฅผ ์ค๋ช ํ๋ค๋ฉด,
smolagents๋ ๊ทธ๊ฒ์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์์ ์กํ๊ฒ ๋ง๋๋ ๋๊ตฌ์ ๋๋ค.
์ smolagents๋ถํฐ ์์ํ๋ฉด ์ข์๊ฐ
smolagents ๊ณต์ ๋ฌธ์๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ โ์ ์ ์ฝ๋๋ก ์์ด์ ํธ๋ฅผ ๋ง๋ค๊ณ ์คํํ๊ธฐ ์ฌ์ด ์คํ์์ค Python ๋ผ์ด๋ธ๋ฌ๋ฆฌโ๋ก ์ค๋ช
ํฉ๋๋ค. ์ด๋ณด์ ๊ธฐ์ค ์ฅ์ ์ ์ธ ๊ฐ์ง์
๋๋ค.
- ์ฝ๋ ์์ด ์ ์ด์ ๊ตฌ์กฐ๊ฐ ๋์ ๋ณด์ธ๋ค.
CodeAgent๋ก ๊ณ์ฐ, ์กฐ๊ฑด ๋ถ๊ธฐ, ๋๊ตฌ ์ฌ์ฉ ํ๋ฆ์ ์ดํดํ๊ธฐ ์ฝ๋ค.- ๋์ค์ ๊ฒ์ ๋๊ตฌ, ์ฌ๋ด ํจ์, API ํธ์ถ๋ก ํ์ฅํ๊ธฐ ์ข๋ค.
์ฆ, ์ฒ์๋ถํฐ ๋ณต์กํ ์ค์ผ์คํธ๋ ์ด์ ๋ณด๋ค ์์ด์ ํธ์ ์ต์ ๋ฃจํ๋ฅผ ์ดํดํ๋ ๋ฐ ์ ํฉํฉ๋๋ค.
15๋ถ ์ค์ต: ์ฒซ smolagents ์์ด์ ํธ ์คํ
์๋ ์ค์ต์ ๊ณต์ smolagents Quickstart ํ๋ฆ์ ๋ฐํ์ผ๋ก, ํ๊ตญ์ด ํ์ต์ฉ์ผ๋ก ์ฌํ ๋จ๊ณ๋ฅผ ๋ ์๊ฒ ๋๋ ๋ฒ์ ์
๋๋ค.
์ค๋น๋ฌผ
- Python 3.10 ์ด์
- ํฐ๋ฏธ๋
- ์ธํฐ๋ท ์ฐ๊ฒฐ
- Hugging Face ๊ณ์
- ํ์ ์
HF_TOKEN
Step 1) ์์ ํด๋ ์์ฑ
๋๊ตฌ
- ํฐ๋ฏธ๋
์ ๋ ฅ
mkdir -p ~/hf-agents-course-ep1
cd ~/hf-agents-course-ep1์ฑ๊ณต ํ์
pwd- ์ถ๋ ฅ ๊ฒฝ๋ก ๋์ด
hf-agents-course-ep1์ด๋ฉด ์ฑ๊ณต.
Step 2) ๊ฐ์ํ๊ฒฝ ์์ฑ๊ณผ ํจํค์ง ์ค์น
๋๊ตฌ
- Python
venv pip
์ ๋ ฅ
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๊ฐ ์ถ๋ ฅ๋๋ฉด ์ฑ๊ณต.
Step 3) ์ฒซ ์์ด์ ํธ ์ฝ๋ ์์ฑ
ํ์ผ
app.py
์ ๋ ฅ
from smolagents import CodeAgent, InferenceClientModel
model = InferenceClientModel()
agent = CodeAgent(tools=[], model=model)
result = agent.run("1๋ถํฐ 10๊น์ง์ ํฉ์ ๊ณ์ฐํด์ค.")
print(result)์ค๋ช
InferenceClientModel()์ Hugging Face Inference ๊ธฐ๋ฐ ๋ชจ๋ธ ์ฐ๊ฒฐ์ ๋๋ค.CodeAgent๋ ํ์ํ๋ฉด ์ฝ๋๋ฅผ ์จ์ ๋ฌธ์ ๋ฅผ ํ๋๋ค.- ์ฌ๊ธฐ์๋ ๋๊ตฌ ์์ด๋ ์์ ๊ณ์ฐ์ ์ํํ๋ ๊ฐ์ฅ ๋จ์ํ ํํ๋ฅผ ๋จผ์ ํ์ธํฉ๋๋ค.
Step 4) ์คํ
์คํ ๋ช ๋ น
python app.py์ฑ๊ณต ํ์
์๋๋ฅผ ๋ง์กฑํ๋ฉด ๋ฉ๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ์๋ฌ ์์ด ์ข ๋ฃ๋๋ค.
- ์ถ๋ ฅ์
55๋๋ ๊ทธ์ ํด๋นํ๋ ์ค๋ช ์ด ํฌํจ๋๋ค. - โ์์ด์ ํธ๊ฐ ๋ต์ ์์ฑํ๋คโ๋ ์ต์ ์คํ ํ์ธ์ด ๋๋ค.
Step 5) ๋๊ตฌ๋ฅผ ๋ถ์ฌ ์์ด์ ํธ ๋๋ ๊ฐํ
์ด์ ๊ฐ์ ํด๋์์ app.py๋ฅผ ์๋์ฒ๋ผ ๋ฐ๊ฟ๋๋ค.
์ ๋ ฅ
from smolagents import CodeAgent, InferenceClientModel, tool
@tool
def multiply(a: int, b: int) -> int:
"""Multiply two integers.
Args:
a: first integer
b: second integer
"""
return a * b
model = InferenceClientModel()
agent = CodeAgent(tools=[multiply], model=model)
result = agent.run("multiply ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ 27 ๊ณฑํ๊ธฐ 14๋ฅผ ๊ณ์ฐํ๊ณ ํ ์ค ์ค๋ช
์ ๋ง๋ถ์ฌ์ค.")
print(result)์ฑ๊ณต ํ์
python app.py- ์ถ๋ ฅ์
378์ด ํฌํจ๋๋ค. - ๋๊ตฌ ์ฌ์ฉ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ค๋ช ์ด ๋ถ๋๋ค.
- ๊ฐ์ ๊ณ์ฐ์ ๋ค์ ์คํํด๋ ๊ฒฐ๊ณผ๊ฐ ์์ ์ ์ผ๋ก ์ฌํ๋๋ค.
์ด ์ค์ต์์ ๊ผญ ์ก์์ผ ํ ๊ฐ๋
1) ์์ด์ ํธ๋ LLM ๋จ๋ ์ฌ์ฉ๊ณผ ๋ค๋ฅด๋ค
LLM๋ง ์ฐ๋ฉด ๋ต๋ณ ์์ฑ์ ๊ฐ๋ฅํ์ง๋ง, ๊ณ์ฐ์ด๋ ์ธ๋ถ ์ ๋ณด ์ ๊ทผ์ ํ๋ค๋ฆด ์ ์์ต๋๋ค. ์์ด์ ํธ๋ ์ฌ๊ธฐ์ ๋๊ตฌ ํธ์ถ๊ณผ ๋ฐ๋ณต ํ๋จ ๋ฃจํ๋ฅผ ๋ถ์ ๋๋ค.
2) ๋๊ตฌ๋ ์ ํ๋์ ์ฌํ์ฑ์ ์ฌ๋ฆฌ๋ ์ฅ์น๋ค
multiply๋ ๋จ์ํ์ง๋ง ์ค๋ฌด์์ ์๋์ฒ๋ผ ํ์ฅ๋ฉ๋๋ค.
- ๊ฒ์ ๋๊ตฌ
- ์ฌ๋ด API ํธ์ถ ํจ์
- ๋ฌธ์ ์ ์ฅ ํจ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ ํจ์
3) ์ข์ ๊ตฌ์กฐ๊ฐ ์ข์ ํ๋กฌํํธ๋ฅผ ์ด๊ธธ ๋๊ฐ ๋ง๋ค
โ์ ํํ ๊ณ์ฐํด์คโ๋ผ๊ณ ์ฌ๋ฌ ๋ฒ ๋งํ๋ ๊ฒ๋ณด๋ค, ๊ณ์ฐ ํจ์๋ฅผ ๋๊ตฌ๋ก ์ ๊ณตํ๋ ์ชฝ์ด ํจ์ฌ ์์ ์ ์ ๋๋ค.
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
๋ฆฌ์์น ์๋ํ
- ๊ฒ์ ๋๊ตฌ + ์์ฝ ๋๊ตฌ๋ฅผ ์ฐ๊ฒฐํด ์ด์ ์์ฑ
- Observation ๋จ๊ณ์์ ์ถ์ฒ ๋๋ฝ ์ฌ๋ถ ์ ๊ฒ
์ด์ ๋ฆฌํฌํธ ์๋ํ
- ์งํ ์กฐํ ํจ์ + ๊ณ์ฐ ํจ์ + ๋ฉ์์ง ์ ์ก ํจ์ ๊ฒฐํฉ
- ์๊ณ์น ์ด๊ณผ ์ ํ์ ์ก์ ๋ถ๊ธฐ
์ฌ๋ด ์ง์ ์์ด์ ํธ
- ๋ฌธ์ ๊ฒ์ ๋๊ตฌ๋ฅผ ๋ถ์ฌ ์ต์ ๋ฌธ์ ํ์ธ ํ ๋ต๋ณ
- ํ๋ฆด ์ํ์ด ํฐ ์์ญ์ผ์๋ก ๋๊ตฌ ๊ธฐ๋ฐ ์ค๊ณ๋ฅผ ์ฐ์
์์ฃผ ๋งํ๋ ๋ฌธ์
์ค์น๋ ๋๋๋ฐ import ์ค๋ฅ๊ฐ ๋ ๋
source .venv/bin/activate
pip install 'smolagents[toolkit]'๊ฐ์ํ๊ฒฝ์ด ํ์ฑํ๋์ง ์์์ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
๋ชจ๋ธ ํธ์ถ ๊ถํ ์ค๋ฅ๊ฐ ๋ ๋
export HF_TOKEN=hf_your_token
python app.py์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ์ธ์ฆ์ด ํ์ํ ์ ์์ต๋๋ค.
๋๊ตฌ๋ฅผ ์ ์ ์ฐ๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ๋
ํ๋กฌํํธ์ ์๋์ฒ๋ผ ๋ช ์ํฉ๋๋ค.
๋๊ตฌ๋ฅผ ์ฌ์ฉํด์๊ณ์ฐ ๊ทผ๊ฑฐ๋ฅผ ํจ๊ป ์ค๋ช ํด์ค๋ง์ง๋ง์ ๊ฒฐ๊ณผ ๊ฒ์ฆ๋ ํด์ค
์์ฝ
HF Agents Course ์ด๋ฐ๋ถ๋ฅผ ๋ฐ๋ผ๊ฐ ๋ ๊ฐ์ฅ ์ค์ํ ์ฒซ ๊ฐ๊ฐ์ โ์์ด์ ํธ๋ ๊ฒฐ๊ตญ ๋ต๋ณ ์์ฑ๊ธฐ๊ฐ ์๋๋ผ ๋ชฉํ ๋ฌ์ฑ์ ์ํด ๋๊ตฌ๋ฅผ ์ฐ๋ ์คํ ๋ฃจํโ๋ผ๋ ์ ์
๋๋ค. smolagents๋ ์ด ๊ตฌ์กฐ๋ฅผ ๊ฐ์ฅ ์งง์ ์ฝ๋๋ก ํ์ธํ๊ฒ ํด ์ฃผ๋ฏ๋ก, ๋ณธํธ 1ํธ์ ์ถ๋ฐ์ ์ผ๋ก ์์ฃผ ์ข์ต๋๋ค.
๋ค์ ํธ์์ ์ด์ด๊ฐ๊ธฐ ์ข์ ์ฃผ์
CodeAgent์ToolCallingAgent์ฐจ์ด- ๊ณ์ฐ๊ธฐ/๊ฒ์๊ธฐ ๋๊ตฌ๋ฅผ ํจ๊ป ๋ถ์ธ ๋ฉํฐ์คํ ์์ด์ ํธ
- ์์ด์ ํธ๊ฐ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๋ค์ ํ๋์ ๋ฐ๊พธ๋ ๋ฐฉ์
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์ ๊ตฌ์กฐ์ ์ค๋ช
๋ฌธ์ฅ์ ์ ๋ฆฌํ๊ณ , Hugging Face Agents Course GitHub ์ ์ฅ์ยท๊ณต์ ํ์ต ํ์ด์งยทsmolagents ๊ณต์ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋์ด ๋จ๊ณ, ๋ช
๋ น, ์ฑ๊ณต ํ์ , ์ค๋ฌด ์ ์ฉ ํฌ์ธํธ๋ฅผ ๊ฒํ ํด ํธ์งํ์ต๋๋ค.