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

ํ•œ ์ค„ ๊ฒฐ๋ก 

์—์ด์ „ํŠธ๊ฐ€ ๋ฐ”๋กœ ๋‹ต๋ถ€ํ„ฐ ๋‚ด๊ฒŒ ๋‘์ง€ ๋ง๊ณ , (1) ๊ณ„ํš ์ƒ์„ฑ (2) ์‹คํ–‰ (3) ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๊ฒ€์ฆ ๋‹จ๊ณ„๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ์ดˆ๋ณด์ž๋„ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ ํ’ˆ์งˆ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์™œ ์ค‘์š”ํ•œ๊ฐ€ (์ดˆ๋ณด์ž ๊ด€์ )

์‹ค๋ฌด์—์„œ ์—์ด์ „ํŠธ ์‹คํŒจ๋Š” ๋ณดํ†ต ์ด 3๊ฐ€์ง€๋‹ค.

  1. ํ•ต์‹ฌ ์š”๊ตฌ๋ฅผ ๋นผ๋จน์Œ
  2. ๋ฏผ๊ฐ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ
  3. ๊ณ ์œ„ํ—˜ ์š”์ฒญ์ธ๋ฐ ์Šน์ธ ์—†์ด ์ง„ํ–‰

smolagents ๋ฌธ์„œ/์ฝ”์Šค์—์„œ ๊ฐ•์กฐํ•˜๋Š” ๋ฐฉํ–ฅ์ฒ˜๋Ÿผ, ์ค‘๊ฐ„ ์‚ฌ๊ณ  ๋‹จ๊ณ„(๊ณ„ํš/ํˆด ์‚ฌ์šฉ/๊ฒ€์ฆ)๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๋ฉด ์ด๋Ÿฐ ์‹คํŒจ๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

flowchart LR
  A[์‚ฌ์šฉ์ž ์š”์ฒญ] --> B[Plan: ๋‹จ๊ณ„ ๊ณ„ํš]
  B --> C[Execute: ์ดˆ์•ˆ ์ƒ์„ฑ]
  C --> D[Validate: ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๊ฒ€์ฆ]
  D --> E{ํ†ต๊ณผ?}
  E -- Yes --> F[์ตœ์ข… ๊ฒฐ๊ณผ PASS]
  E -- No --> G[REVIEW/์ˆ˜์ • ์š”์ฒญ]

์‹ค์Šต: 20~30๋ถ„ ์žฌํ˜„ (๋„๊ตฌ/์ž…๋ ฅ/์‹คํ–‰๋ช…๋ น/์„ฑ๊ณตํŒ์ •)

์‹ค์Šต ํŒŒ์ผ ๊ฒฝ๋กœ: /home/tw2/Documents/n8n/data/shared/syn/8.quartz/Agent/๐Ÿค— HF-Agents-Course/downloads

Step 1) ๋„๊ตฌ ์ค€๋น„

  • ๋„๊ตฌ: day9_plan_execute_validate.py
  • ์ž…๋ ฅ: ์—†์Œ
  • ์‹คํ–‰๋ช…๋ น:
cd /home/tw2/Documents/n8n/data/shared/syn/8.quartz/Agent/๐Ÿค—\ HF-Agents-Course/downloads
python3 day9_plan_execute_validate.py --mode selfcheck
  • ์„ฑ๊ณตํŒ์ •:
    • ์ถœ๋ ฅ JSON์— "selfcheck_ok": true
    • result.final.status๊ฐ€ PASS

Step 2) ๋‹จ์ผ ์š”์ฒญ ์‹คํ–‰ (๊ณ ์œ„ํ—˜ + ๊ฐœ์ธ์ •๋ณด)

  • ๋„๊ตฌ: day9_plan_execute_validate.py
  • ์ž…๋ ฅ:
    • request: ๊ณ ๊ฐ ๋ถˆ๋งŒ VOC ์š”์•ฝ ๋ณด๊ณ ์„œ ์ž‘์„ฑ
    • risk: high
    • pii: 1
    • deadline: 2
  • ์‹คํ–‰๋ช…๋ น:
python3 day9_plan_execute_validate.py \
  --mode single \
  --request "๊ณ ๊ฐ ๋ถˆ๋งŒ VOC ์š”์•ฝ ๋ณด๊ณ ์„œ ์ž‘์„ฑ" \
  --risk high \
  --pii 1 \
  --deadline 2
  • ์„ฑ๊ณตํŒ์ •:
    • plan์— ๋ฏผ๊ฐ์ •๋ณด ๋งˆ์Šคํ‚น ํฌํ•จ
    • draft์— [REDACTED] ํฌํ•จ
    • validation.ok = true

