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. 👋