๐Ÿค— 43. HF Agents Course ์‹ค์ŠตํŽธ 2 - ๊ณต์‹ ์ฝ”์Šค ํƒ์ƒ‰ Q&A ์—์ด์ „ํŠธ ๋งŒ๋“ค๊ธฐ

๋ชฉํ‘œ: Hugging Face Agents Course ๊ณต์‹ ํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ์ฝ๋Š” smolagents ๊ธฐ๋ฐ˜ Q&A ์—์ด์ „ํŠธ๋ฅผ ๋งŒ๋“ค์–ด, ์ฝ”์Šค ๊ตฌ์กฐ๋ฅผ ๋ฌป๊ณ  ์š”์•ฝํ•˜๊ณ  ๋‹ค์Œ ํ•™์Šต ํ–‰๋™๊นŒ์ง€ ์ œ์•ˆํ•˜๋Š” ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์žฌํ˜„ํ•œ๋‹ค.

์ด๋ฒˆ ์‹ค์Šต์€ โ€œ๊ณต์‹ ๋ฌธ์„œ ์ฝ๊ธฐ โ†’ ํ•„์š”ํ•œ ๊ตฌ๊ฐ„๋งŒ ์ถ”์ถœ โ†’ ํ•œ๊ตญ์–ด๋กœ ์žฌ๊ตฌ์„ฑโ€ ํ๋ฆ„์„ ์†์— ์ตํžˆ๋Š” ๋ฐ ์ดˆ์ ์„ ๋‘”๋‹ค. Hugging Face Agents Course ์†Œ๊ฐœ ํŽ˜์ด์ง€๊ฐ€ ๋งํ•˜๋Š” ํ•ต์‹ฌ ์ถ•์€ ์ด๋ ‡๋‹ค.

  • ๊ณผ์ •์€ ๊ธฐ์ดˆ ๊ฐœ๋…, ํ•ธ์ฆˆ์˜จ, ์œ ์Šค์ผ€์ด์Šค, ์ตœ์ข… ๊ณผ์ œ๋กœ ์ด์–ด์ง„๋‹ค.
  • Unit 2์—์„œ๋Š” smolagents, LangGraph, LlamaIndex ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋‹ค๋ฃฌ๋‹ค.
  • ๊ถŒ์žฅ ํ•™์Šต ์†๋„๋Š” ์ฃผ๋‹น 3~4์‹œ๊ฐ„, ๊ฐ ์ฑ•ํ„ฐ 1์ฃผ ์ˆ˜์ค€์ด๋‹ค.

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

์‚ฌ์šฉ์ž ์ž…๋ ฅ ์˜ˆ์‹œ:

  • HF Agents Course๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š”๋ฐ, Unit 0/1/2.1์„ ์–ด๋–ค ์ˆœ์„œ๋กœ ์ฝ์–ด์•ผ ํ•˜๊ณ  ๋ฐ”๋กœ ํ•ด๋ณผ ์‹ค์Šต์€ ๋ญ์•ผ?

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

  • ์ฝ”์Šค ๊ตฌ์กฐ 3์ค„ ์š”์•ฝ
  • ์ถ”์ฒœ ํ•™์Šต ์ˆœ์„œ
  • ๊ฐ Unit์—์„œ ํ™•์ธํ•  ํ•ต์‹ฌ ํฌ์ธํŠธ
  • ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์‹ค์Šต 1๊ฐœ
  • ์ฃผ์˜ํ•  ์ „์ œ์กฐ๊ฑด

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

  • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๋‘๋ฃจ๋ญ‰์ˆ ํ•˜๊ฒŒ ์„ž์ง€ ์•Š๊ณ  ๊ณต์‹ ์ฝ”์Šค URL๋งŒ ์ฝ๋„๋ก ์ œํ•œํ•œ๋‹ค.
  • CodeAgent์™€ ์ปค์Šคํ…€ ํˆด์„ ํ•จ๊ป˜ ์จ์„œ, โ€œ๋„๊ตฌ๋ฅผ ๊ฐ€์ง„ ์—์ด์ „ํŠธโ€์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์žฅ ์ž‘๊ฒŒ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒฐ๊ณผ๋ฌผ์ด ๋‹จ์ˆœ ์š”์•ฝ์ด ์•„๋‹ˆ๋ผ ๋‹ค์Œ ํ–‰๋™์ด ๋ฐ”๋กœ ๋‚˜์˜ค๋Š” ํ•™์Šต Q&A ๋„์šฐ๋ฏธ๋‹ค.

์ „์ฒด ํ๋ฆ„

