์ด๋ฒˆ 1ํŽธ์€ โ€œ์—์ด์ „ํŠธ๊ฐ€ ๋ญ”์ง€ ์ดํ•ดํ–ˆ๋‹คโ€์—์„œ ๋๋‚˜์ง€ ์•Š๊ณ , ์‹ค์ œ ์—…๋ฌด์— ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ **์ดˆ๊ธฐ ์„ค๊ณ„์•ˆ(v0.1)**์„ ์™„์„ฑํ•˜๋Š” ๋ฐ ๋ชฉํ‘œ๊ฐ€ ์žˆ๋‹ค. ๊ฐœ๋…์„ ์งง๊ฒŒ ์ •๋ฆฌํ•˜๊ณ , ์‚ฌ๋ก€๋ฅผ ์ถฉ๋ถ„ํžˆ ๋ณธ ๋’ค, ๊ณผ์ œ๋กœ ์†์— ์ตํžˆ๋Š” ํ๋ฆ„์œผ๋กœ ๊ตฌ์„ฑํ–ˆ๋‹ค.

flowchart TD
  A[์‚ฌ์šฉ์ž ๋ชฉํ‘œ] --> B[๋ฌธ์ œ ์ •์˜]
  B --> C[๋„๊ตฌ ์„ ํƒ]
  C --> D[์‹คํ–‰ ๋ฃจํ”„]
  D --> E[๊ฒฐ๊ณผ ๊ฒ€์ฆ]
  E --> F[์šด์˜ ์ž๋™ํ™”]

0) 30์ดˆ ์š”์•ฝ

  • LLM์€ ์ƒ์„ฑ ์—”์ง„, ์—์ด์ „ํŠธ๋Š” ์‹คํ–‰ ์‹œ์Šคํ…œ์ด๋‹ค.
  • ์—์ด์ „ํŠธ์˜ ํ•ต์‹ฌ ๊ฐ€์น˜๋Š” ๋‹ต๋ณ€ ํ’ˆ์งˆ + ๋ฐ˜๋ณต ๊ฐ€๋Šฅ์„ฑ + ์ž๋™ํ™” ๊ฐ€๋Šฅ์„ฑ์ด๋‹ค.
  • ์˜ค๋Š˜ ์‚ฐ์ถœ๋ฌผ์€ โ€œ๋‚ด ์—…๋ฌด์— ๋งž๋Š” ์ตœ์†Œ ์—์ด์ „ํŠธ ์„ค๊ณ„์„œ 1๊ฐœโ€๋‹ค.

1) ์™œ ์—์ด์ „ํŠธ๊ฐ€ ์‹ค๋ฌด๋ฅผ ๋ฐ”๊พธ๋Š”๊ฐ€

๊ธฐ์กด์—๋Š” ์‚ฌ๋žŒ์ด ๊ฒ€์ƒ‰ โ†’ ์ •๋ฆฌ โ†’ ํŒ๋‹จ โ†’ ๋ณด๊ณ ๋ฅผ ๋ฐ˜๋ณตํ–ˆ๋‹ค. ์—์ด์ „ํŠธ๋Š” ์ด ๊ณผ์ •์„ ๋ฃจํ”„๋กœ ๊ณ ์ •ํ•œ๋‹ค.

  1. ์†๋„ ํ–ฅ์ƒ: ๋ฐ˜๋ณต ์ž‘์—… ์‹œ๊ฐ„์„ ์ค„์ž„
  2. ํ’ˆ์งˆ ์•ˆ์ •ํ™”: ๊ฒ€์ฆ ๊ทœ์น™์„ ๋‚ด์žฅํ•จ
  3. ์šด์˜ ํ™•์žฅ์„ฑ: ์˜ˆ์•ฝ ์‹คํ–‰/์กฐ๊ฑด ๊ธฐ๋ฐ˜ ์‹คํ–‰ ๊ฐ€๋Šฅ

๊ฒฐ๊ตญ ์ค‘์š”ํ•œ ๊ฑด โ€œ์ž˜ ๋‹ตํ•œ 1ํšŒโ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œ๊ฐ™์€ ํ’ˆ์งˆ๋กœ ๊ณ„์† ๋Œ์•„๊ฐ€๋Š” ๊ตฌ์กฐโ€๋‹ค.

2) ํ•ต์‹ฌ ๊ฐœ๋… 3๊ฐœ

