๐Ÿค— 37. HF Agents Course ์‹ค์ŠตํŽธ 1 - ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋กœ ReAct ์—์ด์ „ํŠธ ๋งŒ๋“ค๊ธฐ

์ด๋ฒˆ ์‹ค์Šต์€ smolagents๋กœ โ€œ์งˆ๋ฌธ โ†’ ์›น ๊ฒ€์ƒ‰ โ†’ ๊ณ„์‚ฐ โ†’ ๋‹ต๋ณ€โ€ ํ๋ฆ„์„ ๊ฐ–๋Š” ๋ฏธ๋‹ˆ ์—์ด์ „ํŠธ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•ด๋ณด๋Š” 1ํŽธ์ž…๋‹ˆ๋‹ค.

์‹ค์Šต ๋ชฉํ‘œ

  • ReAct ์Šคํƒ€์ผ ๋„๊ตฌ ํ˜ธ์ถœ ํ๋ฆ„ ์ดํ•ด
  • ์ตœ์†Œ 2๊ฐœ ๋„๊ตฌ๋ฅผ ๊ฐ€์ง„ ์—์ด์ „ํŠธ ์‹คํ–‰
  • ์‹คํŒจ ๋กœ๊ทธ๋ฅผ ์ฝ๊ณ  ๋ณต๊ตฌํ•˜๋Š” ์Šต๊ด€ ๋งŒ๋“ค๊ธฐ

์•„ํ‚คํ…์ฒ˜(์š”์•ฝ)

flowchart TD
    U[์‚ฌ์šฉ์ž ์งˆ๋ฌธ] --> A[CodeAgent]
    A --> T1[DuckDuckGoSearchTool]
    A --> T2[Python ์‹คํ–‰ ๋„๊ตฌ]
    T1 --> A
    T2 --> A
    A --> R[์ตœ์ข… ๋‹ต๋ณ€]

์ค€๋น„๋ฌผ

  • Python 3.10+
  • ๊ฐ€์ƒํ™˜๊ฒฝ(venv)
  • ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ
  • (์„ ํƒ) Hugging Face ํ† ํฐ

Step 1) ์ž‘์—… ํด๋” ๋ฐ ํ™˜๊ฒฝ ์ค€๋น„

์ž…๋ ฅ

mkdir -p ~/tmp/hf-agents-lab01 && cd ~/tmp/hf-agents-lab01
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install smolagents duckduckgo-search

์„ฑ๊ณต ํŒ์ •

  • pip show smolagents๊ฐ€ ์ •์ƒ ์ถœ๋ ฅ๋œ๋‹ค.

Step 2) ์—์ด์ „ํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

lab01_agent.py ํŒŒ์ผ ์ƒ์„ฑ:

from smolagents import CodeAgent, DuckDuckGoSearchTool
 
agent = CodeAgent(
    tools=[DuckDuckGoSearchTool()],
    model="Qwen/Qwen2.5-Coder-32B-Instruct",
)
 
question = "์„œ์šธ๊ณผ ๋„์ฟ„์˜ ํ˜„์žฌ ์‹œ์ฐจ๋ฅผ ํ™•์ธํ•˜๊ณ , ๋„์ฟ„๊ฐ€ ์„œ์šธ๋ณด๋‹ค ๋ช‡ ์‹œ๊ฐ„ ๋น ๋ฅธ์ง€ ํ•œ ์ค„๋กœ ์„ค๋ช…ํ•ด์ค˜."
result = agent.run(question)
print(result)

๋ชจ๋ธ ๋ฌธ์ž์—ด์€ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ/์›๊ฒฉ ์„ค์ •์— ๋งž์ถฐ ๋Œ€์ฒดํ•˜์„ธ์š”.

Step 3) ์‹คํ–‰

์‹คํ–‰ ๋ช…๋ น

python lab01_agent.py

์„ฑ๊ณต ํŒ์ •

  • ์ฝ˜์†”์— โ€œ๋„์ฟ„๊ฐ€ ์„œ์šธ๋ณด๋‹ค X์‹œ๊ฐ„ ๋น ๋ฆ„/๊ฐ™์Œโ€ ํ˜•ํƒœ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
  • ์‹คํ–‰ ์ค‘ ๊ฒ€์ƒ‰ ๋„๊ตฌ ํ˜ธ์ถœ ๋กœ๊ทธ(Thought/Action ๊ณ„์—ด)๊ฐ€ ๋ณด์ธ๋‹ค.

Step 4) ๊ฒ€์ฆ ์งˆ๋ฌธ 2๊ฐœ ๋” ์‹คํ–‰

์งˆ๋ฌธ์„ ์•„๋ž˜๋กœ ๋ฐ”๊ฟ” 2ํšŒ ์ถ”๊ฐ€ ์‹คํ–‰:

  1. โ€œ๋Œ€ํ•œ๋ฏผ๊ตญ ๊ธฐ์ค€ ์˜ฌํ•ด๊ฐ€ ์œค๋…„์ธ์ง€ ๊ณ„์‚ฐ ๊ทผ๊ฑฐ์™€ ํ•จ๊ป˜ ์•Œ๋ ค์ค˜.โ€
  2. โ€œ100๋‹ฌ๋Ÿฌ๋ฅผ ์›ํ™”๋กœ ๋Œ€๋žต ํ™˜์‚ฐํ•  ๋•Œ ์ฃผ์˜ํ•  ์  2๊ฐ€์ง€๋ฅผ ๋งํ•ด์ค˜.โ€

