๐Ÿค— 40. HF Agents Course ์‹ค์ŠตํŽธ 1 - ์ฝ”์Šค ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ํ•™์Šต ํ”Œ๋ž˜๋„ˆ ์—์ด์ „ํŠธ ๋งŒ๋“ค๊ธฐ

๋ชฉํ‘œ: HF Agents Course ์†Œ๊ฐœ ํŽ˜์ด์ง€์™€ smolagents๋ฅผ ์—ฐ๊ฒฐํ•ด, ์ฝ”์Šค ๊ฐœ์š”๋ฅผ ์ฝ๊ณ  1์ฃผ ํ•™์Šต ๊ณ„ํš์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง์ ‘ ์žฌํ˜„ํ•œ๋‹ค.

์ด๋ฒˆ ์‹ค์Šต์€ โ€œ๊ฒ€์ƒ‰/์ฝ๊ธฐ โ†’ ๊ตฌ์กฐํ™” โ†’ ์ตœ์ข… ๋‹ต๋ณ€โ€ ํ๋ฆ„์„ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•˜๋Š” ํ•ธ์ฆˆ์˜จ์ž…๋‹ˆ๋‹ค. Unit 0~2 ์ดˆ๋ฐ˜์„ ๋ง‰ ๋ณด๊ธฐ ์‹œ์ž‘ํ•œ ์‚ฌ๋žŒ์—๊ฒŒ ํŠนํžˆ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡์„ ๋งŒ๋“ค๊นŒ

์‚ฌ์šฉ์ž ์ž…๋ ฅ:

  • HF Agents Course๋ฅผ 1์ฃผ ์•ˆ์— ์ž…๋ฌธํ•˜๊ณ  ์‹ถ์–ด. ํ•˜๋ฃจ 45๋ถ„ ๊ธฐ์ค€์œผ๋กœ ๊ณ„ํš์„ ์งœ์ค˜.

์—์ด์ „ํŠธ ์ถœ๋ ฅ:

  • ์ฝ”์Šค ๋ชฉ์  ์š”์•ฝ
  • 5์ผ ํ•™์Šต ๊ณ„ํš
  • ๊ฐ ์ผ์ž๋ณ„ ์ถ”์ฒœ ์ฃผ์ œ
  • ๋งˆ์ง€๋ง‰ ์ ๊ฒ€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์™œ ์ด ์‹ค์Šต์ด ์ข‹์€๊ฐ€

  • ๊ณต์‹ ์ฝ”์Šค ์†Œ๊ฐœ ํŽ˜์ด์ง€์˜ ์‹ค์ œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ตํ•œ๋‹ค.
  • CodeAgent๊ฐ€ ํ•„์š” ์‹œ ๊ฒ€์ƒ‰ ๋„๊ตฌ๋ฅผ ์จ์„œ ์ •๋ณด๋ฅผ ๋ชจ์€๋‹ค.
  • ์ตœ์ข… ์‚ฐ์ถœ๋ฌผ์ด ๋‹จ์ˆœ ์š”์•ฝ์ด ์•„๋‹ˆ๋ผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•™์Šต ํ”Œ๋žœ์ด๋‹ค.

์ „์ฒด ํ๋ฆ„

flowchart TD
    U[์‚ฌ์šฉ์ž ์š”์ฒญ] --> A[CodeAgent]
    A --> S[DuckDuckGoSearchTool๋กœ ์ฝ”์Šค ์ •๋ณด ํƒ์ƒ‰]
    S --> O[๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ/๊ณต์‹ ๋ฌธ์„œ ํ™•์ธ]
    O --> P[ํ•™์Šต์ผ์ˆ˜ยท์‹œ๊ฐ„ ๊ธฐ์ค€์œผ๋กœ ๊ณ„ํš ๊ตฌ์„ฑ]
    P --> R[์ตœ์ข… ํ•™์Šต ํ”Œ๋ž˜๋„ˆ ์ถœ๋ ฅ]

์ค€๋น„๋ฌผ

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

Step 1) ์ž‘์—… ํด๋” ๋งŒ๋“ค๊ธฐ

์ž…๋ ฅ

mkdir -p ~/hf-agents-course-lab01
cd ~/hf-agents-course-lab01