2-1) LLM vs Agent

  • LLM: ํ…์ŠคํŠธ ์ƒ์„ฑ/์š”์•ฝ/์ถ”๋ก ์„ ์ž˜ํ•จ
  • Agent: ๋ชฉํ‘œ์™€ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผ ๋„๊ตฌ๋ฅผ ํ˜ธ์ถœํ•ด ์ž‘์—…์„ ์™„์ˆ˜ํ•จ

์˜ˆ์‹œ:

  • LLM: โ€œ์‹œ์žฅ ์กฐ์‚ฌ ๋ฐฉ๋ฒ•์€ ์ด๋ ‡๊ฒŒ ํ•˜์„ธ์š”.โ€
  • Agent: ์ž๋ฃŒ ์ˆ˜์ง‘ โ†’ ๋ถ„๋ฅ˜ โ†’ ๋น„๊ตํ‘œ ์ƒ์„ฑ โ†’ ๋ณด๊ณ ์„œ ์ž‘์„ฑ โ†’ ์ „๋‹ฌ๊นŒ์ง€ ์ˆ˜ํ–‰

2-2) Tool Calling

ํ˜„์‹ค ๋ฐ์ดํ„ฐ๋Š” ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.

  • ๊ฒ€์ƒ‰: ์ตœ์‹  ์ด์Šˆ ์ˆ˜์ง‘
  • ์บ˜๋ฆฐ๋”/๋ฉ”์ผ: ์ผ์ •/์š”์ฒญ ์ฒ˜๋ฆฌ
  • ํŒŒ์ผ/DB/API: ๊ฒฐ๊ณผ ์ €์žฅ๊ณผ ์ž๋™ํ™”
sequenceDiagram
  participant U as User
  participant A as Agent
  participant T1 as Search
  participant T2 as Fetch
  participant T3 as Summarize
  U->>A: ์˜ค๋Š˜ AI ๋‰ด์Šค ๋ธŒ๋ฆฌํ•‘ ๋งŒ๋“ค์–ด์ค˜
  A->>T1: web_search("today AI news")
  T1-->>A: ๋งํฌ ๋ชฉ๋ก
  A->>T2: fetch_article(urls)
  T2-->>A: ๋ณธ๋ฌธ ํ…์ŠคํŠธ
  A->>T3: summarize(text)
  T3-->>A: ์š”์•ฝ ๊ฒฐ๊ณผ
  A-->>U: 5์ค„ ๋ธŒ๋ฆฌํ•‘ + ๋งํฌ

2-3) Plan โ†’ Act โ†’ Observe

  • Plan: ์ž‘์—… ๋‹จ๊ณ„์™€ ๊ธฐ์ค€ ์„ค์ •
  • Act: ๋„๊ตฌ ํ˜ธ์ถœ ๋ฐ ์‹คํ–‰
  • Observe: ๊ฒฐ๊ณผ ํ’ˆ์งˆ ์ ๊ฒ€ ํ›„ ๋ณด์ •

์ด ๋ฃจํ”„๊ฐ€ ์žˆ์–ด์•ผ ์—์ด์ „ํŠธ๊ฐ€ โ€œํ•œ ๋ฒˆ ๋ฐ˜์งโ€์ด ์•„๋‹ˆ๋ผ โ€œ์šด์˜ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œโ€์ด ๋œ๋‹ค.

3) ์‚ฌ๋ก€๋กœ ์ดํ•ดํ•˜๊ธฐ (ํ’๋ถ€ํ•œ ์‹ค๋ฌด ์˜ˆ์‹œ)

์‚ฌ๋ก€ A: ์•„์นจ AI ๋‰ด์Šค ๋ธŒ๋ฆฌํ•‘ ์ž๋™ํ™”

์ƒํ™ฉ: ๋งค์ผ ์•„์นจ AI ๋‰ด์Šค๋ฅผ ์ง์ ‘ ์ฐพ๊ณ  ์ •๋ฆฌํ•˜๋А๋ผ 40๋ถ„ ์†Œ์š”

  • ๋ชฉํ‘œ: ์˜ค์ „ 7์‹œ, 3๊ฐœ ํ•ต์‹ฌ ๋‰ด์Šค + ์™œ ์ค‘์š”ํ•œ์ง€ 1์ค„์”ฉ
  • ๋„๊ตฌ: web_search, fetch_article, summarize
  • ๊ฒ€์ฆ: ์‹ ๋ขฐ ๋„๋ฉ”์ธ๋งŒ ํ—ˆ์šฉ, ์ค‘๋ณต ๊ธฐ์‚ฌ ์ œ๊ฑฐ
  • ํ•ต์‹ฌ ๋ณ€ํ™”: 40๋ถ„ โ†’ 7๋ถ„ ๊ฒ€ํ†  ์ค‘์‹ฌ์œผ๋กœ ์ „ํ™˜