Step 3) ๋ฐฐ์น˜ ํ‰๊ฐ€๋กœ ์žฌํ˜„์„ฑ ํ™•์ธ

  • ๋„๊ตฌ: sample_tasks_day9.json
  • ์ž…๋ ฅ: ์ƒ˜ํ”Œ 3๊ฑด
  • ์‹คํ–‰๋ช…๋ น:
python3 day9_plan_execute_validate.py --mode eval --input sample_tasks_day9.json
  • ์„ฑ๊ณตํŒ์ •:
    • pass = true ๋˜๋Š”
    • score >= 0.66

์ฝ”๋“œ์—์„œ ๊ผญ ๋ณผ ํฌ์ธํŠธ

  1. Plan ๋ถ„๋ฆฌ (make_plan): ์œ„ํ—˜๋„/PII/๊ธฐํ•œ์— ๋”ฐ๋ผ ๋‹จ๊ณ„๊ฐ€ ๋™์ ์œผ๋กœ ๋ฐ”๋€œ
  2. ๊ฒ€์ฆ ๊ฐ•์ œ (validate_output): ์š”์•ฝ/์ฒดํฌ๋ฆฌ์ŠคํŠธ/๋งˆ์Šคํ‚น/์Šน์ธ ๋ฌธ๊ตฌ๋ฅผ ์ž๋™ ๊ฒ€์‚ฌ
  3. ์ตœ์ข… ๊ฒŒ์ดํŠธ (status): ํ†ต๊ณผ๋ฉด PASS, ์•„๋‹ˆ๋ฉด REVIEW

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

  • ์ฝ˜ํ…์ธ  ํŒ€: ๋ฐœํ–‰ ์ „ ๊ฒ€์ฆ ๋‹จ๊ณ„๋กœ ์‚ฌ์‹ค/ํ‘œํ˜„/๋ฏผ๊ฐ์ •๋ณด ๋ˆ„๋ฝ ๋ฐฉ์ง€
  • ์šด์˜ํŒ€: ๊ณ ์œ„ํ—˜ ์ž‘์—…์€ ์ž๋™์œผ๋กœ โ€œ๊ฒ€ํ† ์ž ์Šน์ธ ํ•„์š”โ€ ๋ฌธ๊ตฌ ๊ฐ•์ œ
  • ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ(n8n): ์—์ด์ „ํŠธ ์ถœ๋ ฅ ๋’ค์— Validate ๋…ธ๋“œ๋ฅผ ๋‘ฌ์„œ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ ์ ์šฉ

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

  1. ํŒŒ์ผ ๊ฒฝ๋กœ ์˜ค๋ฅ˜
    • ์ด๋ชจ์ง€ ๊ฒฝ๋กœ๋ผ์„œ ์‹คํŒจํ•˜๋ฉด ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ๊ธฐ
  2. score๊ฐ€ ๋‚ฎ๊ฒŒ ๋‚˜์˜ด
    • sample_tasks_day9.json์˜ ๊ธฐ๋Œ€๊ฐ’(expect)๊ณผ ์‹ค์ œ ๊ทœ์น™์ด ๋งž๋Š”์ง€ ํ™•์ธ
  3. ์‹ค๋ฌด ๊ทœ์น™ ๋ฐ˜์˜์ด ์–ด๋ ค์›€
    • validate_output์˜ ์ฒดํฌ ํ•ญ๋ชฉ์„ ํŒ€ ์ •์ฑ…์— ๋งž๊ฒŒ 1๊ฐœ์”ฉ ์ถ”๊ฐ€

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

  • selfcheck ํ†ต๊ณผ (selfcheck_ok=true)
  • single ๋ชจ๋“œ์—์„œ validation.ok=true
  • eval ์ ์ˆ˜ ๊ธฐ๋ก (score)
  • ์šฐ๋ฆฌ ํŒ€ ๊ทœ์น™ 1๊ฐœ ์ด์ƒ validation์— ๋ฐ˜์˜

์ฐธ๊ณ  ๋งํฌ (์šฐ์„ ์ˆœ์œ„)

  1. https://github.com/huggingface/agents-course
  2. https://huggingface.co/learn/agents-course
  3. https://huggingface.co/docs/smolagents

์‹ค์Šต ํŒŒ์ผ

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

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