์„ฑ๊ณต ํŒ์ •

  • pwd ๊ฒฐ๊ณผ๊ฐ€ ~/hf-agents-course-lab01 ์ด์–ด์•ผ ํ•œ๋‹ค.

Step 2) ๊ฐ€์ƒํ™˜๊ฒฝ๊ณผ ํŒจํ‚ค์ง€ ์„ค์น˜

์ž…๋ ฅ

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install "smolagents[toolkit]"

์„ฑ๊ณต ํŒ์ •

python -c "import smolagents; print('ok')"
  • ok๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ํ†ต๊ณผ.

Step 3) ์‹ค์Šต ์ฝ”๋“œ ์ž‘์„ฑ

app.py๋ฅผ ๋งŒ๋“ค๊ณ  ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ๋Š”๋‹ค.

from smolagents import CodeAgent, DuckDuckGoSearchTool, InferenceClientModel
 
model = InferenceClientModel()
agent = CodeAgent(
    tools=[DuckDuckGoSearchTool()],
    model=model,
)
 
prompt = """
Hugging Face Agents Course์˜ ๊ณต์‹ ๊ณต๊ฐœ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ,
์ž…๋ฌธ์ž์šฉ 5์ผ ํ•™์Šต ๊ณ„ํš์„ ํ•œ๊ตญ์–ด๋กœ ์ž‘์„ฑํ•ด์ค˜.
์กฐ๊ฑด:
1) ํ•˜๋ฃจ 45๋ถ„ ๊ธฐ์ค€
2) ๋จผ์ € ์ฝ”์Šค ๋ชฉ์ ์„ 3์ค„ ์ด๋‚ด๋กœ ์š”์•ฝ
3) Day 1~Day 5 ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ
4) ๋งˆ์ง€๋ง‰์— ์ฒดํฌ๋ฆฌ์ŠคํŠธ 4๊ฐœ ์ถ”๊ฐ€
5) ์ •๋ณด๊ฐ€ ๋ถˆ์ถฉ๋ถ„ํ•˜๋ฉด ์ถ”์ •์ด๋ผ๊ณ  ๋ช…์‹œ
"""
 
result = agent.run(prompt)
print(result)

์ฝ”๋“œ ์„ค๋ช…

  • InferenceClientModel() : Hugging Face Inference ๊ธฐ๋ฐ˜ ๊ธฐ๋ณธ ๋ชจ๋ธ ์‚ฌ์šฉ
  • DuckDuckGoSearchTool() : ์ฝ”์Šค ํŽ˜์ด์ง€/์ €์žฅ์†Œ ์ •๋ณด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ๊ฒ€์ƒ‰ ๋„๊ตฌ
  • CodeAgent(...) : ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฒ€์ƒ‰ ํ›„ ๋‹ต๋ณ€์„ ์žฌ๊ตฌ์„ฑ
  • agent.run(prompt) : ์‹ค์ œ ์‹คํ–‰

Step 4) ์‹คํ–‰

์‹คํ–‰ ๋ช…๋ น

python app.py

์„ฑ๊ณต ํŒ์ •

์•„๋ž˜ 4๊ฐœ๋ฅผ ๋งŒ์กฑํ•˜๋ฉด ์„ฑ๊ณต์ด๋‹ค.

  • ์‹คํ–‰์ด ์—๋Ÿฌ ์—†์ด ๋๋‚œ๋‹ค.
  • ์ถœ๋ ฅ์— ์ฝ”์Šค ๋ชฉ์  ์š”์•ฝ์ด ํฌํ•จ๋œ๋‹ค.
  • Day 1 ~ Day 5๊ฐ€ ๋ชจ๋‘ ๋‚˜์˜จ๋‹ค.
  • ๋งˆ์ง€๋ง‰์— ์ฒดํฌ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ถ™๋Š”๋‹ค.

Step 5) ์ž…๋ ฅ ๋ฐ”๊ฟ”์„œ ํ•œ ๋ฒˆ ๋” ๊ฒ€์ฆ

๊ฐ™์€ ์ฝ”๋“œ์—์„œ prompt๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐ”๊ฟ” ์žฌ์‹คํ–‰ํ•œ๋‹ค.

๊ฒ€์ฆ ์ž…๋ ฅ