์„ฑ๊ณต ํŒ์ •

  • ๋„๊ตฌ ํ˜ธ์ถœ ํ›„, ๊ทผ๊ฑฐ๊ฐ€ ํฌํ•จ๋œ ๋‹ต์ด ๋‚˜์˜จ๋‹ค.
  • ๊ณ„์‚ฐ/๊ฒ€์ƒ‰์ด ํ•„์š”ํ•œ ์งˆ๋ฌธ์—์„œ ๋‹จ๋‹ต๋งŒ ๋‚ด์ง€ ์•Š๋Š”๋‹ค.

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (์ž์ฃผ ๋ง‰ํžˆ๋Š” 4๊ฐ€์ง€)

  1. ModuleNotFoundError: smolagents
  • ์›์ธ: venv ๋ฏธํ™œ์„ฑํ™” ๋˜๋Š” ์„ค์น˜ ์‹คํŒจ
  • ํ•ด๊ฒฐ:
    • source .venv/bin/activate
    • pip install smolagents
  1. ๋ชจ๋ธ ํ˜ธ์ถœ ์‹คํŒจ(๊ถŒํ•œ/์—”๋“œํฌ์ธํŠธ ์˜ค๋ฅ˜)
  • ์›์ธ: ํ˜„์žฌ ํ™˜๊ฒฝ์—์„œ ํ•ด๋‹น ๋ชจ๋ธ ์ ‘๊ทผ ๋ถˆ๊ฐ€
  • ํ•ด๊ฒฐ:
    • smolagents ๋ฌธ์„œ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ๋กœ ๊ต์ฒด
    • ํ•„์š”ํ•œ ๊ฒฝ์šฐ HF ํ† ํฐ ์„ค์ • ํ›„ ์žฌ์‹คํ–‰
  1. ๊ฒ€์ƒ‰ ๋„๊ตฌ ํƒ€์ž„์•„์›ƒ/๋นˆ ๊ฒฐ๊ณผ
  • ์›์ธ: ๋„คํŠธ์›Œํฌ ์ด์Šˆ, ์งˆ์˜๊ฐ€ ๋„ˆ๋ฌด ๋ชจํ˜ธํ•จ
  • ํ•ด๊ฒฐ:
    • ์งˆ๋ฌธ์„ ๊ตฌ์ฒดํ™”(์‹œ๊ฐ„๋Œ€/๊ตญ๊ฐ€/๋‹จ์œ„ ๋ช…์‹œ)
    • ์žฌ์‹œ๋„ ์ „ ๋„คํŠธ์›Œํฌ ํ™•์ธ
  1. ํ•œ๊ตญ์–ด ์งˆ๋ฌธ์—์„œ ์žฅํ™ฉํ•˜๊ฑฐ๋‚˜ ํ‹€๋ฆฐ ๋‹จ์ •
  • ์›์ธ: ํ”„๋กฌํ”„ํŠธ์— ์ถœ๋ ฅ ํ˜•์‹ ์ œ์•ฝ ์—†์Œ
  • ํ•ด๊ฒฐ:
    • ์งˆ๋ฌธ ๋์— ํ˜•์‹ ์ œ์•ฝ ์ถ”๊ฐ€
    • ์˜ˆ: โ€œ์ตœ๋Œ€ 3๋ฌธ์žฅ, ๋ถˆํ™•์‹คํ•˜๋ฉด ๋ถˆํ™•์‹คํ•˜๋‹ค๊ณ  ๋ช…์‹œโ€

์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ/ํ™œ์„ฑํ™” ์™„๋ฃŒ
  • smolagents ์„ค์น˜ ์™„๋ฃŒ
  • ์—์ด์ „ํŠธ 1ํšŒ ์ด์ƒ ์‹คํ–‰ ์„ฑ๊ณต
  • ๊ฒ€์ฆ ์งˆ๋ฌธ 2๊ฐœ ์ถ”๊ฐ€ ์‹คํ–‰
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… 1๊ฐœ ์ด์ƒ ์ง์ ‘ ๋ณต๊ตฌ

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

2ํŽธ์—์„œ๋Š” ์ปค์Šคํ…€ ํˆด(์˜ˆ: ํ™˜์œจ API ๋ž˜ํผ) ์„ ๋ถ™์—ฌ, ๊ฒ€์ƒ‰+๊ณ„์‚ฐ+์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ๊ฒฐํ•ฉํ˜• ์—์ด์ „ํŠธ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.


AI ํ™œ์šฉ ๊ณ ์ง€: ๋ณธ ๋ฌธ์„œ๋Š” ์ƒ์„ฑํ˜• AI๋กœ ์ดˆ์•ˆ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ณ , ์‹ค์Šต ๋ช…๋ นยท๊ฒ€์ฆ ๊ธฐ์ค€ยทํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์„ ์‚ฌ๋žŒ์ด ๊ฒ€ํ† /์ˆ˜์ •ํ•ด ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.