flowchart TD
    U[์‚ฌ์šฉ์ž ์งˆ๋ฌธ] --> A[CodeAgent]
    A --> T[get_course_section ํˆด ํ˜ธ์ถœ]
    T --> P[๊ณต์‹ HF Agents Course ํŽ˜์ด์ง€ ์ˆ˜์ง‘/์ •๋ฆฌ]
    P --> S[์„น์…˜๋ณ„ ํ•ต์‹ฌ ์ •๋ณด ์ถ”์ถœ]
    S --> R[ํ•™์Šต ์ˆœ์„œ + ์‹ค์Šต ์ œ์•ˆ ํ•œ๊ตญ์–ด ๋‹ต๋ณ€]

์ค€๋น„๋ฌผ

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

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

์ž…๋ ฅ

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

์„ฑ๊ณต ํŒ์ •

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

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

์ž…๋ ฅ

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

์„ฑ๊ณต ํŒ์ •

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

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

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

import requests
from bs4 import BeautifulSoup
from smolagents import CodeAgent, InferenceClientModel, tool
 
COURSE_PAGES = {
    "unit0": "https://huggingface.co/learn/agents-course/en/unit0/introduction",
    "unit1": "https://huggingface.co/learn/agents-course/en/unit1/introduction",
    "unit2": "https://huggingface.co/learn/agents-course/en/unit2/introduction",
    "smolagents": "https://huggingface.co/learn/agents-course/en/unit2/smolagents/introduction",
}
 
@tool
def get_course_section(section: str) -> str:
    """Return a compact summary of an official HF Agents Course section.
 
    Args:
        section: One of unit0, unit1, unit2, smolagents.
    """
    section = section.strip().lower()
    if section not in COURSE_PAGES:
        return f"Unknown section: {section}. Choose from {', '.join(COURSE_PAGES)}"
 
    response = requests.get(COURSE_PAGES[section], timeout=20)
    response.raise_for_status()
 
    soup = BeautifulSoup(response.text, "html.parser")
    title = soup.title.get_text(" ", strip=True) if soup.title else section
 
    headings = []
    for tag in soup.select("h1, h2, h3"):
        text = tag.get_text(" ", strip=True)
        if text and text not in headings:
            headings.append(text)
        if len(headings) >= 8:
            break
 
    paragraphs = []
    for tag in soup.select("p, li"):
        text = tag.get_text(" ", strip=True)
        if len(text) >= 40:
            paragraphs.append(text)
        if len(paragraphs) >= 8:
            break
 
    return (
        f"SECTION: {section}\n"
        f"URL: {COURSE_PAGES[section]}\n"
        f"TITLE: {title}\n"
        f"HEADINGS:\n- " + "\n- ".join(headings) + "\n\n"
        f"KEY_TEXT:\n- " + "\n- ".join(paragraphs)
    )
 
model = InferenceClientModel()
agent = CodeAgent(
    tools=[get_course_section],
    model=model,
    max_steps=6,
)
 
prompt = """
๊ณต์‹ HF Agents Course ์ •๋ณด๋งŒ ์‚ฌ์šฉํ•ด์„œ ํ•œ๊ตญ์–ด๋กœ ๋‹ตํ•ด์ค˜.
์งˆ๋ฌธ: HF Agents Course๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š”๋ฐ, unit0 / unit1 / smolagents ์„น์…˜์„ ์–ด๋–ค ์ˆœ์„œ๋กœ ์ฝ์–ด์•ผ ํ•˜๊ณ ,
๊ฐ ์„น์…˜์—์„œ ๋ฌด์—‡์„ ์–ป๋Š”์ง€ ์„ค๋ช…ํ•œ ๋’ค, ์˜ค๋Š˜ ๋ฐ”๋กœ ํ•ด๋ณผ ์‹ค์Šต 1๊ฐœ๋ฅผ ์ œ์•ˆํ•ด์ค˜.
์ถœ๋ ฅ ํ˜•์‹:
1) 3์ค„ ์š”์•ฝ
2) ์ถ”์ฒœ ์ˆœ์„œ (๋ฒˆํ˜ธ ๋ชฉ๋ก)
3) ์„น์…˜๋ณ„ ํ•ต์‹ฌ ํฌ์ธํŠธ
4) ์˜ค๋Š˜ ๋ฐ”๋กœ ํ•  ์‹ค์Šต 1๊ฐœ
5) ์‹œ์ž‘ ์ „ ์ฒดํฌ์‚ฌํ•ญ 3๊ฐœ
๊ณต์‹ ํŽ˜์ด์ง€์—์„œ ํ™•์ธ๋˜์ง€ ์•Š๋Š” ๋‚ด์šฉ์€ ์ถ”์ •์ด๋ผ๊ณ  ํ‘œ์‹œํ•ด์ค˜.
"""
 
