S-12 · TRACK 04 · PRODUCTION · BUỔI CUỐI

Production
Cost · Monitor · Deploy

Đưa agent lên production an toàn, có thể quan sát & tối ưu chi phí. Ch.16 + Ch.20 sách Gulli + best practice cộng đồng 2025.

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

01 · 5 nỗi đau production

Cost phình, latency cao, không debug được…

💰

02 · Cost optimization

Model routing · Prompt caching · Batch · Compression

📈

03 · Monitoring & Observability

Trace, metrics, alert — agent-native

🚀

04 · Deploy strategy

Feature flag · Canary · Shadow · Kill switch

🏆

05 · Kết khoá

Roadmap 21 pattern nhìn lại + next steps

01

5 nỗi đau
khi agent lên production

Prototype OK — production vỡ ở đâu?
💰

Cost bùng nổ

1000 user × 5 turn × 10K token = $$$. Prototype dùng Opus tất tay ⇒ bill sốc.

⏳

Latency cao

Chain 5 step × 2s = 10s. User bỏ chờ. p95 > 30s là dead.

🔮

Mù khi lỗi

Không có trace ⇒ user report bug, dev không reproduce được. Ngồi mò log.

🔄

Model drift

Auto-upgrade model version ⇒ hành vi thay đổi, regression âm thầm.

Nỗi đau thứ 5: không rollback được. Deploy version xấu, không có kill switch, không revert nhanh.

02

Cost Optimization
Ch.16 — Resource-Aware Agents

5 đòn bẩy giảm cost — theo thứ tự tác động
📌

Model routing

Haiku task nhỏ · Sonnet phần lớn · Opus khi thực sự cần. Tiết kiệm 60-80%.

💾

Prompt caching

Anthropic cache hit −90%. Gemini implicit cache.

📮

Batch API

Async 24h ⇒ −50%. Cho eval, backfill, không cần realtime.

🔄

Compression

Summarize old messages · Autocompact · Context prune.

📋

Budget cap

Max tokens / turn, max turn / session. Kill switch khi vượt.

Nhớ thứ tự: route trước → cache kế → batch sau → compress. Áp dụng dần, đo delta cost mỗi bước.

Prioritization (Ch.20) — ai được ưu tiên?

📌 Task queue priority

  • • High: user online, request nhỏ.
  • • Medium: background action, có SLA phút.
  • • Low: eval, summarization, batch job.

🎯 Tier & deadline aware

  • • Rate limit per user tier (free / pro / enterprise).
  • • Fast path (rule/embedding) — confidence cao.
  • • Slow path (LLM full) — khi fast không cover.
  • • Deadline miss ⇒ degrade sang model rẻ hơn.
03

Monitoring
Observability agent-native

3 tầng observability cho agent
🔬

Traces

Span per turn: input, prompt, tool_call, tool_result, output, tokens, latency, cost.

📈

Metrics

Success rate, p95/p99 latency, cost/session, tool fail rate, thumbs ratio.

🔔

Alerts

Cost spike, error rate spike, SLA breach. On-call rotation.

📋

Session replay

Replay conversation + tool calls để reproduce bug user report.

Chuẩn: OpenTelemetry + OpenLLMetry span, sink vào LangSmith / Langfuse / Arize / Datadog LLM.

Tool observability — chọn theo bối cảnh
Tool OSS? Trace Eval Điểm mạnh
Langfuse ✅ ✅ ✅ Self-host + SaaS, OpenTelemetry native
Arize Phoenix ✅ ✅ ✅ OTel + eval, local dev tốt
LangSmith ❌ ✅ ✅ Tích hợp sâu LangChain/Graph
Braintrust ❌ ✅ ✅ Enterprise, eval flow mạnh
Datadog LLM Observability ❌ ✅ Basic Nếu đã dùng Datadog full stack
Helicone ✅ ✅ Basic Proxy đơn giản, ít setup
04

Deploy Strategy
An toàn khi có sự cố

4 kỹ thuật roll-out an toàn
🚩

Feature flag

LaunchDarkly / GrowthBook / Unleash. Bật/tắt agent theo user segment.

💾

Canary rollout

1% → 10% → 50% → 100%. Monitor metric mỗi tầng.

🕵

Shadow mode

