์ด๋ฒˆ ํŽธ์€ **โ€œ์—์ด์ „ํŠธ๊ฐ€ ์–ด๋””๊นŒ์ง€ ์ž๋™ ์ฒ˜๋ฆฌํ•˜๊ณ , ์–ด๋””์„œ ์‚ฌ๋žŒ์—๊ฒŒ ๋„˜๊ธธ์ง€โ€**๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์‹ค์Šต์ด๋‹ค.
์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์•ˆ์ „์žฅ์น˜์ธ ํœด๋จผ ํ•ธ๋“œ์˜คํ”„(Human Handoff) + PII ๋งˆ์Šคํ‚น ๊ฐ€๋“œ๋ ˆ์ผ์„ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋กœ ์žฌํ˜„ํ•œ๋‹ค.

ํ•œ ์ค„ ๊ฒฐ๋ก 

๊ทœ์น™ ๊ธฐ๋ฐ˜ ํ•ธ๋“œ์˜คํ”„ ์ •์ฑ…์„ ๋จผ์ € ๊ณ ์ •ํ•˜๊ณ (selfcheck โ†’ single โ†’ eval), ๊ทธ๋‹ค์Œ ๋ชจ๋ธ ์—์ด์ „ํŠธ(smolagents)๋กœ ํ™•์žฅํ•˜๋ฉด ์ดˆ๋ณด์ž๋„ ์•ˆ์ „ํ•œ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

flowchart LR
  A[๊ณ ๊ฐ ์š”์ฒญ ์ž…๋ ฅ] --> B[๋ฆฌ์Šคํฌ/PII/๊ธˆ์•ก ํŒ๋ณ„]
  B --> C{ํ•ธ๋“œ์˜คํ”„ ํ•„์š”?}
  C -- No --> D[AUTO_REPLY]
  C -- Yes --> E[HUMAN_HANDOFF]
  E --> F[ops-review ํ ์ „๋‹ฌ]
  B --> G[PII ๋งˆ์Šคํ‚น ๊ทœ์น™]
  G --> D
  G --> E

์‹ค์Šต ๋ชฉํ‘œ

  • ํœด๋จผ ํ•ธ๋“œ์˜คํ”„ ์ •์ฑ…(๊ณ ์œ„ํ—˜/๋ถ„์Ÿ/PII)์„ ์ฝ”๋“œ๋กœ ๋ช…์‹œํ•œ๋‹ค.
  • ๊ฒฐ๊ณผ๋ฅผ FINAL: ๊ณ„์•ฝ ๋ฌธ์ž์—ด๋กœ ๊ณ ์ •ํ•ด ํŒŒ์‹ฑ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
  • ๋ฐฐ์น˜ ํ‰๊ฐ€(eval)๋กœ ์žฌํ˜„์„ฑ์„ ์ ๊ฒ€ํ•œ๋‹ค.

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


1) ํ™˜๊ฒฝ ์ค€๋น„

  • ๋„๊ตฌ: Python 3.10+, ํ„ฐ๋ฏธ๋„
  • ์ž…๋ ฅ: requirements.txt (๊ธฐ์กด ๊ณต์šฉ)
  • ์‹คํ–‰๋ช…๋ น:
cd "/home/tw2/Documents/n8n/data/shared/syn/8.quartz/Agent/๐Ÿค— HF-Agents-Course/downloads"
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  • ์„ฑ๊ณตํŒ์ •:
    • (.venv) ํ”„๋กฌํ”„ํŠธ ํ‘œ์‹œ
    • ์„ค์น˜ ์—๋Ÿฌ ์—†์ด ์ข…๋ฃŒ

2) ์…€ํ”„์ฒดํฌ ์‹คํ–‰ (์ •์ฑ… ๊ธฐ๋ณธ ๊ฒ€์ฆ)

  • ๋„๊ตฌ: day10_handoff_guardrail_handson.py
  • ์ž…๋ ฅ: ๋‚ด์žฅ 2๊ฐœ ์ผ€์ด์Šค
  • ์‹คํ–‰๋ช…๋ น:
python3 day10_handoff_guardrail_handson.py --mode selfcheck
  • ์„ฑ๊ณตํŒ์ •:
    • ์ถœ๋ ฅ JSON์— "selfcheck_ok": true

3) ๋‹จ์ผ ์š”์ฒญ ํ…Œ์ŠคํŠธ (ํ•ธ์ฆˆ์˜จ)

  • ๋„๊ตฌ: day10_handoff_guardrail_handson.py
  • ์ž…๋ ฅ:
    • text: ๊ณ ๊ฐ ์นด๋“œ ๊ฒฐ์ œ ๋ถ„์Ÿ์œผ๋กœ ํ™˜๋ถˆ ์š”์ฒญ
    • priority: high
    • pii: 1
    • amount: 1200000
  • ์‹คํ–‰๋ช…๋ น:
