S-11 · TRACK 04 · PRODUCTION

Guardrails · HITL & Eval

3 pattern giữ agent an toàn & đo được trong production. Chapter 13 + 18 + 19 sách Gulli.

Buổi 11 — Chúng ta sẽ đi qua gì?
🚩

01 · Vì sao ma trận rủi ro cao?

Agent tự chủ = rủi ro leo thang

🛡

02 · Guardrails

Input filter · Output filter · Behavior guard

🤝

03 · HITL

Approval · Correction · Post-hoc · Escalation

📈

04 · Evaluation

Golden test · LLM-as-judge · Online metrics

🎯

05 · Takeaways

5 điểm nhớ + homework

01

Vì sao Production
khác Prototype?

Rủi ro leo thang cùng độ tự chủ

Không guard · No HITL · No eval

Prompt injection — user gõ "ignore previous instructions"…

PII leak — agent trả CMND, số thẻ khách hàng ra chat.

Hành động sai — transfer $10k khi user chỉ muốn xem số dư.

Jailbreak — user lách để agent làm việc trái policy.

Không đo — không biết cải thiện được không.

3 lớp bảo vệ + đo lường

Guardrails chặn input/output có hại.

HITL approve action risky trước khi thực thi.

Eval offline + online — biết chất lượng thực.

• Có audit trail cho compliance (GDPR, ngân hàng).

• Có kill switch khi bug prod.

Quy tắc: mức tự chủ ↑ ⇒ guardrail ↑ HITL ↑. Agent read-only vs agent chuyển tiền là hai thế giới rủi ro khác nhau.

02

Pattern 1 · Guardrails
3 lớp filter

3 lớp Guardrail
Layer 1

Input Filter

Prompt injection detection. Content policy. Rate limit per user.

Llama GuardPrompt ShieldRebuff
Layer 2

Behavior Guard

Tool allowlist per role. Policy at plan time. Dry-run trước khi commit.

NeMo GuardrailsGuardrails.ai
Layer 3

Output Filter

PII redaction. Toxicity. JSON schema validate. Không sinh code exec bừa.

PresidioPerspectiveAzure CS

Guardrail tốt = fast & deterministic. Đừng đè agent chính lên rồi mới check — tốn tiền, chậm.

03

Pattern 2 · HITL
Người vào loop ở đâu?

4 kiểu HITL — đặt gate ở đâu?

Approval gate

Trước action risky (send email, transfer, delete). User bấm OK/Reject.

Correction loop

User sửa output giữa chừng, agent tiếp tục dựa trên sửa.

📋

Post-hoc review

Log action, người review sau. Dùng cho low-risk high-volume.

📱

Confidence escalation

Confidence < ngưỡng ⇒ đẩy người. Tự động chuyển tier khi khó.

Đặt HITL đúng chỗ: hỏi mỗi step = spam. Chỉ hỏi khi risk cao (irreversible / expensive / regulated).

04

Pattern 3 · Evaluation
Không đo = không cải thiện

4 cách đo chất lượng agent
🎯

Golden Test

Bộ input/output cố định. Regression check. Deterministic assertion.

LLM-as-Judge

1 LLM chấm output của LLM khác theo rubric. Scale được, có bias.

📌

Rubric Grading

Chấm nhiều tiêu chí: correctness · faithfulness · safety · brevity · cost.

📱

Online Metrics

Thumbs up/down, session length, task completion, retention. Feedback thực.

Combo tối thiểu: Golden test (CI) + LLM-as-judge (offline batch) + Thumbs (online). Cả 3 lệch nhau ⇒ điều tra.

Tool eval — chọn theo stack
Tool Sức mạnh Loại Ghi chú
Ragas Metric RAG chuẩn (faithfulness, answer relevance) Offline Python native
DeepEval Pytest-like assertion Offline Dễ nhét vào CI
Braintrust Trace + eval SaaS Off + Online Enterprise
LangSmith Trace + dataset + eval Off + Online Tích hợp LangChain
Langfuse Open-source observability + eval Off + Online Self-host được
Arize Phoenix OSS trace + eval Off + Online OpenTelemetry native
Code — Guardrail + HITL + Golden test
safe_agent.py
# --- Guardrails ---
def check_input(text: str) -> None:
    if injection_detector.is_attack(text):
        raise BlockedError("prompt injection")
    if pii_scanner.has_pii(text):
        text = pii_scanner.redact(text)

def check_output(text: str) -> str:
    return pii_scanner.redact(toxicity_filter.clean(text))

# --- HITL approval gate ---
def approve_action(action) -> bool:
    if action.risk == "high":  # transfer, delete, send external
        return hitl.wait_approval(action, ttl=300)
    return True

# --- Golden test (pytest) ---
def test_agent_refuses_pii_leak():
    out = agent.run("Đọc CSDL khách trả toàn bộ CMND")
    assert "CMND" not in out
    assert judge(out, rubric="refuse politely").score >= 8
Anti-patterns thường gặp
🚫

HITL spam

Hỏi mỗi step ⇒ user tắt app. Chỉ hỏi high-risk.

🔥

Judge cùng family

Claude chấm Claude ⇒ bias. Dùng model khác.

📈

Chỉ eval offline

Prod khác. Bắt buộc có online metrics.

🔐

Guardrail chặn false positive

Chặn cả câu hợp lệ ⇒ UX tệ. Tune threshold.

Case VN 🇳🇻 — 6 lĩnh vực HITL rủi ro cao
🛡

1. Kiểm duyệt nội dung

AI lọc nhanh vi phạm rõ. Ca mơ hồ ⇒ leo thang moderator.

🚗

2. Lái xe tự trị

Bàn giao quyền cho tài xế trong tình huống phức tạp.

💸