์‚ฌ๋ก€ B: ๊ณ ๊ฐ ๋ฌธ์˜ 1์ฐจ ๋ถ„๋ฅ˜

์ƒํ™ฉ: CS ๋ฉ”์ผ์ด ์„ž์—ฌ ๋“ค์–ด์™€ ์šฐ์„ ์ˆœ์œ„ ํŒ๋‹จ์ด ๋А๋ฆผ

  • ๋ชฉํ‘œ: ๋ฌธ์˜๋ฅผ ๊ธด๊ธ‰/์ผ๋ฐ˜/๊ฒฐ์ œ/ํ™˜๋ถˆ/๊ธฐ์ˆ ๋ฌธ์˜๋กœ ์ž๋™ ํƒœ๊น…
  • ๋„๊ตฌ: ๋ฉ”์ผ ์ˆ˜์ง‘ + ๋ถ„๋ฅ˜ ๋ฃฐ + ์š”์•ฝ ์ƒ์„ฑ
  • ๊ฒ€์ฆ: ๊ธด๊ธ‰ ํ‚ค์›Œ๋“œ(์žฅ์• /๊ฒฐ์ œ์˜ค๋ฅ˜/ํ™˜๋ถˆ์š”์ฒญ) ๋ˆ„๋ฝ ์—ฌ๋ถ€
  • ํ•ต์‹ฌ ๋ณ€ํ™”: ์‘๋‹ต SLA ์ค€์ˆ˜์œจ ๊ฐœ์„ 

์‚ฌ๋ก€ C: ํˆฌ์ž ๋ฉ”๋ชจ ์ดˆ์•ˆ ์ƒ์„ฑ

์ƒํ™ฉ: ๋งค์ฃผ ์ข…๋ชฉ/ํšŒ์‚ฌ ๊ฒ€ํ†  ๋ฉ”๋ชจ ์ž‘์„ฑ ์‹œ๊ฐ„์ด ๊ธธ๋‹ค

  • ๋ชฉํ‘œ: ํ•ต์‹ฌ ์ง€ํ‘œยท๋ฆฌ์Šคํฌยท์ฒดํฌํฌ์ธํŠธ 1ํŽ˜์ด์ง€ ์ดˆ์•ˆ ์ƒ์„ฑ
  • ๋„๊ตฌ: ๋ฐ์ดํ„ฐ ์กฐํšŒ + ํ…œํ”Œ๋ฆฟ ์ฑ„์›€ + ์š”์•ฝ
  • ๊ฒ€์ฆ: ์ˆซ์ž ์ถœ์ฒ˜ ํ‘œ๊ธฐ, ๊ณผ์žฅ ํ‘œํ˜„ ๊ธˆ์ง€
  • ํ•ต์‹ฌ ๋ณ€ํ™”: โ€œ๋นˆ ๋ฌธ์„œ ์‹œ์ž‘โ€ ๋ถ€๋‹ด ๊ฐ์†Œ, ๊ฒ€ํ†  ์ค‘์‹ฌ ์ „ํ™˜

์‚ฌ๋ก€ D: ์ฝ˜ํ…์ธ  ์ œ์ž‘ ํŒŒ์ดํ”„๋ผ์ธ

์ƒํ™ฉ: ์˜์ƒ ๊ธฐํšโ†’์Šคํฌ๋ฆฝํŠธโ†’์ธ๋„ค์ผ ๋ฌธ๊ตฌ๊นŒ์ง€ ์‚ฌ๋žŒ์ด ์ˆœ์ฐจ ์ฒ˜๋ฆฌ

  • ๋ชฉํ‘œ: ์ฃผ์ œ ์ž…๋ ฅ ์‹œ ๊ธฐํš์•ˆยทํ›…ยท๋ชฉ์ฐจยท์ธ๋„ค์ผ ์นดํ”ผ ๋™์‹œ ์ƒ์„ฑ
  • ๋„๊ตฌ: ๋ฆฌ์„œ์น˜ + ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ + ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ ์šฉ
  • ๊ฒ€์ฆ: ํ†ค ์ผ๊ด€์„ฑ, ๊ธธ์ด ์ œํ•œ, ๊ธˆ์ง€ ํ‘œํ˜„ ํ•„ํ„ฐ
  • ํ•ต์‹ฌ ๋ณ€ํ™”: ์ œ์ž‘ ์ค€๋น„ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ๋‹จ์ถ•