python3 day10_handoff_guardrail_handson.py \
  --mode single \
  --text "๊ณ ๊ฐ ์นด๋“œ ๊ฒฐ์ œ ๋ถ„์Ÿ์œผ๋กœ ํ™˜๋ถˆ ์š”์ฒญ" \
  --priority high \
  --pii 1 \
  --amount 1200000
  • ์„ฑ๊ณตํŒ์ •:
    • result.action = "HUMAN_HANDOFF"
    • result.masking = "REQUIRED"
    • result.final์ด FINAL: ํ˜•์‹ ์œ ์ง€

4) ๋ฐฐ์น˜ ํ‰๊ฐ€ (์žฌํ˜„์„ฑ ํ™•์ธ)

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

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

  1. classify()
    • priority, pii, amount, ๋ถ„์Ÿ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ AUTO_REPLY/HUMAN_HANDOFF ๊ฒฐ์ •
  2. masking
    • PII ์ž…๋ ฅ ์‹œ REQUIRED ๊ฐ•์ œ
  3. final
    • FINAL: action=... ๊ณ„์•ฝ ๋ฌธ์ž์—ด ๊ณ ์ • (ํ›„์ฒ˜๋ฆฌ ํŒŒ์„œ ์•ˆ์ •ํ™”)

smolagents ํ™•์žฅ ์•„์ด๋””์–ด (๋‹ค์Œ ๋‹จ๊ณ„)

  • ํ˜„์žฌ ๊ทœ์น™ ํ•จ์ˆ˜๋ฅผ Tool๋กœ ๋ž˜ํ•‘ํ•ด ToolCallingAgent์— ์—ฐ๊ฒฐ
  • ๊ฒ€ํ†  ํ(ops-review)๋ฅผ Jira/Slack/n8n ๋…ธ๋“œ๋กœ ์—ฐ๋™
  • eval ์‹คํŒจ ์ผ€์ด์Šค๋ฅผ ์ฃผ๊ฐ„ ํšŒ๊ณ  ๋ฐ์ดํ„ฐ๋กœ ๋ˆ„์ 

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (์ž์ฃผ ๋ง‰ํžˆ๋Š” 5๊ฐ€์ง€)

  1. No such file or directory (์ด๋ชจ์ง€/๊ณต๋ฐฑ ๊ฒฝ๋กœ)

    • ์›์ธ: ๐Ÿค— HF-Agents-Course ๊ฒฝ๋กœ ์ธ์šฉ ๋ˆ„๋ฝ
    • ํ•ด๊ฒฐ: ๊ฒฝ๋กœ ์ „์ฒด๋ฅผ ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ ์‹คํ–‰
  2. invalid priority ์—๋Ÿฌ

    • ์›์ธ: --priority urgent์ฒ˜๋Ÿผ ํ—ˆ์šฉ ์™ธ ๊ฐ’ ์‚ฌ์šฉ
    • ํ•ด๊ฒฐ: low|medium|high|critical ์ค‘ ํ•˜๋‚˜๋กœ ์ž…๋ ฅ
  3. eval์—์„œ input JSON root must be list

    • ์›์ธ: sample_tasks_day10.json ๋ฃจํŠธ๊ฐ€ ๊ฐ์ฒด({})๋กœ ๋ณ€๊ฒฝ๋จ
    • ํ•ด๊ฒฐ: ๋ฃจํŠธ๋ฅผ ๋ฐฐ์—ด([])๋กœ ์œ ์ง€
  4. single ๊ฒฐ๊ณผ๊ฐ€ AUTO_REPLY๋กœ๋งŒ ๋‚˜์˜ด

    • ์›์ธ: --pii 1 ๋˜๋Š” ๊ณ ์œ„ํ—˜ ํ‚ค์›Œ๋“œ/๊ธˆ์•ก ์กฐ๊ฑด์ด ๋น ์ง
    • ํ•ด๊ฒฐ: ํ…Œ์ŠคํŠธ ์ž…๋ ฅ์— pii=1, priority=high, ๋ถ„์Ÿ ํ‚ค์›Œ๋“œ๋ฅผ ํฌํ•จ
  5. ๊ฐ€์ƒํ™˜๊ฒฝ ํŒจํ‚ค์ง€ ์„ค์น˜ ์‹คํŒจ

    • ์›์ธ: ์‹œ์Šคํ…œ pip/๊ถŒํ•œ ํ˜ผ์šฉ
    • ํ•ด๊ฒฐ: source .venv/bin/activate ํ›„ pip install -r requirements.txt ์žฌ์‹คํ–‰

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

  • selfcheck_ok=true ํ™•์ธ
  • single ๋ชจ๋“œ์—์„œ HUMAN_HANDOFF + masking=REQUIRED ํ™•์ธ
  • eval ์ ์ˆ˜(score) ๊ธฐ๋ก
  • ํŒ€ ์ •์ฑ… ๊ธฐ์ค€(๊ธˆ์•ก/ํ‚ค์›Œ๋“œ/์šฐ์„ ์ˆœ์œ„) 1๊ฐœ ์ด์ƒ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆ

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

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

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

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