๐Ÿค— 56. HF Agents Course ๋ณธํŽธ 1 - Alfred์™€ Unit 1 ํ•ต์‹ฌ ์ง€๋„๋กœ ์ฒซ ์—์ด์ „ํŠธ ํ๋ฆ„ ์ดํ•ดํ•˜๊ธฐ

๋ชฉํ‘œ: Hugging Face Agents Course ๋ณธํŽธ 1์˜ ํ•ต์‹ฌ์„ ๊ฐœ๋… + ์žฌํ˜„ ์‹ค์Šต์œผ๋กœ ํ•œ ๋ฒˆ์— ์ดํ•ดํ•œ๋‹ค. ์ฝ๊ณ  ๋๋‚ด์ง€ ์•Š๊ณ , smolagents๋กœ ์•„์ฃผ ์ž‘์€ ์—์ด์ „ํŠธ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•ด ๋ณด๋ฉฐ ์—์ด์ „ํŠธ๊ฐ€ ์™œ ํ•„์š”ํ•œ์ง€, ์–ด๋–ป๊ฒŒ ์›€์ง์ด๋Š”์ง€ ๊ฐ์„ ์žก๋Š”๋‹ค.

Hugging Face Agents Course ์ €์žฅ์†Œ๋Š” ์ „์ฒด ๊ณผ์ •์„ ๊ธฐ์ดˆ โ†’ ํ”„๋ ˆ์ž„์›Œํฌ โ†’ ์œ ์Šค์ผ€์ด์Šค โ†’ ์ตœ์ข… ํ”„๋กœ์ ํŠธ 4๊ฐœ ํฐ ๋‹จ์œ„๋กœ ์†Œ๊ฐœํ•œ๋‹ค. ๊ทธ์ค‘ Unit 1์€ ์ถœ๋ฐœ์ ์ด๋‹ค. ๊ณต์‹ Unit 1 ์†Œ๊ฐœ๋Š” ์—ฌ๊ธฐ์„œ ์—์ด์ „ํŠธ์˜ ์ •์˜, LLM์˜ ์—ญํ• , ๋„๊ตฌ์™€ ํ–‰๋™, Think โ†’ Act โ†’ Observe ์›Œํฌํ”Œ๋กœ์šฐ, ๊ทธ๋ฆฌ๊ณ  smolagents๋กœ ๋งŒ๋“œ๋Š” ์ฒซ ๋ฒˆ์งธ ์—์ด์ „ํŠธ Alfred๋ฅผ ๋‹ค๋ฃฌ๋‹ค๊ณ  ์„ค๋ช…ํ•œ๋‹ค.

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

Unit 1์—์„œ ๋จผ์ € ์žก์•„์•ผ ํ•  ํ•œ ์ค„ ์š”์•ฝ

  • ์—์ด์ „ํŠธ = ์ถ”๋ก ํ•˜๋Š” ๋ชจ๋ธ + ํ–‰๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ ์„ธํŠธ
  • LLM์€ ์—์ด์ „ํŠธ์˜ ๋‘๋‡Œ๋‹ค.
  • ๋„๊ตฌ๋Š” ์—์ด์ „ํŠธ์˜ ๋ชธ์ด๋‹ค.
  • ์—์ด์ „ํŠธ๋Š” ๋ณดํ†ต ์ƒ๊ฐ โ†’ ํ–‰๋™ โ†’ ๊ด€์ฐฐ ๋ฃจํ”„๋ฅผ ๋ˆ๋‹ค.
  • smolagents๋Š” ์ด ๋ฃจํ”„๋ฅผ ์ ์€ ์ฝ”๋“œ๋กœ ๋น ๋ฅด๊ฒŒ ์‹คํ—˜ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒฝ๋Ÿ‰ ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค.

๊ณต์‹ ์ฝ”์Šค์—์„œ ๋งํ•˜๋Š” Alfred๋Š” ์™œ ์ค‘์š”ํ•œ๊ฐ€

Unit 1์˜ Alfred ์˜ˆ์‹œ๋Š” โ€œ์˜ค๋Š˜ ๋‰ด์š• ๋‚ ์”จ ์–ด๋•Œ?โ€ ๊ฐ™์€ ์งˆ๋ฌธ์„ ๋ฐ›์€ ์—์ด์ „ํŠธ๊ฐ€:

  1. ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ƒ๊ฐํ•˜๊ณ ,
  2. ๋‚ ์”จ ๋„๊ตฌ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ ,
  3. ๊ฒฐ๊ณผ๋ฅผ ๊ด€์ฐฐํ•œ ๋’ค,
  4. ์ตœ์ข… ๋‹ต๋ณ€์„ ๋งŒ๋“ ๋‹ค๋Š” ํ๋ฆ„์„ ๋ณด์—ฌ์ค€๋‹ค.