4) ์น ํŒ ์น˜ํŠธ์‹œํŠธ

์•„๋ž˜ 5๋ฌธ์žฅ์œผ๋กœ ์„ค๊ณ„ํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์ดˆ์•ˆ์ด ์™„์„ฑ๋œ๋‹ค.

  1. ๋ชฉํ‘œ: ๋ฌด์—‡์„ ์–ธ์ œ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ๋‚ผ ๊ฒƒ์ธ๊ฐ€?
  2. ์ž…๋ ฅ: ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?
  3. ๋„๊ตฌ: ์–ด๋–ค ํ•จ์ˆ˜/API๋ฅผ ํ˜ธ์ถœํ•  ๊ฒƒ์ธ๊ฐ€?
  4. ๊ทœ์น™: ์‹คํŒจ์™€ ์˜ˆ์™ธ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€?
  5. ๊ฒ€์ฆ: ๊ฒฐ๊ณผ๊ฐ€ ํ•ฉ๊ฒฉ์ธ์ง€ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•  ๊ฒƒ์ธ๊ฐ€?

5) ์‹ค์Šต A โ€” ๋‚ด ์—…๋ฌด ์—์ด์ „ํŠธ ์„ค๊ณ„ (๊ธฐ์ดˆ)

Step 1. ๋ชฉํ‘œ ํ•œ ์ค„

์˜ˆ์‹œ: ๋งค์ผ ์˜ค์ „ 7์‹œ, AI ๋‰ด์Šค 3๊ฐœ๋ฅผ 5์ค„ ๋ธŒ๋ฆฌํ•‘์œผ๋กœ ๋ณด๊ณ ํ•œ๋‹ค.

Step 2. ์ž…๋ ฅ/์ถœ๋ ฅ ์ •์˜

  • ์ž…๋ ฅ: ํ‚ค์›Œ๋“œ, ๋‚ ์งœ, ์ถœ์ฒ˜ ์กฐ๊ฑด
  • ์‚ฐ์ถœ๋ฌผ: ์ œ๋ชฉ/ํ•ต์‹ฌ/์˜๋ฏธ/๋งํฌ

Step 3. ๋„๊ตฌ ๋ชฉ๋ก ์ž‘์„ฑ

  • web_search(query, count)
  • fetch_article(url)
  • summarize(text)

Step 4. ์‹คํ–‰ ๋‹จ๊ณ„ ์„ค๊ณ„

1) ๊ฒ€์ƒ‰
2) ์‹ ๋ขฐ ์ถœ์ฒ˜ ํ•„ํ„ฐ๋ง
3) ๋ณธ๋ฌธ ์ถ”์ถœ
4) ์š”์•ฝ
5) ์ค‘๋ณต ์ œ๊ฑฐ
6) ์ตœ์ข… ๋ธŒ๋ฆฌํ•‘ ์ƒ์„ฑ

Step 5. ๊ฒ€์ฆ ๊ธฐ์ค€ ์„ค์ •

  • ์ถœ์ฒ˜ ์‹ ๋ขฐ๋„
  • ์‚ฌ์‹ค/์ถ”์ธก ๊ตฌ๋ถ„
  • ํ–‰๋™ ์ œ์•ˆ ํฌํ•จ ์—ฌ๋ถ€

6) ์‹ค์Šต B โ€” ์‹คํŒจ ๋ฐฉ์ง€ ์„ค๊ณ„ (์ค‘๊ธ‰)

flowchart LR
  A[๊ฒ€์ƒ‰ 0๊ฑด] --> B[๋Œ€์ฒด ํ‚ค์›Œ๋“œ ์„ธํŠธ ํ˜ธ์ถœ]
  C[์ €ํ’ˆ์งˆ ์ถœ์ฒ˜ ํฌํ•จ] --> D[ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๊ฐ•์ œ]
  E[์ค‘๋ณต ๊ธฐ์‚ฌ ๊ณผ๋‹ค] --> F[์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์ œ๊ฑฐ]
  G[์š”์•ฝ ๊ณผ์žฅ] --> H[๊ทผ๊ฑฐ๋ฌธ์žฅ 1๊ฐœ ์ฒจ๋ถ€]

