๐Ÿค— 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๊ฐ€์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. smolagents๊ฐ€ ์ •์ƒ ์„ค์น˜๋˜๋Š”์ง€
  2. ๊ฒ€์ƒ‰ ๋„๊ตฌ๊ฐ€ ๋ถ™์€ 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_xxx

3) ๊ฒ€์ƒ‰ ํ’ˆ์งˆ์ด ์• ๋งคํ•จ

์›์ธ: ์งˆ๋ฌธ์ด ๋„ˆ๋ฌด ๋„“์Œ

ํ•ด๊ฒฐ: ์š”์ฒญ์„ ๋” ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ: Unit 1 ๊ธฐ์ค€์œผ๋กœ ํ•ต์‹ฌ ํ•™์Šต ๋ชฉํ‘œ 3๊ฐ€์ง€๋งŒ ์ •๋ฆฌํ•ด์ค˜.

8. ์ดˆ๋ณด์ž ๊ธฐ์ค€์œผ๋กœ ์ดํ•ดํ•ด์•ผ ํ•  ํฌ์ธํŠธ

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฑด โ€œ์ •๋‹ต ํ’ˆ์งˆโ€๋ณด๋‹ค ์ž‘๋™ ๊ตฌ์กฐ๋ฅผ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ ์ฒซ ์‹ค์Šต์—์„œ๋Š” ์•„๋ž˜๋ฅผ ๊ผญ ์ฒดํฌํ•˜์„ธ์š”.

  • ๋ชจ๋ธ์ด ํ˜ผ์ž ๋‹ตํ•˜๋Š”์ง€
  • ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•œ ์ˆœ๊ฐ„์— ๊ฒ€์ƒ‰์„ ํ˜ธ์ถœํ•˜๋Š”์ง€
  • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  ์ตœ์ข… ๋‹ต์„ ๋‹ค์‹œ ์ •๋ฆฌํ•˜๋Š”์ง€

์ด 3๊ฐœ๋ฅผ ์ดํ•ดํ•˜๋ฉด ์ดํ›„ ๊ณ„์‚ฐ๊ธฐ, ์ฝ”๋“œ ์‹คํ–‰, ๋ฉ€ํ‹ฐํˆด ์—ฐ๊ฒฐ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

9. ์‹ค๋ฌด ์ ์šฉ ํฌ์ธํŠธ

์ฝ˜ํ…์ธ  ๋ฆฌ์„œ์น˜ ์ž๋™ํ™”

์ดˆ์•ˆ ์ž‘์„ฑ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์—์ด์ „ํŠธ๊ฐ€ ๊ด€๋ จ ์ž๋ฃŒ๋ฅผ ๋จผ์ € ๋ชจ์œผ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šด์˜ ๋งค๋‰ด์–ผ ๋ณด์กฐ

๋ฌธ์„œ ๊ฒ€์ƒ‰ ๋„๊ตฌ๋ฅผ ๋ถ™์ด๋ฉด ์‚ฌ๋‚ด ์œ„ํ‚ค๋‚˜ ์ œํ’ˆ ๋ฌธ์„œ๋ฅผ ๋จผ์ € ์ฐพ๊ณ  ์š”์•ฝํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ณต ์งˆ๋ฌธ ๋Œ€์‘

๋งค๋ฒˆ ๋น„์Šทํ•œ ์งˆ๋ฌธ์„ ๋ฐ›๋Š” ํŒ€์ด๋ผ๋ฉด ๊ฒ€์ƒ‰ + ์š”์•ฝํ˜• ์—์ด์ „ํŠธ๋กœ 1์ฐจ ์‘๋‹ต ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

10. ์ด๋ฒˆ ํŽธ ํ•œ ์ค„ ์ •๋ฆฌ

HF Agents Course ๋ณธํŽธ 1์˜ ํ•ต์‹ฌ์€ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์—์ด์ „ํŠธ๋Š” โ€œ์ƒ๊ฐ โ†’ ๋„๊ตฌ ์‹คํ–‰ โ†’ ๊ฒฐ๊ณผ ํ™•์ธ โ†’ ๋‹ต๋ณ€โ€ ๋ฃจํ”„๋ฅผ ๋„๋Š” ์‹œ์Šคํ…œ์ด๊ณ , smolagents๋Š” ๊ทธ ๋ฃจํ”„๋ฅผ ๊ฐ€์žฅ ์งง๊ฒŒ ์ฒดํ—˜ํ•˜๊ธฐ ์ข‹์€ ์ถœ๋ฐœ์ ์ž…๋‹ˆ๋‹ค.

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

๋‹ค์Œ ๋ณธํŽธ์—์„œ๋Š” CodeAgent์— ๊ณ„์‚ฐ๊ธฐ ๊ฐ™์€ ๋ช…์‹œ์  ๋„๊ตฌ๋ฅผ ๋ถ™์—ฌ, โ€œ๋ง์€ ๊ทธ๋Ÿด๋“ฏํ•˜์ง€๋งŒ ๊ณ„์‚ฐ์€ ํ‹€๋ฆฌ๋Š”โ€ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ค„์ด๋Š”์ง€ ์ด์–ด์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.


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

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