์ด ์˜ˆ์‹œ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š” ์ดˆ๋ณด์ž๊ฐ€ ์—์ด์ „ํŠธ๋ฅผ ์ถ”์ƒ ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ ์ž‘๋™ํ•˜๋Š” ๋ฃจํ”„๋กœ ์ดํ•ดํ•˜๊ฒŒ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, โ€œ๋ชจ๋ธ์ด ๋‹ต์„ ๋ฐ”๋กœ ์“ฐ๋Š” ๊ฒƒโ€๊ณผ โ€œ๋„๊ตฌ๋ฅผ ๊ฑฐ์ณ ๋” ๋‚˜์€ ๋‹ต์œผ๋กœ ๊ฐ€๋Š” ๊ฒƒโ€์˜ ์ฐจ์ด๋ฅผ ์ฒ˜์Œ ์ฒด๊ฐํ•˜๋Š” ์ง€์ ์ด ๋ฐ”๋กœ ์—ฌ๊ธฐ๋‹ค.

์ „์ฒด ๊ตฌ์กฐ๋ฅผ ๋จผ์ € ๊ทธ๋ฆผ์œผ๋กœ ๋ณด๊ธฐ

flowchart LR
    U[์‚ฌ์šฉ์ž ๋ชฉํ‘œ ์ž…๋ ฅ] --> T[Thought\n๋ฌด์—‡์ด ํ•„์š”ํ•œ์ง€ ํŒ๋‹จ]
    T --> A[Action\n๋„๊ตฌ ํ˜ธ์ถœ ๋˜๋Š” ์ฝ”๋“œ ์‹คํ–‰]
    A --> O[Observation\n๋„๊ตฌ ๊ฒฐ๊ณผ ํ™•์ธ]
    O --> D{๋ชฉํ‘œ ๋‹ฌ์„ฑ?}
    D -- ์•„๋‹ˆ์˜ค --> T
    D -- ์˜ˆ --> F[Final Answer]

์—์ด์ „ํŠธ๋ฅผ ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๋Š” ๋น„์œ 

๊ณต์‹ Unit 1์€ Alfred์—๊ฒŒ โ€œ์ปคํ”ผ ํ•œ ์ž” ๋ถ€ํƒํ•ด์š”โ€๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ๋น„์œ ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋น„์œ ๋ฅผ ์‹ค๋ฌด์‹์œผ๋กœ ๋ฒˆ์—ญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ์‚ฌ์šฉ์ž ๋ชฉํ‘œ: ์ปคํ”ผ๋ฅผ ๊ฐ€์ ธ์™€๋ผ
  • ์ถ”๋ก /๊ณ„ํš: ์ฃผ๋ฐฉ์œผ๋กœ ๊ฐ„๋‹ค โ†’ ์ปคํ”ผ๋จธ์‹ ์„ ์“ด๋‹ค โ†’ ์ปคํ”ผ๋ฅผ ๋งŒ๋“ ๋‹ค โ†’ ๊ฐ€์ ธ์˜จ๋‹ค
  • ๋„๊ตฌ/ํ–‰๋™: ์ปคํ”ผ๋จธ์‹  ์‚ฌ์šฉ, ์ด๋™, ์ „๋‹ฌ
  • ๊ด€์ฐฐ: ์ปคํ”ผ๊ฐ€ ์ค€๋น„๋๋Š”์ง€ ํ™•์ธ
  • ์ตœ์ข… ์‘๋‹ต: ์ปคํ”ผ๋ฅผ ์ „๋‹ฌ

์‹ค๋ฌด์—์„œ๋„ ๊ฐ™๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด โ€œ๊ฒฝ์Ÿ์‚ฌ ์š”์•ฝ ๋ณด๊ณ ์„œ ๋งŒ๋“ค์–ด์ค˜โ€๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์—์ด์ „ํŠธ๋Š”:

  • ๊ฒ€์ƒ‰ ๋„๊ตฌ๋กœ ์ž๋ฃŒ๋ฅผ ๋ชจ์œผ๊ณ ,
  • ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ •๋ฆฌํ•˜๊ณ ,
  • ๋ถ€์กฑํ•˜๋ฉด ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•˜๊ณ ,
  • ๋งˆ์ง€๋ง‰์— ์š”์•ฝ๋ณธ์„ ๋‚ธ๋‹ค.