HF Agents Course๋ฅผ ๋น ๋ฅด๊ฒŒ ํ›‘๊ณ  ๋ฐ”๋กœ smolagents ์‹ค์Šต๊นŒ์ง€ ๊ฐ€๊ณ  ์‹ถ์–ด.
3์ผ ํ•™์Šต ๊ณ„ํš์œผ๋กœ ์ค„์—ฌ์„œ, ์ด๋ก /์‹ค์Šต ๋น„์ค‘๋„ ํ•จ๊ป˜ ์ ์–ด์ค˜.

์„ฑ๊ณต ํŒ์ •

  • 3์ผ ๊ณ„ํš์œผ๋กœ ์žฌ๊ตฌ์„ฑ๋œ๋‹ค.
  • ์‹ค์Šต ์ค‘์‹ฌ์ด๋ผ๋Š” ์š”์ฒญ์ด ๋‹ต๋ณ€์— ๋ฐ˜์˜๋œ๋‹ค.
  • ๋‹จ์ˆœ ๋ณต๋ถ™์ด ์•„๋‹ˆ๋ผ ์ผ์ •๊ณผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋ฐ”๋€๋‹ค.

์ถœ๋ ฅ ์˜ˆ์‹œ ํ˜•ํƒœ

์ฝ”์Šค ๋ชฉ์  ์š”์•ฝ
- ์—์ด์ „ํŠธ์˜ ๊ฐœ๋…, ๋„๊ตฌ ์‚ฌ์šฉ, ํ”„๋ ˆ์ž„์›Œํฌ ํ™œ์šฉ์„ ๋ฐฐ์šด๋‹ค.
- smolagents, LangGraph, LlamaIndex ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹ค์Šตํ•œ๋‹ค.
- ๊ณผ์ œ/์ฑŒ๋ฆฐ์ง€ ๊ธฐ๋ฐ˜์œผ๋กœ ์—์ด์ „ํŠธ๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ๊ฐœ์„ ํ•œ๋‹ค.
 
Day 1
- Unit 0 ๊ฐœ์š” ์ฝ๊ธฐ
- Unit 1 ํ•ต์‹ฌ ๊ฐœ๋… ์ •๋ฆฌ
...

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

1) ModuleNotFoundError: smolagents

์›์ธ:

  • ๊ฐ€์ƒํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์„ค์น˜๊ฐ€ ์ค‘๊ฐ„์— ์‹คํŒจํ•จ

ํ•ด๊ฒฐ:

source .venv/bin/activate
pip install "smolagents[toolkit]"

2) ๋ชจ๋ธ ํ˜ธ์ถœ ์‹œ ์ธ์ฆ/๊ถŒํ•œ ์˜ค๋ฅ˜

์›์ธ:

  • ํ™˜๊ฒฝ์— ๋”ฐ๋ผ Hugging Face ํ† ํฐ์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ ํ˜ธ์ถœ์ด ๋ง‰ํž ์ˆ˜ ์žˆ์Œ

ํ•ด๊ฒฐ:

export HF_TOKEN=hf_your_token
python app.py

3) ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋ถ€์ •ํ™•ํ•˜๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ๋„“์Œ

์›์ธ:

  • ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ถ”์ƒ์ ์ด๋ผ ์ฝ”์Šค ์™ธ๋ถ€ ์ž๋ฃŒ๊นŒ์ง€ ์„ž์ผ ์ˆ˜ ์žˆ์Œ

ํ•ด๊ฒฐ:

  • ํ”„๋กฌํ”„ํŠธ์— ๊ณต์‹ ๊ณต๊ฐœ ์ •๋ณด ๊ธฐ์ค€, Hugging Face Agents Course, smolagents๋ฅผ ๋ช…์‹œํ•œ๋‹ค.
  • ํ•„์š”ํ•˜๋ฉด Unit 0, Unit 1, smolagents ๊ฐ™์€ ํ‚ค์›Œ๋“œ๋ฅผ ์ง์ ‘ ๋„ฃ๋Š”๋‹ค.

4) ๋‹ต๋ณ€์ด ์žฅํ™ฉํ•˜๊ณ  ๊ณ„ํš์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Œ

์›์ธ:

  • ์ถœ๋ ฅ ํ˜•์‹ ์ œ์•ฝ์ด ๋ถ€์กฑํ•จ

