๐ค 39. HF Agents Course ๋ณธํธ 1 - ์์ด์ ํธ์ ํต์ฌ ๋ฃจํ์ ์ฒซ smolagents ์คํ
๋ชฉํ: HF Agents Course ๋ณธํธ 1์ ํต์ฌ์ธ ์์ด์ ํธ ๋ฃจํ(Thought โ Action โ Observation) ๋ฅผ ์ดํดํ๊ณ ,
smolagents๋ก ์ฒซ ์คํ ๊ฐ๋ฅํ ์์ด์ ํธ๋ฅผ ์ง์ ๋์ด๋ค.
Hugging Face Agents Course๋ Unit 1์์ ์์ด์ ํธ์ ๊ธฐ๋ณธ ๊ฐ๋
์, Unit 2.1์์ smolagents ๊ฐ์ ํ๋ ์์ํฌ ์ค์ต์ ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ณด์๋ผ๋ฉด ์ด ๋์ ํ ๋ฒ์ ๋ฌถ์ด์ ์ดํดํ๋ ํธ์ด ํจ์ฌ ์ฝ์ต๋๋ค.
1. ์ด๋ฒ ํธ์์ ๊ผญ ์ก์์ผ ํ ๊ฐ๋
์์ด์ ํธ๋ ๊ทธ๋ฅ ๋ต๋ง ์์ฑํ๋ ์ฑ๋ด์ด ์๋๋ผ, ํ์ํ๋ฉด ๋๊ตฌ๋ฅผ ์ฐ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ , ๋ค์ ํ๋จํ๋ ์คํ ์ฃผ์ฒด์ ๋๋ค.
ํต์ฌ ๊ตฌ์ฑ์ 4๊ฐ์ ๋๋ค.
- Thought: ์ง๊ธ ๋ฌด์์ ํด์ผ ํ๋์ง ํ๋จ
- Action: ๋๊ตฌ ์คํ
- Observation: ๋๊ตฌ ๊ฒฐ๊ณผ ํ์ธ
- Final Answer: ์ต์ข ์๋ต ์ ๋ฆฌ
์ฆ, โ์๊ฐ๋ง ํ๋ ๋ชจ๋ธโ์ด ์๋๋ผ โ์๊ฐํ๊ณ ํ๋ํ๋ ๋ชจ๋ธโ๋ก ๋ณด๋ ๊ฒ์ด HF Agents Course์ ์ถ๋ฐ์ ์ ๋๋ค.
2. ์ ์ฒด ํ๋ฆ ํ๋์ ๋ณด๊ธฐ
flowchart LR U[์ฌ์ฉ์ ์์ฒญ] --> T[Thought: ๋ฌธ์ ๋ฅผ ์ชผ๊ฐฌ] T --> Q{๋๊ตฌ๊ฐ ํ์ํ๊ฐ?} Q -- ์๋์ค --> A[๋ฐ๋ก ๋ต๋ณ ์์ฑ] Q -- ์ --> X[Action: ๊ฒ์/๊ณ์ฐ ๋ฑ ๋๊ตฌ ์คํ] X --> O[Observation: ๊ฒฐ๊ณผ ํ์ธ] O --> T A --> F[Final Answer]
์ค๋ฌด์์๋ ์ด ๋ฃจํ ๋๋ถ์ ๋ค์์ด ๊ฐ๋ฅํด์ง๋๋ค.
- ์ต์ ์ ๋ณด๊ฐ ํ์ํ ๋ ๊ฒ์ ๋๊ตฌ ์ฌ์ฉ
- ๊ณ์ฐ ์ค์๋ฅผ ์ค์ด๊ธฐ ์ํด ์ฝ๋ ์คํ ์ฌ์ฉ
- ์ฌ๋ฌ ๋จ๊ณ ์์ ์ ์์๋๋ก ์ฒ๋ฆฌ
3. ์ค์ต ๋ชฉํ
์ด๋ฒ ์ค์ต์์๋ ์๋ 2๊ฐ์ง๋ฅผ ํ์ธํฉ๋๋ค.
smolagents๊ฐ ์ ์ ์ค์น๋๋์ง- ๊ฒ์ ๋๊ตฌ๊ฐ ๋ถ์
CodeAgent๊ฐ ์ค์ ๋ก ์๋ตํ๋์ง
4. ์ค์ต ์ค๋น
์ค๋น ๋๊ตฌ
- Python 3.10 ์ด์
- ํฐ๋ฏธ๋
- Hugging Face ๊ณ์ (๊ถ์ฅ)
- ์ธํฐ๋ท ์ฐ๊ฒฐ
์ค์ต ์ ๋ ฅ
์๋ ์ง๋ฌธ์ผ๋ก ์คํํฉ๋๋ค.
Hugging Face Agents Course์ ๋ชฉ์ 3๊ฐ์ง๋ฅผ ํ๊ตญ์ด๋ก ์์ฝํด์ค. ํ์ํ๋ฉด ๊ฒ์์ ์ฌ์ฉํด.
์์ ํด๋ ๋ง๋ค๊ธฐ
mkdir -p ~/hf-agents-course-part1
cd ~/hf-agents-course-part1๊ฐ์ํ๊ฒฝ ๋ฐ ํจํค์ง ์ค์น
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install "smolagents[toolkit]"์ฑ๊ณต ํ์
์๋ ๋ช
๋ น์ด ok๋ฅผ ์ถ๋ ฅํ๋ฉด ์ค๋น ์๋ฃ์
๋๋ค.
python -c "import smolagents; print('ok')"5. ์ฒซ smolagents ์์ด์ ํธ ๋ง๋ค๊ธฐ
app.py ํ์ผ์ ๋ง๋ค๊ณ ์๋ ์ฝ๋๋ฅผ ๋ฃ์ต๋๋ค.
from smolagents import CodeAgent, DuckDuckGoSearchTool, InferenceClientModel
model = InferenceClientModel()
agent = CodeAgent(
tools=[DuckDuckGoSearchTool()],
model=model,
)
query = "Hugging Face Agents Course์ ๋ชฉ์ 3๊ฐ์ง๋ฅผ ํ๊ตญ์ด๋ก ์์ฝํด์ค. ํ์ํ๋ฉด ๊ฒ์์ ์ฌ์ฉํด."
result = agent.run(query)
print(result)์ฝ๋ ์ค๋ช
InferenceClientModel(): Hugging Face Inference ๊ธฐ๋ฐ ๋ชจ๋ธ ์ฐ๊ฒฐDuckDuckGoSearchTool(): ์น ๊ฒ์ ๋๊ตฌ ์ถ๊ฐCodeAgent(...): ํ์ ์ ์ฝ๋/๋๊ตฌ๋ฅผ ์กฐํฉํด ๋ฌธ์ ํด๊ฒฐagent.run(query): ์ค์ ์คํ
6. ์คํ ๋ช ๋ น
python app.py์ฑ๊ณต ํ์
์๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ์ฑ๊ณต์ ๋๋ค.
- ์๋ฌ ์์ด ์คํ ์๋ฃ
- ๋ต๋ณ์ ์ฝ์ค ๋ชฉ์ ์ด ์ต์ 3๊ฐ ํญ๋ชฉ์ผ๋ก ์ ๋ฆฌ๋จ
- ํ์ ์ ๊ฒ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ํ์ ์ด ๋ก๊ทธ์ ๋ํ๋จ
7. ์์ฃผ ๋งํ๋ ๋ฌธ์ ์ ํด๊ฒฐ
1) ModuleNotFoundError
์์ธ: ๊ฐ์ํ๊ฒฝ์ด ๊บผ์ ธ ์๊ฑฐ๋ ์ค์น๊ฐ ์ ๋จ
ํด๊ฒฐ:
source .venv/bin/activate
pip install "smolagents[toolkit]"2) ๋ชจ๋ธ ํธ์ถ ๊ด๋ จ ์ธ์ฆ ์ด์
์์ธ: ํ๊ฒฝ์ ๋ฐ๋ผ Hugging Face ํ ํฐ์ด ํ์ํ ์ ์์
ํด๊ฒฐ ์์:
export HF_TOKEN=hf_xxx3) ๊ฒ์ ํ์ง์ด ์ ๋งคํจ
์์ธ: ์ง๋ฌธ์ด ๋๋ฌด ๋์
ํด๊ฒฐ: ์์ฒญ์ ๋ ๊ตฌ์ฒดํํฉ๋๋ค.
- ์:
Unit 1 ๊ธฐ์ค์ผ๋ก ํต์ฌ ํ์ต ๋ชฉํ 3๊ฐ์ง๋ง ์ ๋ฆฌํด์ค.
8. ์ด๋ณด์ ๊ธฐ์ค์ผ๋ก ์ดํดํด์ผ ํ ํฌ์ธํธ
์ฌ๊ธฐ์ ์ค์ํ ๊ฑด โ์ ๋ต ํ์งโ๋ณด๋ค ์๋ ๊ตฌ์กฐ๋ฅผ ๋์ผ๋ก ํ์ธํ๋ ๊ฒ์ ๋๋ค.
ํนํ ์ฒซ ์ค์ต์์๋ ์๋๋ฅผ ๊ผญ ์ฒดํฌํ์ธ์.
- ๋ชจ๋ธ์ด ํผ์ ๋ตํ๋์ง
- ๋๊ตฌ๊ฐ ํ์ํ ์๊ฐ์ ๊ฒ์์ ํธ์ถํ๋์ง
- ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ต์ข ๋ต์ ๋ค์ ์ ๋ฆฌํ๋์ง
์ด 3๊ฐ๋ฅผ ์ดํดํ๋ฉด ์ดํ ๊ณ์ฐ๊ธฐ, ์ฝ๋ ์คํ, ๋ฉํฐํด ์ฐ๊ฒฐ๋ก ์์ฐ์ค๋ฝ๊ฒ ๋์ด๊ฐ ์ ์์ต๋๋ค.
9. ์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
์ฝํ ์ธ ๋ฆฌ์์น ์๋ํ
์ด์ ์์ฑ์ ์์ํ๊ธฐ ์ ์ ์์ด์ ํธ๊ฐ ๊ด๋ จ ์๋ฃ๋ฅผ ๋จผ์ ๋ชจ์ผ๊ฒ ํ ์ ์์ต๋๋ค.
์ด์ ๋งค๋ด์ผ ๋ณด์กฐ
๋ฌธ์ ๊ฒ์ ๋๊ตฌ๋ฅผ ๋ถ์ด๋ฉด ์ฌ๋ด ์ํค๋ ์ ํ ๋ฌธ์๋ฅผ ๋จผ์ ์ฐพ๊ณ ์์ฝํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฐ๋ณต ์ง๋ฌธ ๋์
๋งค๋ฒ ๋น์ทํ ์ง๋ฌธ์ ๋ฐ๋ ํ์ด๋ผ๋ฉด ๊ฒ์ + ์์ฝํ ์์ด์ ํธ๋ก 1์ฐจ ์๋ต ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.
10. ์ด๋ฒ ํธ ํ ์ค ์ ๋ฆฌ
HF Agents Course ๋ณธํธ 1์ ํต์ฌ์ ์ด๋ ต์ง ์์ต๋๋ค.
์์ด์ ํธ๋ โ์๊ฐ โ ๋๊ตฌ ์คํ โ ๊ฒฐ๊ณผ ํ์ธ โ ๋ต๋ณโ ๋ฃจํ๋ฅผ ๋๋ ์์คํ
์ด๊ณ , smolagents๋ ๊ทธ ๋ฃจํ๋ฅผ ๊ฐ์ฅ ์งง๊ฒ ์ฒดํํ๊ธฐ ์ข์ ์ถ๋ฐ์ ์
๋๋ค.
11. ๋ค์ ํธ ์๊ณ
๋ค์ ๋ณธํธ์์๋ CodeAgent์ ๊ณ์ฐ๊ธฐ ๊ฐ์ ๋ช
์์ ๋๊ตฌ๋ฅผ ๋ถ์ฌ, โ๋ง์ ๊ทธ๋ด๋ฏํ์ง๋ง ๊ณ์ฐ์ ํ๋ฆฌ๋โ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ์ค์ด๋์ง ์ด์ด์ ๋ค๋ฃน๋๋ค.
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ฅผ ํ์ฉํด ์ด์ ๊ตฌ์กฐ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์ค์ ๊ณต๊ฐ ์๋ฃ(Hugging Face Agents Course ์ ์ฅ์/์ฝ์ค ํ์ด์ง/smolagents ๋ฌธ์)๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋์ด ์ฌํ ๋จ๊ณ, ์ค๋ช , ๋งํฌ ๊ตฌ์ฑ์ ๊ฒํ ํด ํธ์งํ์ต๋๋ค.