์ฆ‰ ์—์ด์ „ํŠธ์˜ ๊ฐ€์น˜๋Š” ๋‹ต๋ณ€ ์ž์ฒด๋ณด๋‹ค ๋‹ต๋ณ€์— ์ด๋ฅด๊ธฐ ์œ„ํ•œ ํ–‰๋™ ๊ฐ€๋Šฅ์„ฑ์— ์žˆ๋‹ค.

smolagents๋Š” ์—ฌ๊ธฐ์„œ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋‚˜

smolagents ๊ณต์‹ ๋ฌธ์„œ๋Š” ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ์€ ์ฝ”๋“œ๋กœ ๊ฐ•๋ ฅํ•œ ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์†Œ๊ฐœํ•œ๋‹ค. ํŠนํžˆ CodeAgent๋Š” ํ–‰๋™์„ JSON์ด ์•„๋‹ˆ๋ผ ํŒŒ์ด์ฌ ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์— ์ดˆ์ ์„ ๋‘”๋‹ค.

์ž…๋ฌธ์ž ๊ด€์ ์—์„œ ์ด๊ฒŒ ์ข‹์€ ์ด์œ ๋Š” ๋‘ ๊ฐ€์ง€๋‹ค.

  1. ๋„๊ตฌ ํ˜ธ์ถœ์„ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ฒ˜๋Ÿผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค.
  2. ์—ฌ๋Ÿฌ ๋‹จ๊ณ„ ํ–‰๋™์„ ์ฝ”๋“œ๋กœ ๋ฌถ๊ธฐ ์‰ฌ์›Œ์„œ ์ดํ›„ ํ™•์žฅ์ด ํŽธํ•˜๋‹ค.

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

์—ฌ๊ธฐ์„œ ๋ฐ”๋กœ ์žฌํ˜„ํ•  ์ตœ์†Œ ์‹ค์Šต

์ด๋ฒˆ ๊ธ€์˜ ์‹ค์Šต์€ Alfred ์ „์ฒด Space๋ฅผ ๋ณต์ œํ•˜๋Š” ๋Œ€์‹ , ๊ณต์‹ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๋ฒ„์ „์œผ๋กœ ์žก๋Š”๋‹ค. ๋ชฉํ‘œ๋Š” โ€œ์ž‘๋™ ์›๋ฆฌ ํ™•์ธโ€์ด๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค ๊ฒƒ์€ ์•„๋ž˜ ํ๋ฆ„์ด๋‹ค.

  • ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ๊ฐ„ ํ™•์ธ ์š”์ฒญ
  • ์—์ด์ „ํŠธ๊ฐ€ ์‹œ๊ฐ„๋Œ€ ๋„๊ตฌ ์‚ฌ์šฉ
  • ๊ฒฐ๊ณผ ๊ด€์ฐฐ
  • ์ตœ์ข… ๋‹ต๋ณ€ ์ƒ์„ฑ

๋‚ ์”จ API๊นŒ์ง€ ๋ถ™์ด์ง€ ์•Š๋Š” ์ด์œ ๋Š” ์ดˆ๋ณด์ž๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์™ธ๋ถ€ API ์„ค์ • ๋•Œ๋ฌธ์— ๋ง‰ํžˆ์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋‹ค.

์‹ค์Šต ๊ฒฐ๊ณผ๋ฌผ

ํŒŒ์ผ 1๊ฐœ๋ฅผ ๋งŒ๋“ ๋‹ค.

  • first_agent_min.py

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” smolagents์˜ CodeAgent์— ์‹œ๊ฐ„๋Œ€ ์กฐํšŒ ๋„๊ตฌ๋ฅผ ์—ฐ๊ฒฐํ•ด, ์•„์ฃผ ์ž‘์€ Alfred ์Šคํƒ€์ผ ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.


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

๋„๊ตฌ

  • ํ„ฐ๋ฏธ๋„

์ž…๋ ฅ

mkdir -p ~/hf-agents-unit1
cd ~/hf-agents-unit1

์‹คํ–‰ ๋ช…๋ น

pwd
ls -la

์„ฑ๊ณต ํŒ์ •

  • ํ˜„์žฌ ๊ฒฝ๋กœ๊ฐ€ hf-agents-unit1๋กœ ๋๋‚œ๋‹ค.
  • ๋นˆ ํด๋” ๋˜๋Š” ์ƒˆ ํด๋”๊ฐ€ ๋ณด์ธ๋‹ค.

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

๋„๊ตฌ

  • ํ„ฐ๋ฏธ๋„

์ž…๋ ฅ

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install smolagents pytz

์‹คํ–‰ ๋ช…๋ น

python -c "import smolagents, pytz; print('install-ok')"

์„ฑ๊ณต ํŒ์ •

  • install-ok๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ํ†ต๊ณผ.

์ฐธ๊ณ : smolagents๋Š” ๋ชจ๋ธ ์—ฐ๊ฒฐ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์ถ”๊ฐ€ ์„ค์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค. Hugging Face Inference๋ฅผ ์“ธ ๋•Œ ์ธ์ฆ์ด ํ•„์š”ํ•˜๋ฉด HF_TOKEN์„ ์„ค์ •ํ•œ๋‹ค.

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

ํŒŒ์ผ๋ช…: first_agent_min.py

import datetime
import os
import pytz
from smolagents import CodeAgent, InferenceClientModel, tool
 
 
@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """Return the current time for a valid IANA timezone string.
 
    Args:
        timezone: A valid timezone like 'Asia/Seoul' or 'America/New_York'.
    """
    try:
        tz = pytz.timezone(timezone)
        current = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
        return f"{timezone} ํ˜„์žฌ ์‹œ๊ฐ์€ {current}์ž…๋‹ˆ๋‹ค."
    except Exception as e:
        return f"์‹œ๊ฐ„๋Œ€ ์กฐํšŒ ์‹คํŒจ: {e}"
 
 
model = InferenceClientModel(
    model_id="Qwen/Qwen2.5-Coder-32B-Instruct"
)
 
agent = CodeAgent(
    tools=[get_current_time_in_timezone],
    model=model,
    max_steps=4,
)
 
prompt = "์„œ์šธ๊ณผ ๋‰ด์š•์˜ ํ˜„์žฌ ์‹œ๊ฐ์„ ๋น„๊ตํ•ด์„œ ํ•œ๊ตญ์–ด๋กœ ์งง๊ฒŒ ์„ค๋ช…ํ•ด์ค˜."
result = agent.run(prompt)
print(result)

์™œ ์ด ์ฝ”๋“œ๊ฐ€ Unit 1๊ณผ ๋งž๋‹ฟ์•„ ์žˆ๋‚˜

  • tool ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ: ๋„๊ตฌ๋ฅผ ์—์ด์ „ํŠธ๊ฐ€ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋“ฑ๋ก
  • CodeAgent: ํ–‰๋™์„ ์ฝ”๋“œ๋กœ ์“ฐ๋Š” ์—์ด์ „ํŠธ
  • agent.run(...): ์‚ฌ์šฉ์ž ๋ชฉํ‘œ๋ฅผ ๋„ฃ๊ณ  ๋ฃจํ”„ ์‹œ์ž‘
  • ์‹œ๊ฐ„๋Œ€ ๋„๊ตฌ: Alfred์˜ ๋‚ ์”จ ๋„๊ตฌ๋ฅผ ๋” ์‰ฌ์šด ๋ฒ„์ „์œผ๋กœ ์น˜ํ™˜ํ•œ ๊ฒƒ

Step 4) ์ฒซ ์‹คํ–‰

๋„๊ตฌ

  • ํ„ฐ๋ฏธ๋„

์‹คํ–‰ ๋ช…๋ น

source .venv/bin/activate
python first_agent_min.py

์„ฑ๊ณต ํŒ์ •

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

  • ํ”„๋กœ๊ทธ๋žจ์ด ์˜ˆ์™ธ ์—†์ด ๋๋‚œ๋‹ค.
  • ์ถœ๋ ฅ์— ์„œ์šธ ๋˜๋Š” Asia/Seoul์ด ๋ฐ˜์˜๋œ๋‹ค.
  • ์ถœ๋ ฅ์— ๋‰ด์š• ๋˜๋Š” America/New_York์— ํ•ด๋‹นํ•˜๋Š” ์„ค๋ช…์ด ๋“ค์–ด๊ฐ„๋‹ค.
  • ๊ฒฐ๊ณผ๊ฐ€ ํ•œ๊ตญ์–ด ๋ฌธ์žฅ์œผ๋กœ ์ •๋ฆฌ๋œ๋‹ค.

Step 5) ์ธ์ฆ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉด ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€

์ž…๋ ฅ

export HF_TOKEN=hf_your_token

์žฌ์‹คํ–‰

python first_agent_min.py

์„ฑ๊ณต ํŒ์ •

  • ์ธ์ฆ ์˜ค๋ฅ˜ ์—†์ด ์‹คํ–‰๋˜๋ฉด ํ†ต๊ณผ.

Step 6) ์—์ด์ „ํŠธ ๋ฃจํ”„๋ฅผ ๋ˆˆ์œผ๋กœ ๊ฒ€์ฆํ•˜๊ธฐ

์ž…๋ฌธ ๋‹จ๊ณ„์—์„  โ€œ์ •๋ง ๋„๊ตฌ๋ฅผ ์ผ๋Š”๊ฐ€โ€๋ฅผ ํ™•์ธํ•˜๋Š” ์Šต๊ด€์ด ์ค‘์š”ํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐ”๊ฟ”๋ณธ๋‹ค.

์ž…๋ ฅ ๋ณ€๊ฒฝ

prompt = "๋ฐ˜๋“œ์‹œ ์‹œ๊ฐ„๋Œ€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„œ์šธ ํ˜„์žฌ ์‹œ๊ฐ์„ ์•Œ๋ ค์ค˜."

์‹คํ–‰ ๋ช…๋ น

python first_agent_min.py

์„ฑ๊ณต ํŒ์ •

  • ๋„๊ตฌ ๊ฒฐ๊ณผ ๊ธฐ๋ฐ˜์˜ ์‹œ๊ฐ„ ์ •๋ณด๊ฐ€ ์‘๋‹ต์— ๋ฐ˜์˜๋œ๋‹ค.
  • ๋‹จ์ˆœ ์ƒ์‹ ๋‹ต๋ณ€์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ์‹œ๊ฐ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ๋‹ค.

Step 7) ์‹ค๋ฌดํ˜•์œผ๋กœ ํ•œ ๋‹จ๊ณ„ ํ™•์žฅํ•˜๊ธฐ

๋‹ค์Œ์ฒ˜๋Ÿผ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ”๊พธ๋ฉด โ€œ๋„๊ตฌ ์‚ฌ์šฉ + ์š”์•ฝโ€ ํŒจํ„ด์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

prompt = "์„œ์šธ๊ณผ ๋‰ด์š•์˜ ํ˜„์žฌ ์‹œ๊ฐ ์ฐจ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ง€๊ธˆ ๋ฐ”๋กœ ํšŒ์˜ ์žก๊ธฐ ์ข‹์€ ์‹œ๊ฐ„์„ ํ•œ๊ตญ์–ด๋กœ ์ œ์•ˆํ•ด์ค˜."

์„ฑ๊ณต ํŒ์ •

  • ๋‹จ์ˆœ ์‹œ๊ฐ„ ๋‚˜์—ด์ด ์•„๋‹ˆ๋ผ ์ถ”์ฒœ ๋ฌธ์žฅ์ด ๋‚˜์˜จ๋‹ค.
  • ๋„๊ตฌ์—์„œ ์–ป์€ ์‹œ๊ฐ„ ์ •๋ณด๊ฐ€ ํŒ๋‹จ ๊ทผ๊ฑฐ๋กœ ์“ฐ์ธ๋‹ค.

์ด๊ฒŒ ์‹ค๋ฌด ํฌ์ธํŠธ๋‹ค. ์—์ด์ „ํŠธ๋Š” ๋„๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋ƒฅ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ํŒ๋‹จ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์—์„œ ๊ฐ€์น˜๊ฐ€ ์ปค์ง„๋‹ค.

์ดˆ๋ณด์ž๊ฐ€ ์—ฌ๊ธฐ์„œ ๊ผญ ์ดํ•ดํ•ด์•ผ ํ•  ๊ฐœ๋… 4๊ฐœ

1) ์—์ด์ „ํŠธ๋Š” โ€œ๋‹ต๋ณ€ ์ƒ์„ฑ๊ธฐโ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œํ–‰๋™ ์‹œ์Šคํ…œโ€์ด๋‹ค