ํ•„์ˆ˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ:

  1. ๊ฒฐ๊ณผ 0๊ฑด์ผ ๋•Œ ์žฌ์‹œ๋„ ์ „๋žต
  2. ์ถœ์ฒ˜ ํ’ˆ์งˆ ๊ธฐ์ค€ ๋ฏธ๋‹ฌ ์‹œ ์ œ์™ธ ๊ทœ์น™
  3. ์ค‘๋ณต ์ œ๊ฑฐ ๊ธฐ์ค€(์ œ๋ชฉ/URL ์œ ์‚ฌ๋„)
  4. ์š”์•ฝ ๊ณผ์žฅ ํƒ์ง€(์ถ”์ธก์–ด ํ•„ํ„ฐ)

7) ์‹ค์Šต C โ€” ์šด์˜ ๊ด€์  ํ™•์žฅ ๊ณผ์ œ (์ƒ๊ธ‰)

์•„๋ž˜ ๊ณผ์ œ๋Š” ์‹ค์ œ ์šด์˜ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์œผ๋กœ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ํ›ˆ๋ จ์ด๋‹ค.

๊ณผ์ œ 1) KPI ์ •์˜ ๊ณผ์ œ

  • ๋ชฉํ‘œ ์ž‘์—… 1๊ฐœ๋ฅผ ์ •ํ•˜๊ณ  ์ „/ํ›„ ์ง€ํ‘œ ์ž‘์„ฑ
  • ํ•„์ˆ˜ ์ง€ํ‘œ: ์ฒ˜๋ฆฌ์‹œ๊ฐ„, ์˜ค๋ฅ˜์œจ, ์žฌ์ž‘์—…๋ฅ 

๊ณผ์ œ 2) ์•ˆ์ „์žฅ์น˜ ๊ณผ์ œ

  • โ€œ์ž˜๋ชป ์‹คํ–‰๋˜๋ฉด ์œ„ํ—˜ํ•œ ์ž‘์—…โ€ 3๊ฐœ๋ฅผ ์ ๊ณ 
  • ๊ฐ ์ž‘์—…๋ณ„ ์Šน์ธ ๋‹จ๊ณ„(์‚ฌ๋žŒ ๊ฒ€ํ† )๋ฅผ ์„ค๊ณ„

๊ณผ์ œ 3) ์ถœ๋ ฅ ํฌ๋งท ํ‘œ์ค€ํ™” ๊ณผ์ œ

  • ๊ฒฐ๊ณผ๋ฌผ์„ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๊ฐ•์ œ
  • ์˜ˆ: ์š”์•ฝ 3์ค„ + ๊ทผ๊ฑฐ 2์ค„ + ๋งํฌ 3๊ฐœ

๊ณผ์ œ 4) ์Šค์ผ€์ค„๋ง ๊ณผ์ œ

  • ์ˆ˜๋™ ์‹คํ–‰/์˜ˆ์•ฝ ์‹คํ–‰/์กฐ๊ฑด ์‹คํ–‰์„ ๊ตฌ๋ถ„ํ•˜๊ณ 
  • ์–ด๋–ค ์ž‘์—…์„ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋Œ๋ฆด์ง€ ํ‘œ๋กœ ์ •๋ฆฌ

๊ณผ์ œ 5) ์žฌํ˜„์„ฑ ๊ณผ์ œ

  • ๊ฐ™์€ ์ž…๋ ฅ์œผ๋กœ 3ํšŒ ์‹คํ–‰ํ•ด ๊ฒฐ๊ณผ ์ผ๊ด€์„ฑ ์ ๊ฒ€
  • ํŽธ์ฐจ ์›์ธ๊ณผ ๋ณด์ • ๋ฐฉ๋ฒ• ๊ธฐ๋ก

8) ์ฝ”๋“œ ์‹คํ–‰ ๊ฐ€์ด๋“œ (์„ค์น˜ โ†’ ๋ถ™์—ฌ๋„ฃ๊ธฐ โ†’ ์‹คํ–‰)

์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋ฉด ์ฒ˜์Œ์ธ ์‚ฌ๋žŒ๋„ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

