๐Ÿค— 36. HF Agents Course ๋ณธํŽธ 1 - ์ฒซ smolagents ์—์ด์ „ํŠธ ๋งŒ๋“ค๊ธฐ

๋ชฉํ‘œ: ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋„ 15~20๋ถ„ ์•ˆ์— smolagents๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์—์ด์ „ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๋„๊ตฌ(์›น ๊ฒ€์ƒ‰)๊นŒ์ง€ ๋ถ™์—ฌ ๋ณธ๋‹ค.

1) ์™œ ์ด๊ฑธ ๋จผ์ € ํ•˜๋‚˜?

HF Agents Course์˜ ํ•ต์‹ฌ ํ๋ฆ„์€ ์ƒ๊ฐ(Thought) โ†’ ํ–‰๋™(Action) โ†’ ๊ด€์ฐฐ(Observation) ๋ฃจํ”„๋ฅผ ์‹ค์ œ๋กœ ๋‹ค๋ค„๋ณด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ฒซ ํŽธ์—์„œ๋Š” ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด smolagents๋กœ ๋ฃจํ”„๋ฅผ ๋ฐ”๋กœ ์ฒดํ—˜ํ•ฉ๋‹ˆ๋‹ค.

2) ์ „์ฒด ํ๋ฆ„ (Mermaid)

flowchart LR
    A[์‚ฌ์šฉ์ž ์งˆ๋ฌธ ์ž…๋ ฅ] --> B[CodeAgent]
    B --> C{๋„๊ตฌ ํ•„์š”?}
    C -- ์•„๋‹ˆ์˜ค --> D[๋‚ด๋ถ€ ์ถ”๋ก  ํ›„ ๋‹ต๋ณ€]
    C -- ์˜ˆ --> E[DuckDuckGoSearchTool ์‹คํ–‰]
    E --> F[๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ๊ด€์ฐฐ]
    F --> B
    D --> G[์ตœ์ข… ๋‹ต๋ณ€ ์ถœ๋ ฅ]

3) ์‹ค์Šต ์ค€๋น„

๋„๊ตฌ

  • Python 3.10+
  • ๊ฐ€์ƒํ™˜๊ฒฝ(venv)
  • ํ„ฐ๋ฏธ๋„

์ž…๋ ฅ(์‹ค์Šต ์งˆ๋ฌธ)

  • "2026๋…„์— ๊ณต๊ฐœ๋œ Hugging Face Agents Course์˜ ํ•ต์‹ฌ ๋ชฉํ‘œ 3๊ฐ€์ง€๋ฅผ ํ•œ๊ธ€๋กœ ์š”์•ฝํ•ด์ค˜"

์‹คํ–‰ ๋ช…๋ น

mkdir -p ~/hf-agents-part1 && cd ~/hf-agents-part1
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install "smolagents[toolkit]"

์„ฑ๊ณต ํŒ์ •

  • ์„ค์น˜ ์—๋Ÿฌ ์—†์ด ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ณต๊ท€ํ•œ๋‹ค.
  • python -c "import smolagents; print('ok')" ์‹คํ–‰ ์‹œ ok ์ถœ๋ ฅ.

4) ์ตœ์†Œ ์—์ด์ „ํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

app.py:

from smolagents import CodeAgent, InferenceClientModel, DuckDuckGoSearchTool
 
model = InferenceClientModel()  # HF Inference ๊ธฐ๋ฐ˜ ๊ธฐ๋ณธ ๋ชจ๋ธ ์‚ฌ์šฉ
agent = CodeAgent(
    tools=[DuckDuckGoSearchTool()],
    model=model,
)
 
query = "2026๋…„์— ๊ณต๊ฐœ๋œ Hugging Face Agents Course์˜ ํ•ต์‹ฌ ๋ชฉํ‘œ 3๊ฐ€์ง€๋ฅผ ํ•œ๊ธ€๋กœ ์š”์•ฝํ•ด์ค˜"
result = agent.run(query)
print(result)