๊ณต์‹ Unit 1 ์ •์˜๋Œ€๋กœ, ์—์ด์ „ํŠธ๋Š” ๋ชฉํ‘œ ๋‹ฌ์„ฑ์„ ์œ„ํ•ด ํ™˜๊ฒฝ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•œ๋‹ค. ์ฆ‰, ์™ธ๋ถ€ ๋„๊ตฌ๋ฅผ ์“ธ ์ˆ˜ ์žˆ์–ด์•ผ ์ง„์งœ ์—์ด์ „ํŠธ๋‹ค์šด ํž˜์ด ์ƒ๊ธด๋‹ค.

2) ๋„๊ตฌ๊ฐ€ ์—†์œผ๋ฉด ํ–‰๋™ ๋ฒ”์œ„๊ฐ€ ์ข๋‹ค

์—์ด์ „ํŠธ์˜ ์„ฑ๋Šฅ์€ ๋ชจ๋ธ๋งŒ์ด ์•„๋‹ˆ๋ผ ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์คฌ๋Š”์ง€์— ํฌ๊ฒŒ ์ขŒ์šฐ๋œ๋‹ค. ๊ฒ€์ƒ‰ ๋„๊ตฌ๊ฐ€ ์žˆ์œผ๋ฉด ์ตœ์‹  ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ณ , ์‹œ๊ฐ„ ๋„๊ตฌ๊ฐ€ ์žˆ์œผ๋ฉด ์‹ค์‹œ๊ฐ„ ์‹œ๊ฐ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

3) Observation์ด ๋น ์ง€๋ฉด ์‹ ๋ขฐ์„ฑ์ด ์•ฝํ•ด์ง„๋‹ค

์—์ด์ „ํŠธ๋Š” ํ–‰๋™ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด์•ผ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๊ฐ€ ์—†์œผ๋ฉด ๊ทธ๋ƒฅ ๊ธธ์–ด์ง„ ํ”„๋กฌํ”„ํŠธ์™€ ๋น„์Šทํ•ด์ง„๋‹ค.

4) Unit 1์˜ ๋ชฉ์ ์€ ํ™”๋ คํ•œ ์•ฑ ์ œ์ž‘์ด ์•„๋‹ˆ๋‹ค

ํ•ต์‹ฌ์€ ๋ฃจํ”„ ์ดํ•ด๋‹ค. ๋จผ์ € Thought-Action-Observation์„ ์ดํ•ดํ•˜๊ณ , ๊ทธ ๋‹ค์Œ Unit 2์—์„œ ํ”„๋ ˆ์ž„์›Œํฌ ์ฐจ์ด์™€ ์„ค๊ณ„ ์„ ํƒ์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ํ๋ฆ„์ด ์ž์—ฐ์Šค๋Ÿฝ๋‹ค.

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

์šด์˜ ์ž๋™ํ™”

  • ์‹œ๊ฐ„ ํ™•์ธ, ์ƒํƒœ ์กฐํšŒ, ํŒŒ์ผ ์š”์•ฝ์ฒ˜๋Ÿผ ์ž‘์€ ๋„๊ตฌํ˜• ์ž‘์—…๋ถ€ํ„ฐ ๋ถ™์ด๋ฉด ์•ˆ์ •์ ์ด๋‹ค.

๋ฆฌ์„œ์น˜ ๋ณด์กฐ

  • ์›น ๊ฒ€์ƒ‰ ๋„๊ตฌ + ์ •๋ฆฌ ํ”„๋กฌํ”„ํŠธ ์กฐํ•ฉ์œผ๋กœ ์ž๋ฃŒ ์ˆ˜์ง‘ํ˜• ์—์ด์ „ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๊ณ ๊ฐ ์‘๋Œ€/๋‚ด๋ถ€ ์—…๋ฌด

  • FAQ ๋‹ต๋ณ€๋งŒ ํ•˜๋Š” ์ฑ—๋ด‡๋ณด๋‹ค, ์ผ์ • ์กฐํšŒยท๋ฌธ์„œ ๊ฒ€์ƒ‰ยทํ‹ฐ์ผ“ ์ƒ์„ฑ๊นŒ์ง€ ๋ถ™์ธ ์—์ด์ „ํŠธ๊ฐ€ ํ›จ์”ฌ ์‹ค์šฉ์ ์ด๋‹ค.

์ž์ฃผ ๋ง‰ํžˆ๋Š” ์ง€์ 

1) ModuleNotFoundError