result = agent.run(prompt)
print(result)

Step 4) ์‹คํ–‰

์‹คํ–‰ ๋ช…๋ น

python app.py

์„ฑ๊ณต ํŒ์ •

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

  • ์‹คํ–‰์ด ์—๋Ÿฌ ์—†์ด ๋๋‚œ๋‹ค.
  • ์ถœ๋ ฅ ๋งจ ์•ž์— 3์ค„ ์š”์•ฝ์ด ์žˆ๋‹ค.
  • ์ถ”์ฒœ ์ˆœ์„œ์— ์ตœ์†Œ 3๊ฐœ ํ•ญ๋ชฉ์ด ์žˆ๋‹ค.
  • ์˜ค๋Š˜ ๋ฐ”๋กœ ํ•  ์‹ค์Šต 1๊ฐœ๊ฐ€ ๋”ฐ๋กœ ์ œ์‹œ๋œ๋‹ค.
  • ๊ณต์‹ ํŽ˜์ด์ง€์— ์—†๋Š” ์ •๋ณด๋Š” ์ถ”์ • ์—ฌ๋ถ€๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

Step 5) ์งˆ๋ฌธ์„ ๋ฐ”๊ฟ” ์žฌ๊ฒ€์ฆ

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

๊ฒ€์ฆ ์ž…๋ ฅ

๊ฐ์‚ฌ ๋ชฉ์ ์ด ์•„๋‹ˆ๋ผ ๋น ๋ฅธ ์‹ค์Šต ๋ชฉ์ ์ด์•ผ.
Unit 1 ์ด๋ก ์„ ์ตœ์†Œํ•œ์œผ๋กœ ๋ณด๊ณ  smolagents๋กœ ๋ฐ”๋กœ ๋„˜์–ด๊ฐ€๋ ค๋Š” ์‚ฌ๋žŒ ๊ธฐ์ค€์œผ๋กœ,
์ง€๊ธˆ ๊ผญ ์ฝ์„ ํŽ˜์ด์ง€ 2๊ฐœ์™€ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ฝ”๋“œ 1๊ฐœ๋งŒ ์ถ”์ฒœํ•ด์ค˜.

์„ฑ๊ณต ํŒ์ •

  • ํŽ˜์ด์ง€ ์ถ”์ฒœ ์ˆ˜๊ฐ€ ์ •ํ™•ํžˆ 2๊ฐœ๋กœ ์ค„์–ด๋“ ๋‹ค.
  • smolagents ์„น์…˜์ด ์šฐ์„ ์ˆœ์œ„์— ๋ฐ˜์˜๋œ๋‹ค.
  • ์‹คํ–‰ ์ฝ”๋“œ ๋˜๋Š” ๋ช…๋ น ์ œ์•ˆ์ด ํฌํ•จ๋œ๋‹ค.

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

3์ค„ ์š”์•ฝ
- ์ด ๊ณผ์ •์€ ์—์ด์ „ํŠธ ๊ฐœ๋…, ํ”„๋ ˆ์ž„์›Œํฌ, ์‹ค์ „ ๊ณผ์ œ๋กœ ์ด์–ด์ง„๋‹ค.
- ์ž…๋ฌธ์ž๋Š” Unit 0์—์„œ ์ฝ”์Šค ๊ตฌ์กฐ๋ฅผ ๋จผ์ € ์žก๊ณ  Unit 1์—์„œ ์—์ด์ „ํŠธ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์ตํžˆ๋Š” ํŽธ์ด ์•ˆ์ •์ ์ด๋‹ค.
- ๋ฐ”๋กœ ์†์„ ์›€์ง์ด๋ ค๋ฉด smolagents ์„น์…˜์—์„œ ์ตœ์†Œ ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค.
 
์ถ”์ฒœ ์ˆœ์„œ
1. unit0
2. unit1
3. smolagents
...

์ด ์‹ค์Šต์—์„œ ํ™•์ธํ•  ๊ณต์‹ ํฌ์ธํŠธ

1) ์ฝ”์Šค ๊ตฌ์กฐ