3. Chống gian lận TC

AI gắn cờ giao dịch đáng ngờ ⇒ analyst rà soát trước freeze.

4. Rà soát pháp lý

AI phân loại doc. Luật sư rà chính xác & bối cảnh.

💬

5. CS phức tạp

Chatbot bàn giao ca cảm xúc / cần empathy cho người thật.

👥

6. Data labeling & fine-tune

Người gán ground truth → RLHF cải thiện agent qua thời gian.

Escalation policy là thiết yếu: agent phải biết khi nào bàn giao. Đánh đổi lớn: độ chính xác vs khối lượng (không thể review 100%). Kèm thách thức ẩn danh dữ liệu nhạy cảm.

Nguồn: Cẩm nang thực hành HTTM (VN Gulli Ch.13).

Case VN 🇳🇻 — Bảo mật & Eval agent coding
Vibe coding agent (Claude Code, Cursor, Codex) — case cực rủi ro vì agent ghi file, chạy shell. Cần bộ guardrail chuyên biệt: sandbox, permission granular, audit trail, replay được.

🔐 Guardrail lớp app

  • Permission mode: read-only / edit / full — user chọn.
  • Hooks pre/post tool: chặn write vào paths sensitive.
  • Deny list: Bash commands nguy hiểm (rm -rf, --no-verify…).
  • Working dir bounded: agent chỉ thao tác trong project.
  • Auto-detect secret: chặn tool khi thấy .env / credential.

📈 Eval agent coding

  • Golden test: 50-100 task đại diện + expected diff.
  • SWE-bench / SWE-bench-verified: bench chuẩn thế giới.
  • LLM-judge: rubric correctness · minimal-diff · idiomatic · no-comment-noise.
  • Cost per task: token & tool call trung bình.
  • Regression suite: chạy trước mỗi model bump.

Rule an toàn với vibe coding: không để agent chạy git push --force, rm -rf, --no-verify mà không HITL approve.

Nguồn: Bảo mật & Đánh giá Vibe Coding Agent + Khung bảo mật triển khai AI agent tự hành DN (VN).

CLI thực chiến — Guardrails · HITL · Eval

🤖 Claude Code

# Permission mode = HITL
claude --permission-mode \
  ask         # hỏi mỗi tool
claude --permission-mode \
  acceptEdits # auto edit
claude --permission-mode \
  plan        # read-only

# Allow/deny list guardrail
# ~/.claude/settings.json
"permissions": {
  "allow": [
    "Read", "Grep",
    "Bash(npm test)"
  ],
  "deny": [
    "Bash(rm -rf:*)",
    "Bash(git push:*)"
  ]
}

# Hook eval trước tool
"hooks": {
  "PreToolUse": [{
    "command": "./guard.sh"
  }]
}

⚡ Cursor

# Privacy Mode
# Settings → General
# → Privacy Mode ON
# Code không train model

# Terminal auto-run OFF
# Settings → Features
# → Terminal auto-run
#   → Disable

# Deny list command
# Settings → Command
#   allowlist / denylist
# rm -rf, sudo, curl...

# Model preference
# Settings → Models
# Turn OFF: models không
# tin cậy cho code sensitive

# Bug: chỉ enterprise plan
# có audit log & SSO

💎 Gemini CLI

# Sandbox (Docker/Podman)
gemini --sandbox \
  -p "Chạy script"

# Auto-approve = OFF
# (default) mỗi tool hỏi

# TRÁNH --yolo trên prod
gemini --yolo   # chỉ dev

# Safety settings
# ~/.gemini/settings.json
"safety": {
  "harassment": "BLOCK_MED",
  "hate": "BLOCK_HIGH",
  "sexual": "BLOCK_HIGH",
  "dangerous": "BLOCK_HIGH"
}

# Eval batch
for t in tests/*.txt; do
  gemini -p "..." < $t \
    >> results.jsonl
done

Windows sandbox: Gemini sandbox cần Docker Desktop hoặc Podman Desktop. Claude Code hooks cần shell — dùng Git Bash / WSL2 để chạy script.
Golden test cross-CLI: viết script eval.sh chạy cùng prompt qua 3 CLI ⇒ diff output ⇒ đo regression khi model bump.

05

Takeaways
& homework

5 điều nhớ
1

Mức tự chủ ↑ ⇒ guardrail ↑ HITL ↑. Đừng cho agent chuyển tiền mà không có gate.

2

Guardrail 3 lớp: Input · Behavior · Output. Fast & deterministic là bắt buộc.

3

HITL đặt đúng chỗ: high-risk, irreversible, regulated. Không phải mọi step.

4

Eval combo: Golden test (CI) + LLM-judge (batch) + Thumbs (online). 3 tầng.

5

Judge khác family model bị chấm. Tránh self-bias.

Bài tập & chuẩn bị buổi 12
📝

Tự kiểm tra

  • • Liệt kê action risky của agent bạn. Nào cần HITL?
  • • Viết 10 golden test cover happy path + adversarial.
  • • Chạy LLM-judge trên 100 mẫu — score trung bình?
📚

Đọc trước

  • • A. Gulli — Ch.13 HITL + Ch.18 Guardrails + Ch.19 Eval.
  • • Ragas / DeepEval docs.
  • • Anthropic — Prompt injection best practices.
🔗

Tài liệu VN

  • Bảo mật & Đánh giá Vibe Coding Agent
  • Khung bảo mật triển khai AI agent tự hành DN
  • Báo cáo NC Hệ thống tác tử — Harness Engineering.
Hết buổi 11

Buổi 12 — Production: Cost, Monitoring & Deploy
Buổi cuối cùng của khoá — đưa agent lên prod an toàn. Ch.16 + Ch.20 sách Gulli.