source .venv/bin/activate
python -m pip install smolagents pytz

๊ฐ€์ƒํ™˜๊ฒฝ์ด ๊บผ์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ๋‹ค.

2) ์ธ์ฆ ๋˜๋Š” ๋ชจ๋ธ ํ˜ธ์ถœ ์˜ค๋ฅ˜

export HF_TOKEN=hf_your_token

InferenceClientModel ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ํ† ํฐ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

3) ๋„๊ตฌ ์„ค๋ช…์ด ๋ถ€์‹คํ•ด์„œ ์—์ด์ „ํŠธ๊ฐ€ ์ž˜ ๋ชป ์“ฐ๋Š” ๊ฒฝ์šฐ

๋„๊ตฌ ํ•จ์ˆ˜์—๋Š” ์•„๋ž˜ 3๊ฐœ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.

  • ํƒ€์ž… ํžŒํŠธ
  • ๋ช…ํ™•ํ•œ ํ•จ์ˆ˜๋ช…
  • ์ธ์ž ์„ค๋ช…์ด ๋“ค์–ด๊ฐ„ docstring

4) ๋กœ์ปฌ ์‹คํ–‰์„ ์šด์˜ ํ™˜๊ฒฝ์ฒ˜๋Ÿผ ๋ฏฟ๋Š” ๊ฒฝ์šฐ

ํ•™์Šต์šฉ ๋กœ์ปฌ ์‹คํ–‰์€ ์ถœ๋ฐœ์ ์ผ ๋ฟ์ด๋‹ค. CodeAgent๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ, ์šด์˜ ๋‹จ๊ณ„์—์„œ๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ์ „๋žต์„ ๋ฐ˜๋“œ์‹œ ๋”ฐ๋กœ ์žก์•„์•ผ ํ•œ๋‹ค.

๋‹ค์Œ์— ์ด์–ด์„œ ๋ณด๋ฉด ์ข‹์€ ๊ณต์‹ ํ•™์Šต ์ˆœ์„œ

  1. Unit 1์˜ Thoughts, Actions, Observations ์„ธ๋ถ€ ํŽ˜์ด์ง€
  2. Unit 1 ํŠœํ† ๋ฆฌ์–ผ์—์„œ Alfred/์ฒซ ์—์ด์ „ํŠธ ํ๋ฆ„ ๋ณต์Šต
  3. Unit 2์—์„œ smolagents, LangGraph, LlamaIndex ๋น„๊ต

ํ•œ ๋ฒˆ ๋” ์š”์•ฝ

HF Agents Course ๋ณธํŽธ 1์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์žก์•„์•ผ ํ•  ๊ฒƒ์€ โ€œ์—์ด์ „ํŠธ๋Š” ๋„๊ตฌ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ถ”๋ก  ์‹œ์Šคํ…œโ€์ด๋ผ๋Š” ๊ฐ๊ฐ์ด๋‹ค. Alfred ์˜ˆ์‹œ๋Š” ๊ทธ ๊ฐœ๋…์„ ๊ฐ€์žฅ ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  smolagents ์ตœ์†Œ ์˜ˆ์ œ๋ฅผ ์ง์ ‘ ๋Œ๋ ค๋ณด๋ฉด, Unit 1์ด ์™œ ์ดํ›„ ๋ชจ๋“  ํ”„๋ ˆ์ž„์›Œํฌ ํ•™์Šต์˜ ๋ฐ”๋‹ฅ์ด ๋˜๋Š”์ง€ ํ›จ์”ฌ ์„ ๋ช…ํ•˜๊ฒŒ ๋ณด์ธ๋‹ค.


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

์ด ๋ฌธ์„œ๋Š” ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ ๊ตฌ์กฐ์™€ ์„ค๋ช… ๋ฌธ์žฅ์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋‚ด์šฉ ๊ทผ๊ฑฐ๋Š” Hugging Face Agents Course ์ €์žฅ์†Œ, Unit 1 ์›๋ฌธ(introduction, what-are-agents, agent-steps-and-structure, tutorial), smolagents ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋Œ€์กฐํ–ˆ๊ณ , ์‹ค์Šต ๋‹จ๊ณ„ยท์ž…๋ ฅยท์‹คํ–‰ ๋ช…๋ นยท์„ฑ๊ณต ํŒ์ •์€ ์‚ฌ๋žŒ์ด ์žฌํ˜„ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋‹ค์‹œ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.