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% 的可观测性需求,且完全可控。