5) ์‹คํ–‰

python app.py

์„ฑ๊ณต ํŒ์ •

  • ์—์ด์ „ํŠธ๊ฐ€ ๊ฒ€์ƒ‰ ๋„๊ตฌ๋ฅผ ํ˜ธ์ถœํ•œ ๋’ค ์ตœ์ข… ๋‹ต๋ณ€์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๋‹ต๋ณ€์— ์ตœ์†Œ 3๊ฐœ ํ•ญ๋ชฉ ์š”์•ฝ์ด ํฌํ•จ๋œ๋‹ค.

6) ์ดˆ๋ณด์ž ์ฒดํฌํฌ์ธํŠธ (๋ง‰ํžˆ๋Š” ์ง€์  ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐ)

  1. ImportError ๋ฐœ์ƒ
    โ†’ ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”(source .venv/bin/activate) ํ™•์ธ
  2. ๋ชจ๋ธ ํ˜ธ์ถœ/๊ถŒํ•œ ์—๋Ÿฌ
    โ†’ HF ํ† ํฐ ์„ค์ • ํ™•์ธ (export HF_TOKEN=...)
  3. ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ’ˆ์งˆ์ด ๋‚ฎ์Œ
    โ†’ ์งˆ๋ฌธ์„ ์ขํ˜€์„œ ์žฌ์งˆ๋ฌธ (์˜ˆ: โ€œUnit 1 ์ค‘์‹ฌ์œผ๋กœโ€)

7) ์‹ค๋ฌด ์ ์šฉ ํฌ์ธํŠธ

  • ๋ฆฌ์„œ์น˜ ์ดˆ์•ˆ ์ž๋™ํ™”: ์‚ฌ๋žŒ์ด ํ•˜๋˜ 1์ฐจ ์ž๋ฃŒ ํƒ์ƒ‰์„ ์—์ด์ „ํŠธ๊ฐ€ ๋จผ์ € ์ˆ˜ํ–‰.
  • ๋ฐ˜๋ณต ์—…๋ฌด ํ‘œ์ค€ํ™”: ๊ฐ™์€ ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋งค์ผ ๊ฐ™์€ ํ˜•์‹ ๊ฒฐ๊ณผ ์ƒ์‚ฐ.
  • ๊ฒ€์ฆ ๋ฃจํ”„ ์ถ”๊ฐ€ ์šฉ์ด: ๋‹ค์Œ ํŽธ์—์„œ ํ‰๊ฐ€/๋กœ๊ทธ๋ฅผ ๋ถ™์ด๋ฉด ํ’ˆ์งˆ ๊ด€๋ฆฌ๊นŒ์ง€ ํ™•์žฅ ๊ฐ€๋Šฅ.

8) ๋‹ค์Œ ํŽธ ์˜ˆ๊ณ 

๋‹ค์Œ ๋ณธํŽธ์—์„œ๋Š” ๋„๊ตฌ๋ฅผ 2๊ฐœ ์ด์ƒ ์—ฐ๊ฒฐํ•˜๊ณ , ์‹คํŒจ ์‹œ ์žฌ์‹œ๋„ ๊ทœ์น™(๊ฐ„๋‹จ ๊ฐ€๋“œ๋ ˆ์ผ)์„ ๋„ฃ์–ด ์‹ค๋ฌดํ˜• ์—์ด์ „ํŠธ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.


์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๊ณ ์ง€

์ด ๋ฌธ์„œ๋Š” ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ ๊ตฌ์กฐ์™€ ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ , ์ž‘์„ฑ์ž๊ฐ€ ์‹ค์Šต ์žฌํ˜„์„ฑยท๋งํฌ ์ •ํ™•์„ฑยท๋ฌธ์žฅ ํ‘œํ˜„์„ ๊ฒ€ํ† ํ•ด ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค.