๐ค 41. HF Agents Course ๋ณธํธ 1 - ์์ด์ ํธ๋ ์ด๋ป๊ฒ ์๊ฐํ๊ณ ๋๊ตฌ๋ฅผ ์ฐ๋๊ฐ
ํ ์ค ๋ชฉํ: Hugging Face Agents Course๊ฐ ๋งํ๋ ์์ด์ ํธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ ,
smolagents๋ก ๊ฐ์ฅ ์์ ์ฌํ ์ค์ต๊น์ง ๋๋ธ๋ค.
Hugging Face Agents Course์ Unit 1์ ์์ด์ ํธ๋ฅผ ๋จ์ํ โ๋๋ต ์ํ๋ ๋ชจ๋ธโ์ด ์๋๋ผ, ๋ชฉํ๋ฅผ ๋ฐ๊ณ ์๊ฐํ๊ณ ํ๋ํ๊ณ ๊ด์ฐฐ์ ๋ฐ์ํ๋ ์คํ ์ฃผ์ฒด๋ก ์ค๋ช
ํฉ๋๋ค. ์ด์ด์ง๋ Unit 2์์๋ ์ด ๊ตฌ์กฐ๋ฅผ smolagents, LangGraph, LlamaIndex ๊ฐ์ ํ๋ ์์ํฌ๋ก ๊ตฌํํฉ๋๋ค.
์ด๋ณด์ ๊ธฐ์ค์ผ๋ก๋ ์ด ํ ๊ฐ์ง๋ฅผ ๋จผ์ ์ก์ผ๋ฉด ๋ฉ๋๋ค.
- LLM์ ๋ต์ ์์ฑํ๋ค.
- ์์ด์ ํธ๋ ๋ต ์์ฑ + ๋๊ตฌ ์ฌ์ฉ + ์ค๊ฐ ํ๋จ๊น์ง ๋ฌถ๋๋ค.
- ๊ทธ๋์ ๊ฒ์, ๊ณ์ฐ, ํ์ผ ์ฒ๋ฆฌ์ฒ๋ผ ๋ชจ๋ธ ๋จ๋ ์ผ๋ก ๋ถ์์ ํ ์์ ์ ๋ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
HF Agents Course์์ ๋ณด๋ ์์ด์ ํธ์ ์ต์ ๊ตฌ์กฐ
flowchart LR G[์ฌ์ฉ์ ๋ชฉํ] --> T[Thought ๋ฌด์์ ํด์ผ ํ์ง?] T --> A[Action ๋๊ตฌ ํธ์ถ ๋๋ ์ฝ๋ ์คํ] A --> O[Observation ๊ฒฐ๊ณผ ํ์ธ] O --> D{๋ชฉํ ๋ฌ์ฑ?} D -- ์๋์ค --> T D -- ์ --> R[์ต์ข ์๋ต]
์ด ๋ฃจํ๊ฐ ์ค์ํ ์ด์ ๋ ๊ฐ๋จํฉ๋๋ค.
- Thought: ์ง๊ธ ๋ฌด์์ด ๋ถ์กฑํ์ง ํ๋จ
- Action: ๊ฒ์, ๊ณ์ฐ, ํจ์ ํธ์ถ ๊ฐ์ ์ค์ ํ๋ ์ํ
- Observation: ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ
- ๋ฐ๋ณต: ๋ชฉํ๋ฅผ ๋ฌ์ฑํ ๋๊น์ง ์กฐ์
์ค๋ฌด์์๋ ์ด ๊ตฌ์กฐ ๋๋ถ์ ์๋ ๊ฐ์ ์ผ์ด ๊ฐ๋ฅํด์ง๋๋ค.
- FAQ ๋ด์ด ๋ชจ๋ฅด๋ฉด ๋ฌธ์๋ฅผ ์ฐพ๊ณ ๋ตํ๊ธฐ
- ์ด์ ๋ด์ด ์ซ์๋ฅผ ์ง์ ๊ณ์ฐํ๊ณ ๋ณด๊ณ ํ๊ธฐ
- ๋ฆฌ์์น ๋ด์ด ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ ์์ฝํ๊ธฐ
์ smolagents๊ฐ ์
๋ฌธ์ฉ์ผ๋ก ์ข์๊ฐ
Hugging Face ๋ฌธ์ ๊ธฐ์ค์ผ๋ก smolagents๋ ์ ์ ์ฝ๋๋ก ์์ด์ ํธ ํต์ฌ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ก ๋ณผ ์ ์๋ ๊ฒฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ํนํ CodeAgent๋ ํ๋์ ์ฝ๋ ํํ๋ก ํํํ๋ฏ๋ก ๋ค์ ์ฅ์ ์ด ์์ต๋๋ค.
- ๊ณ์ฐ/์กฐ๊ฑด๋ฌธ/๋ฐ๋ณต๋ฌธ์ ์์ฐ์ค๋ฝ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋๊ตฌ ํธ์ถ ๊ณผ์ ์ ์ฝ๋์ฒ๋ผ ์ฝ์ ์ ์์
- โ๊ฒ์ โ ๊ณ์ฐ โ ์ ๋ฆฌโ ๊ฐ์ ๋ฉํฐ์คํ ์์ ์ ์งง์ ์์ ๋ก ์ฌํํ๊ธฐ ์ฌ์
์ค๋ ๋ฐ๋ก ํด๋ณด๋ 10๋ถ ์ค์ต
์๋ ์ค์ต์ โ์์ด์ ํธ๊ฐ ๊ณ์ฐ๊ธฐ๋ฅผ ๋๊ตฌ์ฒ๋ผ ์จ์ ๋ ์์ ์ ์ผ๋ก ๋ตํ๋คโ๋ ๊ฐ๊ฐ์ ์ตํ๊ธฐ ์ํ ์ต์ ์์ ์ ๋๋ค.
์ค๋น๋ฌผ
- Python 3.10+
- ํฐ๋ฏธ๋
- ์ธํฐ๋ท ์ฐ๊ฒฐ
- ๊ฐ์ํ๊ฒฝ(
venv) - ํ์ ์ Hugging Face ํ ํฐ (
HF_TOKEN)
Step 1) ์์ ํด๋ ๋ง๋ค๊ธฐ
์ ๋ ฅ
mkdir -p ~/hf-agents-course-ep1
cd ~/hf-agents-course-ep1์ฑ๊ณต ํ์
pwd- ๊ฒฐ๊ณผ ๊ฒฝ๋ก ๋์ด
hf-agents-course-ep1์ด๋ฉด ์ฑ๊ณต.
Step 2) ๊ฐ์ํ๊ฒฝ๊ณผ ํจํค์ง ์ค์น
์ ๋ ฅ
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install smolagents์ฑ๊ณต ํ์
python -c "import smolagents; print(smolagents.__name__)"smolagents๊ฐ ์ถ๋ ฅ๋๋ฉด ํต๊ณผ.
Step 3) ์ค์ต ์ฝ๋ ์์ฑ
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("27 ๊ณฑํ๊ธฐ 14๋ฅผ ๊ณ์ฐํ๊ณ , ๊ฒฐ๊ณผ๊ฐ ์ ๋ง๋์ง ํ ์ค๋ก ์ค๋ช
ํด์ค.")
print(result)์ฝ๋ ์ค๋ช
@tool: ์ผ๋ฐ Python ํจ์๋ฅผ ์์ด์ ํธ ๋๊ตฌ๋ก ๋ฑ๋กmultiply: ๋ชจ๋ธ์ด ์ง์ ์์ฐํ์ง ์๊ณ ํธ์ถํ ์ ์๋ ๊ณ์ฐ ๋๊ตฌInferenceClientModel(): Hugging Face Inference ๊ธฐ๋ฐ ๋ชจ๋ธ ์ฐ๊ฒฐCodeAgent(...): ํ์ํ๋ฉด ์ฝ๋๋ฅผ ์์ฑํด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ณ ๋ต์ ๊ตฌ์ฑ
Step 4) ์คํ
์คํ ๋ช ๋ น
python app.py์ฑ๊ณต ํ์
์๋ 3๊ฐ๋ฅผ ๋ชจ๋ ๋ง์กฑํ๋ฉด ์ฑ๊ณต์ ๋๋ค.
- ์คํ์ด ์๋ฌ ์์ด ๋๋๋ค.
- ์ถ๋ ฅ์
378์ด ํฌํจ๋๋ค. - ๋ต๋ณ์ ๊ณ์ฐ ๊ทผ๊ฑฐ๋ ์งง์ ์ค๋ช ์ด ํจ๊ป ๋์จ๋ค.
Step 5) ํ๋กฌํํธ๋ฅผ ๋ฐ๊ฟ ๋ฃจํ ํ์ธ
์ด๋ฒ์ app.py์ ๋ง์ง๋ง ์ค ์ง๋ฌธ์ ์๋์ฒ๋ผ ๋ฐ๊ฟ ๋ค์ ์คํํฉ๋๋ค.
์ ๋ ฅ
multiply ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ 19 ๊ณฑํ๊ธฐ 23์ ๊ณ์ฐํ๊ณ , ๋ง์ง๋ง์ ์ง์์ธ์ง ํ์์ธ์ง๋ ๋งํด์ค.์ฑ๊ณต ํ์
- ๊ฒฐ๊ณผ์
437์ด ํฌํจ๋๋ค. - ๋ง์ง๋ง์ ํ์๋ผ๊ณ ์ค๋ช ํ๋ค.
- ๋จ์ ์ซ์ ์ถ๋ ฅ์ด ์๋๋ผ, ๊ณ์ฐ ํ ํ๋จ๊น์ง ๋ถ๋๋ค.
์ด ์ค์ต์์ ๊ผญ ์ดํดํด์ผ ํ ํฌ์ธํธ
1) ์์ด์ ํธ๋ ๋ชจ๋ธ + ๋๊ตฌ + ๋ฃจํ๋ค
๋ชจ๋ธ ํ๋๋ง ์์ผ๋ฉด ๋ง์ ์ํ ์ ์์ด๋ ๊ณ์ฐ, ๊ฒ์, ์ธ๋ถ ์์คํ ์ ๊ทผ์ ํ๋ค๋ฆด ์ ์์ต๋๋ค. ์์ด์ ํธ๋ ์ฌ๊ธฐ์ ๋๊ตฌ์ ๋ฐ๋ณต ํ๋จ์ ๋ถ์ฌ ์คํ ๊ฐ๋ฅํ ์์คํ ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
2) ๋๊ตฌ๋ โ๋ฅ๋ ฅ ํ์ฅ ์ฌ๋กฏโ์ด๋ค
์ค๋์ multiply ํ๋๋ง ๋ถ์์ง๋ง, ์ค์ ๋ก๋ ์๋๋ก ํ์ฅ๋ฉ๋๋ค.
- ๊ฒ์ ๋๊ตฌ
- ์ฌ๋ด API ํธ์ถ ๋๊ตฌ
- ๋ฌธ์ ์ ์ฅ ๋๊ตฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ ๋๊ตฌ
3) ์ข์ ํ๋กฌํํธ๋ณด๋ค ์ข์ ๊ตฌ์กฐ๊ฐ ๋ ์ค์ํ ๋๊ฐ ๋ง๋ค
๊ณ์ฐ ๋ฌธ์ ๋ฅผ ๋ชจ๋ธ์๊ฒ โ์กฐ์ฌํด์ ๊ณ์ฐํดโ๋ผ๊ณ ๋งํ๋ ๊ฒ๋ณด๋ค, ๊ณ์ฐ ๋๊ตฌ๋ฅผ ๋ถ์ด๋ ํธ์ด ์ฌํ์ฑ๊ณผ ์์ ์ฑ์ด ๋์ต๋๋ค.
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
์ฝํ ์ธ /๋ฆฌ์์น ์์
- ๊ฒ์ ๋๊ตฌ + ์์ฝ ๋๊ตฌ๋ฅผ ๋ฌถ์ด ์กฐ์ฌ ์ด์ ์์ฑ
- ์ถ์ฒ ๋๋ฝ ์ฌ๋ถ๋ฅผ Observation ๋จ๊ณ์์ ์ ๊ฒ
์ด์ ์๋ํ
- ์งํ ์กฐํ ๋๊ตฌ + ๊ณ์ฐ ๋๊ตฌ + ์ฌ๋/ํ ๋ ๊ทธ๋จ ์ ์ก ๋๊ตฌ ์กฐํฉ
- ์๊ณ์น ์ด๊ณผ ์ ๋ค์ ์ก์ ๋ถ๊ธฐ ๊ฐ๋ฅ
์ฌ๋ด ์ง์๋ด
- ๋ฒกํฐ ๊ฒ์ ๋๋ ๋ฌธ์ ์กฐํ ๋๊ตฌ ์ฐ๊ฒฐ
- ๋ต๋ณ ์ ์ต์ ๋ฌธ์๋ฅผ ๋ค์ ํ์ธํ๋๋ก ๋ฃจํ ์ค๊ณ
์์ฃผ ๋งํ๋ ์ง์
ImportError ๋๋ ModuleNotFoundError
์์ธ:
- ๊ฐ์ํ๊ฒฝ ๋ฏธํ์ฑํ ๋๋ ์ค์น ์คํจ
ํด๊ฒฐ:
source .venv/bin/activate
pip install smolagents๋ชจ๋ธ ํธ์ถ ๊ถํ ์ค๋ฅ
์์ธ:
- ์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ์ธ์ฆ์ด ํ์ํ ์ ์์
ํด๊ฒฐ:
export HF_TOKEN=hf_your_token
python app.py๋๊ตฌ๋ฅผ ์ ์ ์ฐ๋ ๊ฒ์ฒ๋ผ ๋ณด์
์์ธ:
- ์ง๋ฌธ์ด ๋๋ฌด ๋จ์ํ๋ฉด ๋ชจ๋ธ์ด ์ง์ ๋ตํ๋ ค ํ ์ ์์
ํด๊ฒฐ:
- ํ๋กฌํํธ์
๋๊ตฌ๋ฅผ ์ฌ์ฉํด์๋ฅผ ๋ช ์ - ๊ณ์ฐ ๊ทผ๊ฑฐ, ๋จ๊ณ, ํ์ ์กฐ๊ฑด์ ํจ๊ป ์๊ตฌ
์์ฝ
HF Agents Course์ ์ด๋ฐ๋ถ์์ ๊ฐ์ฅ ๋จผ์ ์ตํ์ผ ํ ๊ฒ์ ํ๋ คํ ํ๋ ์์ํฌ๊ฐ ์๋๋๋ค. ์์ด์ ํธ๊ฐ ๋ชฉํ๋ฅผ ๋ฐ๊ณ , ํ์ํ ๋๊ตฌ๋ฅผ ์ฐ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ , ๋ค์ ํ๋จํ๋ ๋ฃจํ์ ๋๋ค. ์ด ๊ฐ๊ฐ๋ง ์กํ๋ฉด ๋ค์ ๋จ๊ณ์ ๊ฒ์ํ ์์ด์ ํธ, ์ฝ๋ ์คํํ ์์ด์ ํธ, ๋ฉํฐ์์ด์ ํธ ๊ตฌ์กฐ๋ ํจ์ฌ ์ฝ๊ฒ ์ดํด๋ฉ๋๋ค.
๋ค์์ ์ด์ด ๋ณด๋ฉด ์ข์ ์ฃผ์
CodeAgent์ToolCallingAgent์ฐจ์ด- ๊ฒ์ ๋๊ตฌ๋ฅผ ๋ถ์ธ ์ ๋ณด ํ์ํ ์์ด์ ํธ
- ๊ณ์ฐ๊ธฐ/ํ์ผ ์ ์ฅ ๋๊ตฌ๋ฅผ ๋ฌถ์ ์๋ํํ ์์ด์ ํธ
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์ ๊ตฌ์กฐ์ ์์ ์ค๋ช
์ ์์ฑํ๊ณ , Hugging Face Agents Course ์ ์ฅ์/์ฝ์ค ํ์ด์ง์ smolagents ๊ณต์ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋์ด ์ค์ต ๋จ๊ณ, ๋ช
๋ น, ์ฑ๊ณต ํ์ , ์ค๋ฌด ์ ์ฉ ํฌ์ธํธ๋ฅผ ๊ฒํ ํด ํธ์งํ์ต๋๋ค.