ํ•ด๊ฒฐ:

  • Day 1~Day 5 ํ˜•์‹, ์ฒดํฌ๋ฆฌ์ŠคํŠธ 4๊ฐœ, 3์ค„ ์š”์•ฝ ๊ฐ™์€ ํ˜•์‹ ์ œ์•ฝ์„ ํ”„๋กฌํ”„ํŠธ์— ๋„ฃ๋Š”๋‹ค.

5) ์‹คํ–‰์€ ๋˜์ง€๋งŒ ๋„๊ตฌ ํ˜ธ์ถœ์ด ๊ฑฐ์˜ ์•ˆ ๋ณด์ž„

์›์ธ:

  • ๋ชจ๋ธ์ด ๋‚ด๋ถ€ ์ง€์‹๋งŒ์œผ๋กœ ๋‹ตํ•˜๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ

ํ•ด๊ฒฐ:

  • ์งˆ๋ฌธ์„ ์ตœ์‹ ์„ฑ/๊ทผ๊ฑฐ ์ค‘์‹ฌ์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
  • ์˜ˆ: ๊ณต์‹ ์ฝ”์Šค ์†Œ๊ฐœ ํŽ˜์ด์ง€ ๊ธฐ์ค€์œผ๋กœ ๋˜๋Š” ํ˜„์žฌ ๊ณต๊ฐœ๋œ Unit ๊ตฌ์„ฑ ๊ธฐ์ค€์œผ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

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

  • ์ž‘์—… ํด๋” ์ƒ์„ฑ ์™„๋ฃŒ
  • ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™” ์™„๋ฃŒ
  • smolagents[toolkit] ์„ค์น˜ ์™„๋ฃŒ
  • ๊ธฐ๋ณธ 5์ผ ํ•™์Šต ๊ณ„ํš ์‹คํ–‰ ์„ฑ๊ณต
  • 3์ผ ๋ณ€ํ˜• ์ž…๋ ฅ ์žฌ์‹คํ–‰ ์„ฑ๊ณต
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ์ตœ์†Œ 1๊ฐœ ์ง์ ‘ ๋ณต๊ตฌ

์—ฌ๊ธฐ์„œ ๋ฐฐ์›Œ์•ผ ํ•  ํ•ต์‹ฌ

์ด๋ฒˆ ์‹ค์Šต์˜ ํ•ต์‹ฌ์€ ์ •๋‹ต ๊ทธ ์ž์ฒด๋ณด๋‹ค ์—์ด์ „ํŠธ๊ฐ€ ์™ธ๋ถ€ ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•ด ๊ตฌ์กฐํ™”๋œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด ํ๋ฆ„์„ ์ดํ•ดํ•˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ๊ณ„์‚ฐ๊ธฐ, ์ปค์Šคํ…€ ํˆด, ๋ฌธ์„œ ๊ฒ€์ƒ‰ํ˜• ์—์ด์ „ํŠธ๋กœ ํ™•์žฅํ•˜๊ธฐ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

๋‹ค์Œ ํ™•์žฅ ์•„์ด๋””์–ด

  • DuckDuckGoSearchTool ๋Œ€์‹  ์‚ฌ๋‚ด ์œ„ํ‚ค ๊ฒ€์ƒ‰ ๋„๊ตฌ ๋ถ™์ด๊ธฐ
  • ๊ฒฐ๊ณผ๋ฅผ Markdown ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ์ปค์Šคํ…€ ํˆด ์ถ”๊ฐ€
  • ํ•™์Šต ๊ณ„ํš ์ƒ์„ฑ ๋’ค์— ํ€ด์ฆˆ 3๊ฐœ ์ƒ์„ฑ ๋‹จ๊ณ„๊นŒ์ง€ ์ด์–ด ๋ถ™์ด๊ธฐ

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

์ด ๋ฌธ์„œ๋Š” ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ ๊ตฌ์กฐ์™€ ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๊ณ , ๊ณต๊ฐœ๋œ Hugging Face Agents Course ์ €์žฅ์†Œ/์ฝ”์Šค ํŽ˜์ด์ง€/smolagents ๋ฌธ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ๋žŒ์ด ์žฌํ˜„ ๋‹จ๊ณ„, ๋ช…๋ น, ์„ฑ๊ณต ํŒ์ •, ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์„ ๊ฒ€ํ† ํ•ด ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค.