Prerequisite: Trước khi bàn về việc giám sát (Monitoring), bạn cần hiểu rõ kiến trúc vận hành của AI trong Enterprise. Vui lòng đọc lại Kiến Trúc Hệ Thống AI-Native Toàn Diện.
Chúng ta đã trải qua một chặng đường dài: Thiết kế Topology (Phần 1), xây dựng Memory (Phần 2), và dựng khiên bảo vệ Guardrails (Phần 3).
Bây giờ, Agent của bạn đã sẵn sàng lên Production. Nhưng đây mới là lúc cơn ác mộng thực sự bắt đầu: Làm sao bạn debug một hệ thống mà kết quả trả về mỗi lần một khác (Non-deterministic)?
4.1. Tại sao Observability cho AI Agent khác với microservice thông thường?
Với một REST API truyền thống, bạn quan tâm đến RED metrics: Rate (Requests/sec), Errors (5xx), và Duration (Latency).
Nhưng với AI Agent, RED metrics là không đủ. Một request trả về HTTP 200 OK nhưng nội dung lại là “ảo giác” (hallucination) thì vẫn là một request thất bại. AgentOps đòi hỏi bạn giám sát thêm:
- Cost (Chi phí): Agent tiêu tốn bao nhiêu USD cho mỗi Session? (Token usage).
- Tool Success Rate: Tỷ lệ Agent gọi Tool bị lỗi do parse sai tham số JSON là bao nhiêu?
- Step/Turn Count: Agent cần bao nhiêu bước để giải quyết vấn đề? (Nếu số vòng lặp > 5, có thể Agent đang bị kẹt).
4.2. Tracing LLM Calls: Latency, Token usage, Cost per-session
Khi Agent gọi LLM, ta cần ghi lại toàn bộ Trace (Prompt đầu vào, Token đầu ra, và Độ trễ). Dưới đây là code Golang sử dụng OpenTelemetry (OTel) để bọc (wrap) một LLM Call.
// Module: Agent Tracer (Golang)
// Sử dụng OpenTelemetry để ghi nhận Token Usage và Latency của LLM.
package agentops
import (
"context"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
)
// Hàm tính chi phí (USD)
// Tham khảo: https://openai.com/pricing
func calculateCost(promptTokens, completionTokens int, model string) float64 {
pricing := map[string]struct{ prompt, completion float64 }{
"gpt-4-turbo": {0.01, 0.03}, // $/1K tokens
"gpt-4": {0.03, 0.06},
"gpt-3.5-turbo": {0.001, 0.002},
}
p := pricing[model]
return (float64(promptTokens) * p.prompt / 1000) +
(float64(completionTokens) * p.completion / 1000)
}
// Giả lập OpenAI API call (Mock function)
func mockOpenAICall(prompt string) (string, int, int, error) {
// Trả về: Response, PromptTokens, CompletionTokens, Error
return "Đây là câu trả lời giả lập từ Agent.", 150, 50, nil
}
func CallLLMWithTracing(ctx context.Context, prompt string) (string, error) {
tracer := otel.Tracer("agent-orchestrator")
ctx, span := tracer.Start(ctx, "LLM_Generate_Response")
defer span.End()
span.SetAttributes(attribute.String("llm.prompt", prompt))
span.SetAttributes(attribute.String("llm.model", "gpt-4-turbo"))
// Giả lập gọi OpenAI API
response, promptTokens, completionTokens, err := mockOpenAICall(prompt)
if err != nil {
span.RecordError(err)
return "", err
}
// Tính toán chi phí (USD) dựa trên Token
totalCost := calculateCost(promptTokens, completionTokens, "gpt-4-turbo")
// Gắn metrics vào Span
span.SetAttributes(
attribute.Int("llm.usage.prompt_tokens", promptTokens),
attribute.Int("llm.usage.completion_tokens", completionTokens),
attribute.Float64("llm.usage.cost_usd", totalCost),
)
return response, nil
}
Bằng cách này, trên các dashboard như Datadog hay Jaeger, bạn có thể dễ dàng query: “Hôm nay Agent B đã đốt bao nhiêu tiền?”
4.3. Kiểm tra Agent trong môi trường production-like với Signadot
Làm sao để test một Agent có quyền xoá Database (Tool Calling) mà không làm hỏng dữ liệu Production thật? Test ở Staging thì dữ liệu thường quá cũ, LLM sẽ không suy luận đúng bối cảnh thực tế.
Giải pháp là Signadot Sandbox.
Cách hoạt động:
- Tạo Sandbox:
signadot create sandbox --name test-agent-v2 - Route traffic với header:
x-signadot-sandbox: test-agent-v2 - Database được clone ở mức logical (PostgreSQL logical clone).
- Verify Guardrails: Để Agent tự chạy, kiểm tra xem có bắt được
delete_*calls không.
Config example:
# signadot.yaml
sandboxes:
- name: agent-test-v2
spec:
clusters:
- name: production
datastores:
- name: postgres-main
logical_clone: true
(Ghi chú: Kỹ thuật này đã tạo ra sự tiếp nối sâu sắc từ bản tin Tech Radar ngày 13/05/2026).
4.4. Alerting khi Agent drift hoặc vòng lặp vô hạn
Infinite Loop Detection
Ngoài Agent Drift, cần theo dõi Turn Count (số bước Agent thực hiện):
- Thiết lập Alert: Nếu
turn_count > max_turns(thường là 5-10) trong 1 session. - Cơ chế: Khi Agent gọi Tool > N lần mà không có Final Output → auto-escalate to Human.
- Code snippet Golang:
// Pseudo-code cho hệ thống Alerting
if len(trace.Steps) > 10 {
span.SetAttributes(attribute.Bool("agent.loop_detected", true))
alert.PagerDuty("Agent stuck in loop", trace.SessionID)
}
Model Drift Detection
LLM Models liên tục được Provider (OpenAI, Anthropic) cập nhật ngầm. Dù bạn không đổi code, behavior của Agent có thể đột ngột thay đổi. Hiện tượng này gọi là Model Drift (hay Agent Drift).
🔥 [Production Failure]: Agent Drift âm thầm phá doanh thu Symptom: Tỷ lệ chốt đơn của Sales Agent giảm từ 15% xuống 2% trong vòng 1 tuần, không hề có báo động lỗi (Error = 0). Root Cause: Provider OpenAI tung ra bản update nhỏ cho model (silently update). Bản update này khiến Agent tự động thêm câu “Bạn có muốn suy nghĩ thêm không?” vào cuối mỗi câu chào hàng, vô tình làm khách hàng chùn bước. 📊 Impact: Sụt giảm 300,000 USD doanh thu trong 48 giờ trước khi team nhận ra vấn đề do không có metric theo dõi. 📈 Khắc phục: Xây dựng hệ thống Evals (Evaluation) chạy tự động. Cài đặt Alerting: Báo động đỏ nếu
Avg_Turns_Per_Saletăng đột biến hoặcConversion_Rategiảm > 10% trong 2 giờ. (Source: Tổng hợp từ các báo cáo AgentOps trên Hacker News).
🎯 Wrap-up Series
Xin chúc mừng! Trải qua 4 phần của series Agentic System Architecture, bạn đã nắm trong tay toàn bộ vòng đời của một hệ thống Multi-Agent thực chiến:
- Biết cách thiết kế Topology để phân chia quyền lực (Part 1).
- Biết cách tối ưu bộ nhớ Vector và chặn đứng tràn Context (Part 2).
- Biết cách chặn đứng Prompt Injection bằng hạ tầng Sandbox mạnh mẽ (Part 3).
- Và cuối cùng là khả năng soi sáng mọi góc tối của hệ thống bằng Observability (Part 4).
Bạn đã có đủ nền tảng kiến thức vững chắc để design, bảo vệ và vận hành một hệ thống Multi-Agent ở tầm cỡ Enterprise. Hãy bắt tay vào xây dựng Orchestrator đầu tiên của bạn ngay hôm nay!