Chạy song song, không trả user, compare output cũ vs mới.

🛑

Kill switch

Tắt agent version bằng 1 lệnh. Fallback human hoặc version trước.

Bonus: Model version pinning. Không dùng claude-sonnet-latest. Dùng claude-sonnet-4-6 để tránh drift.

Code — OpenTelemetry span cho agent turn
agent_traced.py
from opentelemetry import trace
tracer = trace.get_tracer("agent")

def run_turn(user_id, message):
    with tracer.start_as_current_span("agent.turn") as span:
        span.set_attributes({"user.id": user_id, "input.length": len(message)})

        # Route theo tier & task
        model = "haiku" if is_simple(message) else "sonnet-4-6"
        span.set_attribute("model", model)

        # Cache-aware call
        resp = llm.generate(
            model=model,
            system=SYSTEM_PROMPT,
            cache_control={"type": "ephemeral"},  # 90% off on hit
            messages=[{"role": "user", "content": message}],
        )

        span.set_attributes({
            "tokens.input": resp.usage.input_tokens,
            "tokens.output": resp.usage.output_tokens,
            "cost.usd": calc_cost(resp.usage, model),
            "cache.hit": resp.usage.cache_read_input_tokens > 0,
        })
        return resp.content
Anti-patterns production
🚫

Không trace

Không log tool_call ⇒ mù khi bug prod. Ưu tiên số 1.

🔄

Auto-upgrade model

Dùng -latest ⇒ drift âm thầm. Pin version.

💰

No budget cap

Bug loop ⇒ đốt $10k qua đêm. Đặt cap per user + global.

📆

Deploy Friday

Weekend không ai on-call. Deploy đầu tuần.

Case VN 🇳🇻 — 5 tình huống Resource-aware
📈

1. Model routing theo task

Router Agent chọn Flash/Haiku cho query đơn, Pro/Sonnet cho phức.

⏳

2. Nhạy độ trễ

Chọn đường suy luận nhanh cho SLA < 2s. Skip reflection nếu deadline gần.

🔋

3. Edge / on-device

Mobile agent chọn model nhỏ tại thiết bị ⇒ tiết kiệm pin + latency thấp.

🔄

4. Fallback dự phòng

Provider chính lỗi ⇒ tự switch model dự phòng. Circuit breaker.

✂

5. Data pruning

Truy hồi summary thay vì raw doc ⇒ giảm token 5-10×.

📌

Bonus: Critique-driven tune

Critique Agent quan sát route decisions ⇒ feedback loop cải thiện router theo thời gian.

Nguyên tắc: Router + Critique là combo tối thiểu. Router quyết định nhanh — Critique cải thiện router dần bằng data thực tế.

Nguồn: Cẩm nang thực hành HTTM (VN Gulli Ch.16 — Resource-Aware Optim).

Case VN 🇳🇻 — Harness Engineering & Production loop
Harness Engineering — thuật ngữ VN chỉ khung vận hành quanh LLM (guardrails + eval + hooks + trace + rollback). Không phải "prompt engineering" một mình mà là infra engineering cho agent.
Layer 1

Trace & Log

  • • OpenTelemetry span
  • • Tool call + args
  • • Cost per turn
Layer 2

Guardrails

  • • Input/output filter
  • • Rate limit + budget
  • • Deny-list ops
Layer 3

Eval & Judge

  • • Golden test CI
  • • LLM-judge batch
  • • Online thumbs
Layer 4

Deploy & Rollback

  • • Feature flag
  • • Canary + shadow
  • • Kill switch

Harness ≠ framework code. Harness = infra + policy + observability + rollback để prompt/agent thay đổi không phá production.

Tham chiếu: Harness Engineering + Báo cáo NC hệ thống tác tử — Harness Engineering (VN).

CLI thực chiến — Cost · Monitor · Deploy

🤖 Claude Code

# Model routing (rẻ→đắt)
claude -m haiku-4-5    # $
claude -m sonnet-4-6   # $$
claude -m opus-4-7     # $$$

# Xem cost + usage
claude
# /cost → session cost
# /status → context %

# Prompt caching (auto)
# CLAUDE.md + system prompt
# tự cache -90% cost hit

# Hook cost tracker
# settings.json:
"hooks": {
  "Stop": [{
    "command": "./track.sh"
  }]
}
# ./track.sh append log

# Pin version
claude -m \
  claude-sonnet-4-6

⚡ Cursor

# Model management
# Settings → Models
# Turn OFF model đắt
# nếu team overuse Opus

# Auto mode routing
# Chọn model theo task
# complexity tự động

# Usage dashboard
# cursor.com/dashboard
# → Usage → per user
# → Set spend limit

# Fast/Slow request pool
# Slow = queue, không cost
# thêm sau khi hết fast

# Team plan: SSO + audit
# dashboard tracking

# Version pinning
# Settings → Models
# chọn version cụ thể

💎 Gemini CLI

# Model tier
gemini -m gemini-2.5-flash  # $
gemini -m gemini-2.5-pro    # $$

# Xem cost + telemetry
gemini
# /stats → token dùng
# /quit → summary

# Context caching
# Long GEMINI.md tự cache
# -75% cost trên hit

# Batch API (async, -50%)
gemini batch create \
  --requests req.jsonl \
  --output out.jsonl

# Log telemetry local
# ~/.gemini/settings.json
"telemetry": {
  "target": "local",
  "logPrompts": true
}
# File: ~/.gemini/logs/

Kill switch tương đương: Claude Code — edit settings.json đổi "allow": []; Cursor — toggle Privacy Mode + tắt Auto-Apply; Gemini CLI — đổi safety BLOCK_LOW_AND_ABOVE.
Monitoring cross-CLI: tất cả log ra ~/.claude/logs/, ~/.cursor/logs/, ~/.gemini/logs/ (Windows: %USERPROFILE%\...) — nạp vào Datadog / Loki bằng agent forward.

05

Kết khoá
Nhìn lại 21 pattern

21 pattern — bản đồ đã đi qua
Foundation Ch.1-7
  • 1. Prompt Chaining
  • 2. Routing
  • 3. Parallelization
  • 4. Reflection
  • 5. Tool Use
  • 6. Planning
  • 7. Multi-Agent
State/Learn Ch.8-11
  • 8. Memory Management
  • 9. Learning & Adaptation
  • 10. MCP
  • 11. Goal Setting & Monitoring
Robustness Ch.12-14
  • 12. Exception Handling
  • 13. HITL
  • 14. RAG
Production Ch.15-21
  • 15. A2A
  • 16. Resource-Aware Optim
  • 17. Reasoning
  • 18. Guardrails
  • 19. Evaluation
  • 20. Prioritization
  • 21. Exploration & Discovery

12 buổi cover đủ 21 pattern. Ch.7 Multi-Agent tại S-04; Ch.9/11/12/17/21 rải trong ngữ cảnh các buổi.

5 điều nhớ khi lên production
1

Model routing + prompt caching là 2 đòn bẩy cost mạnh nhất. Áp trước tiên.

2

Trace mọi turn bằng OpenTelemetry / OpenLLMetry. Không trace = mù prod.

3

Pin model version. Không dùng -latest. Nâng version có kế hoạch, có eval.

4

Roll-out an toàn: Feature flag + Canary + Shadow + Kill switch. 4 phòng tuyến.

5

Budget cap per user + global. Bug loop có thể đốt $10k qua đêm nếu không cap.

Sau khoá — đi tiếp về đâu?
🏃

Bắt tay xây

  • • Chọn 1 use case đội bạn có sẵn.
  • • Build v0 với 3-5 pattern liên quan.
  • • Đo cost + latency + accuracy baseline.
  • • Tối ưu theo takeaway của từng buổi.
📚

Đọc sâu thêm

  • • A. Gulli — Agentic Design Patterns full (482 tr).
  • • Anthropic — Building Effective Agents.
  • • Weng, Yao, Shinn — original papers.
  • • Google A2A + Anthropic MCP spec.
🔗

Cộng đồng VN

  • • 42 tài liệu tiếng Việt trong DocumentAI/.
  • • Xem DocumentAI_INDEX.md để tra nhanh.
  • • Chia sẻ case study — khoá học sống nhờ thực chiến.
Cảm ơn!

Hết khoá LLM → Agentic — 12 buổi, 21 pattern.
Chúc đội bạn build được agent đáng tin cậy trong production. 👋