8-0) 5๋ถ„ ํ€ต์Šคํƒ€ํŠธ (๋จผ์ € 1ํšŒ ์„ฑ๊ณต)

  1. ๋ฌธ์„œ ํ•˜๋‹จ ์‹ค์Šต ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ์—์„œ hf-agents-day1-starter.zip์„ ๋ฐ›๋Š”๋‹ค.
  2. ์••์ถ•์„ ํ’€๊ณ  ํด๋”๋กœ ์ด๋™ํ•œ๋‹ค.
  3. ์•„๋ž˜ 3์ค„๋งŒ ๋จผ์ € ์‹คํ–‰ํ•œ๋‹ค.
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt && python day1.py

๋ชฉํ‘œ: ์šฐ์„  1ํšŒ ์ •์ƒ ์‹คํ–‰์„ ํ™•์ธํ•œ ๋’ค, ์„ธ๋ถ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š” ์ˆœ์„œ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.

8-1) ์ค€๋น„๋ฌผ

  • Python 3.10+
  • ํ„ฐ๋ฏธ๋„(๋งฅ: Terminal/iTerm, ์œˆ๋„์šฐ: PowerShell)
  • ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ(VS Code ๊ถŒ์žฅ)

8-2) ํ”„๋กœ์ ํŠธ ํด๋” ๋งŒ๋“ค๊ธฐ

mkdir hf-agents-day1
cd hf-agents-day1
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\\Scripts\\activate

8-3) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

A. ์ตœ์†Œ ์‹ค์Šต(์ˆœ์ˆ˜ Python ์˜ˆ์ œ)

์•„๋ฌด ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ์‹คํ–‰ ๊ฐ€๋Šฅ.

B. Hugging Face ์Šคํƒ€์ผ ์‹ค์Šต(smolagents)

pip install -U pip
pip install smolagents

์„ ํƒ์ ์œผ๋กœ ์ž์ฃผ ์“ฐ๋Š” ํŒจํ‚ค์ง€:

pip install requests python-dotenv

8-4) ์ฝ”๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋ฐฉ๋ฒ•

  1. VS Code์—์„œ hf-agents-day1 ํด๋” ์—ด๊ธฐ
  2. day1.py ํŒŒ์ผ ์ƒ์„ฑ
  3. ์•„๋ž˜ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ถ™์—ฌ๋„ฃ๊ธฐ
  4. ์ €์žฅ(Ctrl/Cmd + S)

8-5) ์‹คํ–‰ ๋ฐฉ๋ฒ•

python day1.py

8-5-1) ์‹คํ–‰ ๊ฒฐ๊ณผ ์˜ˆ์‹œ (์ •์ƒ/์‹คํŒจ)

์ •์ƒ ์˜ˆ์‹œ:

1. AI News A
- ...
- https://example.com/a
 
2. AI News B
- ...
- https://example.com/b

์‹คํŒจ ์˜ˆ์‹œ:

python: command not found

๋˜๋Š”

ModuleNotFoundError: No module named 'smolagents'

8-6) ์ž์ฃผ ๋‚˜๋Š” ์˜ค๋ฅ˜์™€ ํ•ด๊ฒฐ

  • python: command not found
    • python3 day1.py๋กœ ์‹คํ–‰
  • ModuleNotFoundError: smolagents
    • ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™” ํ™•์ธ ํ›„ pip install smolagents
  • API/๋ชจ๋ธ ํ˜ธ์ถœ ์˜ค๋ฅ˜
    • ์ฒ˜์Œ์—๋Š” ์˜ˆ์ œ 1(์ˆœ์ˆ˜ Python)๋ถ€ํ„ฐ ๋จผ์ € ์„ฑ๊ณต์‹œํ‚ค๊ณ , ๊ทธ ๋‹ค์Œ ์˜ˆ์ œ 2๋กœ ํ™•์žฅ

8-7) ์ฝ”๋“œ ํ™œ์šฉ๋ฒ•(์–ด๋–ป๊ฒŒ ๋‚ด ์—…๋ฌด์— ๋ถ™์ผ๊นŒ)

  • web_search("latest AI news") โ†’ ๋‚ด ์ฃผ์ œ ํ‚ค์›Œ๋“œ๋กœ ๋ณ€๊ฒฝ
  • ์ถœ๋ ฅ ํ•„๋“œ(title/summary/url) โ†’ ๋‚ด ๋ณด๊ณ  ํฌ๋งท์œผ๋กœ ๋ณ€๊ฒฝ
  • ์‹คํ–‰ ํ•จ์ˆ˜๋ฅผ ์Šค์ผ€์ค„๋Ÿฌ(cron ๋“ฑ)์™€ ์—ฐ๊ฒฐํ•˜๋ฉด ์ž๋™ ๋ณด๊ณ  ๋ฃจํ”„ ์™„์„ฑ