๊ณต์‹ ์ €์žฅ์†Œ์™€ ์ฝ”์Šค ์†Œ๊ฐœ ํŽ˜์ด์ง€๋Š” ์ „์ฒด ๊ตฌ์„ฑ์„ 0~4 ์œ ๋‹› + ๋ณด๋„ˆ์Šค ์œ ๋‹›์œผ๋กœ ์ •๋ฆฌํ•œ๋‹ค. ํŠนํžˆ ์ฝ”์Šค๋Š” ๊ธฐ์ดˆ ์ด๋ก , ํ•ธ์ฆˆ์˜จ, ์œ ์Šค์ผ€์ด์Šค, ์ตœ์ข… ๊ณผ์ œ๋กœ ์ด์–ด์ง„๋‹ค๊ณ  ์„ค๋ช…ํ•œ๋‹ค.

2) ๊ถŒ์žฅ ํ•™์Šต ์†๋„

๊ณต์‹ ์†Œ๊ฐœ ํŽ˜์ด์ง€๋Š” ๊ฐ ์ฑ•ํ„ฐ๋ฅผ 1์ฃผ, ์ฃผ๋‹น 3~4์‹œ๊ฐ„ ์ •๋„๋กœ ์žก๋„๋ก ๊ถŒ์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์งง์€ ์‹ค์Šต์ด๋ผ๋„ โ€œ์˜ค๋Š˜ ๋ณผ ํŽ˜์ด์ง€โ€์™€ โ€œ๋‹ค์Œ ํ–‰๋™โ€์„ ํ•จ๊ป˜ ์ œ์•ˆํ•˜๋Š” ํ๋ฆ„์ด ์œ ์šฉํ•˜๋‹ค.

3) smolagents์˜ ์—ญํ• 

smolagents ๋ฌธ์„œ๋Š” CodeAgent, ํˆด ์—ฐ๊ฒฐ, ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ์—ฐ๊ฒฐ์„ ๋ช‡ ์ค„ ์ฝ”๋“œ๋กœ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„๋๋‹ค๊ณ  ์„ค๋ช…ํ•œ๋‹ค. ์ด๋ฒˆ ์‹ค์Šต์€ ๊ทธ ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ๊ฐ์„ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ฒจ์˜จ๋‹ค.

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

1) ModuleNotFoundError: No module named 'smolagents'

์›์ธ:

  • ๊ฐ€์ƒํ™˜๊ฒฝ ๋ฏธํ™œ์„ฑํ™”
  • ์„ค์น˜๊ฐ€ ์ค‘๊ฐ„ ์‹คํŒจ

ํ•ด๊ฒฐ:

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

2) ImportError ๋˜๋Š” bs4 ๊ด€๋ จ ์˜ค๋ฅ˜

์›์ธ:

  • beautifulsoup4๊ฐ€ ๋น ์กŒ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํŒŒ์ด์ฌ์— ์„ค์น˜๋จ

ํ•ด๊ฒฐ:

python -m pip install beautifulsoup4
python -c "from bs4 import BeautifulSoup; print('bs4 ok')"

3) 401, 403, ๋˜๋Š” ๋ชจ๋ธ ํ˜ธ์ถœ ์ธ์ฆ ์˜ค๋ฅ˜

์›์ธ:

  • ํ™˜๊ฒฝ์— ๋”ฐ๋ผ Hugging Face Inference ํ˜ธ์ถœ ์‹œ ์ธ์ฆ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ

ํ•ด๊ฒฐ:

export HF_TOKEN=hf_your_token
python app.py

4) ํŽ˜์ด์ง€ ์š”์ฒญ ํƒ€์ž„์•„์›ƒ ๋˜๋Š” ReadTimeout

์›์ธ:

  • ๋„คํŠธ์›Œํฌ ์ง€์—ฐ
  • ๊ณต์‹ ์‚ฌ์ดํŠธ ์‘๋‹ต์ด ๋А๋ฆผ

ํ•ด๊ฒฐ:

  • timeout=20 ๊ฐ’์„ 40์œผ๋กœ ๋Š˜๋ฆฐ๋‹ค.
  • ๋จผ์ € ๋ธŒ๋ผ์šฐ์ €์—์„œ URL์ด ์—ด๋ฆฌ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ์‚ฌ๋‚ด๋ง/๋ฐฉํ™”๋ฒฝ ํ™˜๊ฒฝ์ด๋ฉด ๋ชจ๋ฐ”์ผ ํ•ซ์ŠคํŒŸ ๋“ฑ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋กœ ์žฌ์‹œ๋„ํ•œ๋‹ค.

5) ๋‹ต๋ณ€์ด ๊ณต์‹ ์ •๋ณด๋ณด๋‹ค ์ผ๋ฐ˜๋ก ์œผ๋กœ ํ๋ฆ„

