AI Agent 从 Demo 到生产,最大的鸿沟不是模型能力,而是可观测性——当 Agent 犯错时你能否快速定位原因?当成本飙升时你知道钱花在哪里?当质量下降时你有没有自动告警?本文覆盖 AI Agent 可观测性的三大支柱(Trace、Eval、Metrics),对比主流工具,提供可直接落地的工程化方案。
核心要点
- AI Agent 可观测性三支柱:Trace(链路追踪)、Eval(质量评估)、Metrics(运营指标)
- Trace 记录 Agent 每一步决策,是调试和优化的基础
- 自动化 Eval 分三层:规则检查 → LLM-as-Judge → 用户反馈
- 成本监控需要按 Agent/任务/模型三维度拆分
- 主流工具:Langfuse(开源可自部署)、LangSmith(LangChain 生态)、Phoenix(Arize)
为什么 Agent 需要专门的可观测性
| 维度 | 传统服务 | AI Agent |
|---|---|---|
| 输出确定性 | 同输入同输出 | 同输入可能不同输出 |
| 调用链 | 固定调用路径 | 动态决策链(可能分支/循环) |
| 错误模式 | 明确异常(500/超时) | 语义错误(幻觉/偏离意图) |
| 成本 | 可预测(CPU/内存) | 不可预测(按 Token 计费) |
| 调试方式 | 日志 + 堆栈 | 完整链路回放 + 质量评分 |
Trace:链路追踪
Trace 数据模型
code
Trace(一次完整 Agent 交互)
├── Span: 用户输入处理 (10ms)
├── Span: 意图识别 (LLM Call, 800ms, 150 tokens)
├── Span: 工具选择 (LLM Call, 600ms, 100 tokens)
├── Span: 工具执行 - 搜索 API (200ms)
├── Span: 结果整合 (LLM Call, 1200ms, 500 tokens)
├── Span: 输出生成 (LLM Call, 900ms, 300 tokens)
└── Span: 响应返回 (5ms)
Total: 3715ms, 1050 tokens, $0.008
Langfuse 集成示例
python
from langfuse import Langfuse
from langfuse.decorators import observe, langfuse_context
langfuse = Langfuse()
@observe()
def agent_pipeline(user_query: str):
intent = classify_intent(user_query)
if intent == "search":
results = search_tool(user_query)
response = generate_response(user_query, results)
else:
response = direct_answer(user_query)
return response
@observe(as_type="generation")
def classify_intent(query: str):
response = llm.chat(
model="gpt-4o-mini",
messages=[{"role": "user", "content": f"Classify intent: {query}"}]
)
langfuse_context.update_current_observation(
usage={"input": response.usage.prompt_tokens,
"output": response.usage.completion_tokens}
)
return response.content
Eval:自动化质量评估
三层评估体系
| 层级 | 方法 | 延迟 | 适用场景 |
|---|---|---|---|
| L1 规则 | 正则/格式/长度检查 | <1ms | 实时拦截明显错误 |
| L2 模型 | LLM-as-Judge 评分 | 1-3s | 异步批量评估质量 |
| L3 人类 | 用户反馈/专家标注 | 分钟-天 | 建立评估基准集 |
LLM-as-Judge 示例
python
EVAL_PROMPT = """
Rate the following AI response on a scale of 1-5:
Question: {question}
Context: {context}
Response: {response}
Criteria:
- Faithfulness (1-5): Does it only use information from the context?
- Relevance (1-5): Does it answer the question?
- Completeness (1-5): Does it cover all aspects?
Output JSON: {"faithfulness": X, "relevance": X, "completeness": X}
"""
@observe(as_type="generation")
def evaluate_response(question, context, response):
result = llm.chat(
model="gpt-4o-mini",
messages=[{"role": "user", "content": EVAL_PROMPT.format(
question=question, context=context, response=response
)}]
)
return json.loads(result.content)
关键评估指标
| 指标 | 含义 | 计算方式 | 目标值 |
|---|---|---|---|
| Faithfulness | 输出是否基于上下文 | LLM Judge | >0.85 |
| Relevance | 是否回答了用户问题 | LLM Judge | >0.90 |
| Hallucination Rate | 幻觉内容占比 | 交叉验证 | <5% |
| Tool Call Accuracy | 工具调用是否正确 | 规则匹配 | >95% |
| Task Completion | 任务是否成功完成 | 端到端验证 | >90% |
Metrics:运营指标
核心 Dashboard 指标
code
┌─────────────────────────────────────────────────┐
│ AI Agent Observability Dashboard │
├─────────────────────────────────────────────────┤
│ │
│ Latency (P50/P95/P99) Token Usage (24h) │
│ ┌──────────┐ ┌──────────┐ │
│ │ P50: 2.1s│ │ 2.4M │ │
│ │ P95: 5.8s│ │ tokens │ │
│ │ P99: 12s │ │ ↑12% │ │
│ └──────────┘ └──────────┘ │
│ │
│ Daily Cost Error Rate Eval Score │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ $47.20 │ │ 2.3% │ │ 4.2/5.0 │ │
│ │ ↓8% │ │ ↑0.5% │ │ ↓0.1 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ Cost Breakdown (by Model) │
│ GPT-4o: 62% │ Sonnet: 28% │ Mini: 10% │
│ │
└─────────────────────────────────────────────────┘
成本监控维度
| 维度 | 监控内容 | 告警条件 |
|---|---|---|
| 按模型 | 各模型 Token 消耗和费用 | 单模型日成本超预算 |
| 按 Agent | 各 Agent 的成本占比 | Agent 成本异常增长 |
| 按任务类型 | 不同任务的平均成本 | 某类任务成本偏离均值 |
| 按用户 | 单用户成本追踪 | 单用户成本异常(滥用检测) |
工具对比
| 工具 | 类型 | Trace | Eval | 成本 | 特色 |
|---|---|---|---|---|---|
| Langfuse | 开源/云 | ✅ | ✅ | 可自部署 | 开源灵活,社区活跃 |
| LangSmith | 商业 | ✅ | ✅ | $39+/月 | LangChain 原生集成 |
| Phoenix (Arize) | 开源/云 | ✅ | ✅ | 开源免费 | 强大的 Trace 可视化 |
| Helicone | 云服务 | ✅ | 有限 | 免费起步 | 极简代理模式,接入快 |
| Braintrust | 商业 | ✅ | ✅ | 按量付费 | 强 Eval 和数据集管理 |
| OpenTelemetry | 开源标准 | ✅ | ❌ | 免费 | 标准化,可对接任何后端 |
工程化建议
分阶段实施路线
code
Phase 1(立即):基础可观测性
├── 接入 Trace SDK(Langfuse/Phoenix)
├── 记录所有 LLM 调用(Token、延迟、成本)
└── 建立基础 Dashboard
Phase 2(2 周):质量评估
├── 实现 L1 规则评估(格式检查、安全过滤)
├── 实现 L2 LLM-as-Judge(每日采样评估)
└── 建立评估基准集(50-100 条标注数据)
Phase 3(1 月):成本优化
├── 成本多维度拆分可视化
├── 语义缓存接入(Exact + Semantic)
├── 模型路由策略实施
└── 告警规则配置
总结
AI Agent 可观测性是从原型到生产的桥梁:
- Trace 让你看见 Agent 的每一步思考和决策
- Eval 让你量化系统输出质量的变化趋势
- Metrics 让你控制成本并及时发现异常
推荐起步方案:Langfuse(开源自部署)+ OpenTelemetry(标准化 Trace)+ 自建 LLM-as-Judge(质量评估)。这个组合覆盖了 90% 的可观测性需求,且完全可控。