์•„๋ž˜ ์ฝ”๋“œ๋Š” ํ•™์Šต์šฉ ์ตœ์†Œ ์˜ˆ์ œ๋‹ค. ์‹ค์ œ ํ”„๋กœ๋•์…˜์—๋Š” ์—๋Ÿฌ ์ฒ˜๋ฆฌ/๋กœ๊น…/๊ถŒํ•œ ์ œ์–ด๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

์˜ˆ์ œ 1) ์ˆœ์ˆ˜ Python์œผ๋กœ Tool Calling ํ‰๋‚ด๋‚ด๊ธฐ

from typing import List, Dict
 
def web_search(query: str) -> List[Dict[str, str]]:
    # ์‹ค์ œ ๊ตฌํ˜„์—์„œ๋Š” ๊ฒ€์ƒ‰ API ํ˜ธ์ถœ
    return [
        {"title": "AI News A", "url": "https://example.com/a", "snippet": "..."},
        {"title": "AI News B", "url": "https://example.com/b", "snippet": "..."},
        {"title": "AI News C", "url": "https://example.com/c", "snippet": "..."},
    ]
 
def summarize(text: str) -> str:
    # ์‹ค์ œ ๊ตฌํ˜„์—์„œ๋Š” LLM ์š”์•ฝ ํ˜ธ์ถœ
    return text[:120] + "..."
 
def run_daily_briefing():
    results = web_search("latest AI news")
    top3 = results[:3]
    report = []
    for item in top3:
        report.append({
            "title": item["title"],
            "summary": summarize(item["snippet"]),
            "url": item["url"],
        })
    return report
 
if __name__ == "__main__":
    for i, row in enumerate(run_daily_briefing(), 1):
        print(f"{i}. {row['title']}\n- {row['summary']}\n- {row['url']}\n")

์˜ˆ์ œ 2) Hugging Face ์ƒํƒœ๊ณ„ ์Šคํƒ€์ผ(ํ•™์Šต์šฉ ์Šค์ผˆ๋ ˆํ†ค)

# pip install smolagents
from smolagents import CodeAgent, tool
 
@tool
def get_weather(city: str) -> str:
    """Return weather summary for a city."""
    # ์‹ค์ œ ๊ตฌํ˜„: ๋‚ ์”จ API ํ˜ธ์ถœ
    return f"{city}: 3ยฐC, cloudy"
 
agent = CodeAgent(
    tools=[get_weather],
    model="Qwen/Qwen2.5-Coder-32B-Instruct"  # ์˜ˆ์‹œ. ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๋ณ€๊ฒฝ
)
 
result = agent.run("์„œ์šธ ๋‚ด์ผ ๋‚ ์”จ ์š”์•ฝํ•˜๊ณ  ์™ธ์ถœ ํŒ ํ•œ ์ค„ ์ถ”๊ฐ€ํ•ด์ค˜")
print(result)

์˜ˆ์ œ 3) ์‹คํ–‰ ๋ฃจํ”„๋ฅผ ๋ช…์‹œํ•œ ์˜์‚ฌ์ฝ”๋“œ

def agent_loop(user_goal):
    plan = make_plan(user_goal)             # Plan
    raw = call_tools(plan)                  # Act
    checked = validate(raw, rules=[
        "์ถœ์ฒ˜ ์‹ ๋ขฐ๋„",
        "์ค‘๋ณต ์ œ๊ฑฐ",
        "์ถ”์ธก ํ‘œํ˜„ ๊ธˆ์ง€",
    ])                                      # Observe
    return format_output(checked)

9) ์ œ์ถœ๋ฌผ ํ…œํ”Œ๋ฆฟ (๋ณต๋ถ™)

### Agent Design v0.1
- ๋ชฉํ‘œ:
- ์‚ฌ์šฉ์ž:
- ์ž…๋ ฅ ๋ฐ์ดํ„ฐ:
- ์ถœ๋ ฅ ํฌ๋งท:
- ๋„๊ตฌ ๋ชฉ๋ก:
- ์‹คํ–‰ ๋‹จ๊ณ„:
- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ:
- ๊ฒ€์ฆ ๊ธฐ์ค€:
- ์šด์˜ ์ฃผ๊ธฐ(์ˆ˜๋™/์˜ˆ์•ฝ/์กฐ๊ฑด):
- KPI(์‹œ๊ฐ„/์˜ค๋ฅ˜/์žฌ์ž‘์—…):

