๐ค 44. HF Agents Course ๋ณธํธ 1 - ์ฝ์ค ๊ตฌ์กฐ ์ดํด๋ถํฐ ์ฒซ smolagents ๊ฒ์ฆ๊น์ง
ํ ์ค ๋ชฉํ: Hugging Face Agents Course์ ํ์ต ์งํ์ ๋จผ์ ์ก๊ณ ,
smolagents์ต์ ์์ ๋ฅผ ์ง์ ์คํํด ์์ด์ ํธ์ ๊ธฐ๋ณธ ๊ฐ๊ฐ์ ํ์ธํ๋ค.
Hugging Face Agents Course๋ ํฌ๊ฒ ๋ ๋จ๊ณ๋ก ์ดํดํ๋ฉด ํธํฉ๋๋ค.
- Unit 1์์ ์์ด์ ํธ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ตํ๋ค.
- Unit 2์์
smolagents, LlamaIndex, LangGraph ๊ฐ์ ํ๋ ์์ํฌ๋ก ์ค์ ๊ตฌํ์ ๋ฐฐ์ด๋ค.
์ด๋ณด์์๊ฒ ์ค์ํ ๊ฑด ์ฒ์๋ถํฐ ๋ณต์กํ ๋ฉํฐ์์ด์ ํธ ๊ตฌ์กฐ๋ฅผ ์ธ์ฐ๋ ๊ฒ ์๋๋๋ค. ๋จผ์ ์์ด์ ํธ๊ฐ ๋ชฉํ๋ฅผ ๋ฐ๊ณ , ํ์ํ๋ฉด ๋๊ตฌ๋ฅผ ์ฐ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๋ค์ ํ๋จํ๋ ํ๋ฆ์ ์์ผ๋ก ์ฌํํด๋ณด๋ ๊ฒ ํต์ฌ์
๋๋ค. ๊ทธ ์ถ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ๊ฐ๋ฒผ์ด ์ ํ์ง๊ฐ smolagents์
๋๋ค.
์ฝ์ค ์ ์ฒด์์ ์ค๋ ์์น ์ก๊ธฐ
GitHub ์ ์ฅ์์ ๊ณต์ ํ์ต ํ์ด์ง ๊ธฐ์ค์ผ๋ก ์ฝ์ค๋ ๋ค์ ํ๋ฆ์ผ๋ก ์ด์ด์ง๋๋ค.
flowchart TD A[HF Agents Course] --> B[Unit 0 ์จ๋ณด๋ฉ] A --> C[Unit 1 Agent Fundamentals] A --> D[Unit 2 Frameworks] A --> E[Unit 3 Use Cases] A --> F[Unit 4 Final Assignment] C --> C1[Thought / Action / Observation] D --> D1[smolagents] D --> D2[LlamaIndex] D --> D3[LangGraph] D1 --> G[์ฒซ ์คํ ์ค์ต]
์ฌ๊ธฐ์ ์ค๋ ์ค์ต์ Unit 1์ ๊ฐ๋
์ Unit 2์ smolagents๋ก ๋ฐ๋ก ํ์ธํ๋ ์ฐ๊ฒฐ ์ง์ ์ ํด๋นํฉ๋๋ค.
์ smolagents๋ถํฐ ์์ํ๋ฉด ์ข์๊ฐ
smolagents ๊ณต์ ๋ฌธ์๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ ์ฝ๋๋ก ์์ด์ ํธ๋ฅผ ๋ง๋ค๊ณ ์คํํ๊ธฐ ์ฌ์ด ์คํ์์ค Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ค๋ช
ํฉ๋๋ค. ์
๋ฌธ์ ๊ธฐ์ค ์ฅ์ ์ ์๋ 3๊ฐ์ง์
๋๋ค.
- ์ฝ๋ ์์ด ์์์ ์์ด์ ํธ ๊ตฌ์กฐ๊ฐ ๋์ ์ ๋ค์ด์จ๋ค.
CodeAgent์ค์ฌ ์์ ๊ฐ ๋ง์ ๋๊ตฌ ์ฌ์ฉ ํ๋ฆ์ ์ดํดํ๊ธฐ ์ฝ๋ค.- ๋์ค์ ๊ฒ์, ๊ณ์ฐ, ์ฌ๋ด ํจ์, ์ธ๋ถ API ํธ์ถ๋ก ํ์ฅํ๊ธฐ ์ข๋ค.
์ฆ, ์ฒ์์๋ โ์ ๋ง ์์ด์ ํธ๊ฐ ์ผ๋ฐ LLM ํธ์ถ๊ณผ ๋ญ๊ฐ ๋ค๋ฅด์ง?โ๋ฅผ ํ์ธํ๋ ๋ฐ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
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์ด ํฌํจ๋๋ค. - ๊ณ์ฐ ๊ฒฐ๊ณผ์ ์งง์ ์ค๋ช ์ด ํจ๊ป ๋ถ๋๋ค.
- ๋ค์ ์คํํด๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌํํ ์ ์๋ค.
Step 6) ์์ ๋ณํ์ผ๋ก ๋ฃจํ ๊ฐ๊ฐ ํ์ธ
์ง๋ฌธ๋ง ์๋์ฒ๋ผ ๋ฐ๊ฟ ๋ค์ ์คํํด๋ณด๋ฉด ์ข์ต๋๋ค.
์ ๋ ฅ
multiply ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ 19 ๊ณฑํ๊ธฐ 23์ ๊ณ์ฐํ๊ณ , ๋ง์ง๋ง์ ์ง์์ธ์ง ํ์์ธ์ง๋ ๋งํด์ค.์คํ ๋ช ๋ น
python app.py์ฑ๊ณต ํ์
- ๊ฒฐ๊ณผ์
437์ด ํฌํจ๋๋ค. - ๋ง์ง๋ง์ ํ์๋ผ๊ณ ์ค๋ช ํ๋ค.
- ๊ณ์ฐ ํ ํ๋จ๊น์ง ์ด์ด์ง๋ ํ๋ฆ์ด ๋ณด์ธ๋ค.
์ด ์ค์ต์์ ๊ผญ ์ดํดํ ํฌ์ธํธ
1) ์์ด์ ํธ๋ LLM ๋จ๋ ํธ์ถ๊ณผ ๋ค๋ฅด๋ค
LLM๋ง ์ฐ๋ฉด ๋ต์ ๋ง๋ค ์ ์์ง๋ง ๊ณ์ฐ, ๊ฒ์, ์ธ๋ถ ๋๊ตฌ ์ฌ์ฉ์ ํ๋ค๋ฆด ์ ์์ต๋๋ค. ์์ด์ ํธ๋ ์ฌ๊ธฐ์ ๋๊ตฌ ํธ์ถ๊ณผ ๋ฐ๋ณต ํ๋จ ๋ฃจํ๋ฅผ ๋ถ์ ๋๋ค.
2) ๋๊ตฌ๋ ์ ํ๋์ ์ฌํ์ฑ์ ๋์ธ๋ค
์ค๋์ multiply ํ๋๋ง ๋ถ์์ง๋ง, ์ค๋ฌด์์๋ ์๋์ฒ๋ผ ๋ฐ๋ก ํ์ฅ๋ฉ๋๋ค.
- ๊ฒ์ ๋๊ตฌ
- ์ฌ๋ด API ํธ์ถ ํจ์
- ๋ฌธ์ ์ ์ฅ ํจ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ ํจ์
3) ์ข์ ๊ตฌ์กฐ๊ฐ ์ข์ ํ๋กฌํํธ๋ณด๋ค ๋ ์ค์ํ ๋๊ฐ ๋ง๋ค
โ์ ํํ๊ฒ ๊ณ์ฐํด์คโ๋ผ๊ณ ์ฌ๋ฌ ๋ฒ ๋งํ๋ ๊ฒ๋ณด๋ค, ๊ณ์ฐ ํจ์๋ฅผ ๋๊ตฌ๋ก ์ ๊ณตํ๋ ํธ์ด ๋ ์์ ์ ์ ๋๋ค.
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
๋ฆฌ์์น ์๋ํ
- ๊ฒ์ ๋๊ตฌ + ์์ฝ ๋๊ตฌ๋ฅผ ์ฐ๊ฒฐํด ์ด์ ์์ฑ
- Observation ๋จ๊ณ์์ ์ถ์ฒ ๋๋ฝ ์ฌ๋ถ ์ ๊ฒ
์ด์ ๋ฆฌํฌํธ ์๋ํ
- ์งํ ์กฐํ ํจ์ + ๊ณ์ฐ ํจ์ + ๋ฉ์์ง ์ ์ก ํจ์ ๊ฒฐํฉ
- ์๊ณ์น ์ด๊ณผ ์ ํ์ ์ก์ ๋ถ๊ธฐ
์ฌ๋ด ์ง์ ์์ด์ ํธ
- ๋ฌธ์ ๊ฒ์ ๋๊ตฌ๋ฅผ ๋ถ์ฌ ์ต์ ๋ฌธ์๋ฅผ ํ์ธํ ๋ค ๋ต๋ณ
- ํ๋ฆฌ๋ฉด ๋น์ฉ์ด ํฐ ์์ญ์ผ์๋ก ๋๊ตฌ ๊ธฐ๋ฐ ์ค๊ณ๋ฅผ ์ฐ์
์์ฃผ ๋งํ๋ ๋ฌธ์
ModuleNotFoundError๊ฐ ๋ ๋
source .venv/bin/activate
pip install 'smolagents[toolkit]'๊ฐ์ํ๊ฒฝ์ด ๋นํ์ฑ ์ํ์ผ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
๋ชจ๋ธ ํธ์ถ ๊ถํ ์ค๋ฅ๊ฐ ๋ ๋
export HF_TOKEN=hf_your_token
python app.py์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ์ธ์ฆ์ด ํ์ํ ์ ์์ต๋๋ค.
๋๊ตฌ๋ฅผ ์ ์ ์ฐ๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ๋
ํ๋กฌํํธ์ ์๋์ฒ๋ผ ๋ช ์ํ๋ฉด ๋์์ด ๋ฉ๋๋ค.
๋๊ตฌ๋ฅผ ์ฌ์ฉํด์๊ณ์ฐ ๊ทผ๊ฑฐ๋ฅผ ํจ๊ป ์ค๋ช ํด์ค๋ง์ง๋ง์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฐํด์ค
์์ฝ
HF Agents Course ๋ณธํธ 1ํธ์์ ๋จผ์ ๊ฐ์ ธ๊ฐ์ผ ํ ๊ฐ๊ฐ์ ํ๋์
๋๋ค. ์์ด์ ํธ๋ ๋ต๋ณ ์์ฑ๊ธฐ๊ฐ ์๋๋ผ, ๋ชฉํ ๋ฌ์ฑ์ ์ํด ๋๊ตฌ๋ฅผ ์ฐ๋ ์คํ ๋ฃจํ๋ผ๋ ์ ์
๋๋ค. smolagents๋ ์ด ๊ตฌ์กฐ๋ฅผ ์์ฃผ ์งง์ ์ฝ๋๋ก ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์
๋ฌธ ์ค์ต์ผ๋ก ์ ํฉํฉ๋๋ค.
๋ค์ ํธ์์ ์ด์ด๊ฐ๊ธฐ ์ข์ ์ฃผ์
CodeAgent์ToolCallingAgent์ฐจ์ด- ๊ฒ์ ๋๊ตฌ๋ฅผ ๋ถ์ธ ์ ๋ณด ํ์ํ ์์ด์ ํธ
- ๊ณ์ฐ๊ธฐ + ๊ฒ์๊ธฐ ์กฐํฉ์ผ๋ก ๋ฉํฐ์คํ ํ์คํฌ ํ๊ธฐ
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์ ๊ตฌ์กฐ์ ์ค๋ช
๋ฌธ์ฅ์ ์ ๋ฆฌํ๊ณ , Hugging Face Agents Course GitHub ์ ์ฅ์ยท๊ณต์ ํ์ต ํ์ด์งยทsmolagents ๊ณต์ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋์ด ๋จ๊ณ, ๋ช
๋ น, ์ฑ๊ณต ํ์ , ์ค๋ฌด ์ ์ฉ ํฌ์ธํธ๋ฅผ ๊ฒํ ํด ํธ์งํ์ต๋๋ค.