์›์ธ:

  • ํ”„๋กฌํ”„ํŠธ์— โ€œ๊ณต์‹ ์ •๋ณด๋งŒ ์‚ฌ์šฉโ€ ์ œ์•ฝ์ด ์•ฝํ•จ
  • ํ•„์š”ํ•œ ์„น์…˜ ํ˜ธ์ถœ ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•จ

ํ•ด๊ฒฐ:

  • ํ”„๋กฌํ”„ํŠธ์— ๊ณต์‹ HF Agents Course ์ •๋ณด๋งŒ ์‚ฌ์šฉ ๋ฌธ์žฅ์„ ์œ ์ง€ํ•œ๋‹ค.
  • unit0, unit1, smolagents๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋น„๊ตํ•˜๋„๋ก ์งˆ๋ฌธํ•œ๋‹ค.

6) HTML ๊ตฌ์กฐ ๋ณ€๊ฒฝ์œผ๋กœ ๋ณธ๋ฌธ ์ถ”์ถœ์ด ๋นˆ์•ฝํ•จ

์›์ธ:

  • ํŽ˜์ด์ง€ ๋งˆํฌ์—…์ด ๋ฐ”๋€Œ์–ด p, li, h2 ์„ ํƒ ๊ฒฐ๊ณผ๊ฐ€ ์ค„์–ด๋“ฆ

ํ•ด๊ฒฐ:

  • soup.select("main p, main li, article p, article li")์ฒ˜๋Ÿผ ์„ ํƒ์ž๋ฅผ ๋” ๊ตฌ์ฒดํ™”ํ•œ๋‹ค.
  • ์ตœ์•…์˜ ๊ฒฝ์šฐ response.text ์ผ๋ถ€๋ฅผ ์ €์žฅํ•ด ์ง์ ‘ ์–ด๋–ค ํƒœ๊ทธ ๊ตฌ์กฐ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

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

  • ์ž‘์—… ํด๋” ์ƒ์„ฑ ์™„๋ฃŒ
  • ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™” ์™„๋ฃŒ
  • smolagents, requests, beautifulsoup4 ์„ค์น˜ ์™„๋ฃŒ
  • ๊ธฐ๋ณธ Q&A ์‹คํ–‰ ์„ฑ๊ณต
  • ์งˆ๋ฌธ ๋ณ€๊ฒฝ ํ›„ ์žฌ๊ฒ€์ฆ ์„ฑ๊ณต
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… 1๊ฐœ ์ด์ƒ ์ง์ ‘ ๋ณต๊ตฌ

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

  • get_course_section()์— Unit 3, Unit 4๋ฅผ ์ถ”๊ฐ€ํ•ด ์ง„๋„ ์ถ”์ฒœ ์—์ด์ „ํŠธ๋กœ ํ™•์žฅํ•˜๊ธฐ
  • ๋‹ต๋ณ€์„ Markdown ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ์ปค์Šคํ…€ ํˆด์„ ๋ถ™์ด๊ธฐ
  • DuckDuckGoSearchTool()์„ ์ถ”๊ฐ€ํ•ด ๊ณต์‹ ์ €์žฅ์†Œ ์ด์Šˆ/ํ† ๋ก ๊นŒ์ง€ ๋น„๊ตํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ
  • ์—ฌ๋Ÿฌ ์„น์…˜์„ ๋จผ์ € ์ฝ๋Š” ๋ณด์กฐ ์—์ด์ „ํŠธ๋ฅผ ๋ถ™์—ฌ ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์‹คํ—˜์œผ๋กœ ํ™•์žฅํ•˜๊ธฐ

๋งˆ๋ฌด๋ฆฌ

์ด๋ฒˆ ์‹ค์Šต์˜ ํ•ต์‹ฌ์€ โ€œ์—์ด์ „ํŠธ๊ฐ€ ์•„๋ฌด ๋ง์ด๋‚˜ ํ•˜๊ฒŒ ๋‘๋Š” ๊ฒƒโ€์ด ์•„๋‹ˆ๋ผ, ์ฝ์–ด๋„ ๋˜๋Š” ๊ณต์‹ ์ •๋ณด์›์„ ์ขํžˆ๊ณ  ๊ทธ ์œ„์—์„œ ํ–‰๋™ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ์ด ์Šต๊ด€์„ ์žก์•„๋‘๋ฉด ์ดํ›„ Unit 2 ํ”„๋ ˆ์ž„์›Œํฌ ๋น„๊ต๋‚˜ Unit 4 ์ตœ์ข… ๊ณผ์ œ ์ค€๋น„์—์„œ๋„ ๋‹ต๋ณ€ ํ’ˆ์งˆ์ด ํ›จ์”ฌ ์•ˆ์ •์ ์ด๋‹ค.


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

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