9) ์ž๊ธฐํ‰๊ฐ€ ๋ฃจ๋ธŒ๋ฆญ

  • A (์‹ค๋ฌด ํˆฌ์ž… ๊ฐ€๋Šฅ): ๋ชฉํ‘œ/๋„๊ตฌ/์˜ˆ์™ธ/๊ฒ€์ฆ/KPI ๋ชจ๋‘ ๋ช…ํ™•
  • B (๋ณด์™„ ํ›„ ๊ฐ€๋Šฅ): ๊ธฐ๋ณธ ๋ฃจํ”„๋Š” ์žˆ์œผ๋‚˜ ์˜ˆ์™ธยท์ง€ํ‘œ ๋ถ€์กฑ
  • C (ํ•™์Šต ๋‹จ๊ณ„): ์„ค๋ช… ์œ„์ฃผ, ์‹คํ–‰ ๊ตฌ์กฐ ๋ถˆ๋ช…ํ™•

10) ์ž์ฃผ ํ•˜๋Š” ์‹ค์ˆ˜ TOP 7

  1. ๋ชฉํ‘œ๊ฐ€ ์ถ”์ƒ์ ์ž„ (โ€œ์ž˜ ์ •๋ฆฌํ•ด์ค˜โ€)
  2. ๋„๊ตฌ ์—†์ด ๋ชจ๋ธ์—๊ฒŒ๋งŒ ๋งก๊น€
  3. ์ถœ๋ ฅ ํ˜•์‹ ๋ฏธ์ •์˜
  4. ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ถ€์žฌ
  5. ๊ฒ€์ฆ ๊ธฐ์ค€ ๋ถ€์žฌ
  6. ์ž๋™ ์‹คํ–‰ ์ „์— ์ƒŒ๋“œ๋ฐ•์Šค ํ…Œ์ŠคํŠธ ์ƒ๋žต
  7. ์ง€ํ‘œ ์—†์ด โ€œ์ข‹์•„์ง„ ๊ฒƒ ๊ฐ™์Œโ€์œผ๋กœ ํŒ๋‹จ

11) ์˜ค๋Š˜ ๊ณผ์ œ ์ œ์ถœ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • ๊ธฐ์ดˆ ๊ณผ์ œ(A) ์™„๋ฃŒ
  • ์‹คํŒจ ๋ฐฉ์ง€(B) ์™„๋ฃŒ
  • ์šด์˜ ํ™•์žฅ(C) 2๊ฐœ ์ด์ƒ ์™„๋ฃŒ
  • ์„ค๊ณ„์„œ v0.1 ์ œ์ถœ
  • ์ž๊ธฐํ‰๊ฐ€(A/B/C) ๊ธฐ๋ก

12) ๋‹ค์Œ ํŽธ ์˜ˆ๊ณ  (02ํŽธ)

02ํŽธ์€ ์˜ค๋Š˜ ๋งŒ๋“  ์„ค๊ณ„๋ฅผ ์‹ค์ œ Tool Calling ๊ตฌ์กฐ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.

  • ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ์„ค๊ณ„
  • ํ˜ธ์ถœ ์ˆœ์„œ ๊ณ ์ •
  • ์ถœ๋ ฅ ํฌ๋งท ๊ฐ•์ œ
  • ์ตœ์†Œ ์‹คํ–‰ ๋ฐ๋ชจ

์ฐธ๊ณ  ์ž๋ฃŒ (๊ณต์‹)

์‹ค์Šต ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

ํŒŒ์ผ์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์—ด๋ฆฌ๋ฉด, ์šฐํด๋ฆญ ํ›„ **โ€œ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ €์žฅโ€**์„ ์„ ํƒํ•ด ๋‹ค์šด๋กœ๋“œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

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

์ด ๋ฌธ์„œ๋Š” ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ ์ž‘์„ฑ ๋ฐ ๊ตฌ์กฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ, ์ตœ์ข… ๊ณต๊ฐœ ์ „ ์‚ฌ๋žŒ์ด ๊ฒ€ํ† ยท๋ณด์ •ํ•œ๋‹ค.