面试知识库
进阶

Agent可观测性与质量保障#

一句话答案#

Agent 可观测性通过全链路 Trace(每步思考/工具调用/耗时/token)、核心 Metrics(任务成功率/延迟/成本)和质量保障体系(灰度发布/A-B 测试/回归评测)保障生产稳定。

核心要点

1. Agent Trace 设计#

每步记录思考过程、动作、工具参数、结果、延迟和 Token 消耗:

Step 1: { thought: "需要查询用户订单", action: "call_tool", 
          tool: "query_order", params: {user_id: 123},
          result: {order_id: 456, status: "shipped"},
          latency_ms: 230, tokens: {input: 150, output: 45} }
Step 2: { thought: "已获取订单信息,生成回答", action: "final_answer",
          result: "您的订单456已发货...",
          latency_ms: 180, tokens: {input: 280, output: 60} }
plaintext

与传统微服务链路追踪的区别:传统 Trace 记录服务间调用;Agent Trace 还要记录 LLM 的思考过程决策逻辑,每步都有不确定性。

2. 核心 Metrics#

指标意义告警阈值
任务成功率端到端完成率< 80%
平均迭代次数Agent 效率(步数越少越好)> 5 次
工具调用准确率选对工具的比例< 90%
P99 延迟用户体验底线> 10s
Token 消耗/请求成本控制超预算 120%
幻觉率回答可靠性> 5%

3. 可观测性工具链#

工具定位特点
LangfuseLLM 全链路追踪开源,支持 Trace/Score/Dataset
LangSmithLangChain 官方与 LangChain 深度集成
Arize PhoenixLLM 监控 + 评测实时监控,漂移检测

4. 质量保障流水线#

离线评测(回归测试集)
  → 影子流量对比(新旧版本跑同一批请求,比对结果)
  → 灰度发布(5% → 25% → 100%)
  → A/B 实验(线上随机分流,统计显著性检验)
  → 持续监控(Metrics 告警 + 人工抽检)
plaintext

5. Demo 为什么上不了生产#

Demo 阶段生产要求
无错误处理每步都有降级兜底
无超时控制工具调用 + LLM 调用都有超时
无可观测性全链路 Trace + 告警
无成本控制Token 预算 + 模型级联
无安全防护注入检测 + 权限控制
面试回答(2分钟版)

Agent可观测性要解决的核心问题是”Agent在生产环境出了问题怎么查”。我把它分三个维度:Trace、Metrics和质量保障。Trace设计上,Agent每一步都要记录思考过程Thought、执行动作Action、工具调用和返回结果、耗时和token消耗,形成完整的执行链路可以回放排查。核心Metrics关注六个指标:任务成功率要大于80%,平均迭代次数不超过5次代表Agent效率,工具调用准确率要90%以上,P99延迟不超过10秒保证用户体验,token消耗控制在预算内,幻觉率低于5%。工具链方面推荐Langfuse做LLM全链路追踪,支持Trace打分和数据集管理。质量保障是重点:上线前跑离线回归测试集,用影子流量对比新旧版本,灰度发布从5%逐步放量到100%,线上持续A/B实验和人工抽检。很多Agent项目Demo效果很好但上不了生产,本质就是缺了错误处理、超时控制、可观测性、成本控制和安全防护这五个维度。

追问与易错

追问方向:

  • Agent 的 Trace 怎么设计?和传统微服务链路追踪有什么区别? → Agent Trace 多了 Thought/Action 语义信息和 token 消耗维度,传统 Trace 只有 RPC 调用链。DocMind 用 TracedOp 封装 OTel Span,每步记录思考/动作/工具/耗时/token
  • 怎么判断 Agent 是”真的好”而不只是”会演示”? → 跑离线评测集(覆盖 factual/adversarial/unanswerable 等边界),看 Faithfulness 和拒答率。Demo 通常只测 happy path,评测要覆盖失败场景
  • 灰度发布怎么做?新旧版本结果不一致怎么判断哪个好? → 灰度 5%→25%→100%,用影子流量新旧版本跑同一批请求对比 Metrics。判断标准:Faithfulness 不降 + Recall 不降 + 延迟不涨 + 成本不涨
  • 线上 Agent 突然变差了怎么排查? → 按链路逐段查:检索端(Recall 下降?)→ 生成端(模型更新?)→ 工具端(API 异常?)。Langfuse Trace 可定位到具体哪一步出问题

易错点:

  • ❌ “任务成功率是唯一指标” → 还要看效率(迭代次数)、成本(token)、延迟(P99)
  • ❌ “上线前测好了就行” → 模型更新、数据漂移会导致线上退化,需要持续监控
  • ❌ “灰度就是慢慢放量” → 还需要对比实验,判断新版本是否真的更好

项目实践(DocMind): Langfuse + OpenTelemetry 全链路追踪。TracedOp 工具类把 14 行 Span 模板代码封装成 4 行(tracer + name + attrs + lambda),每步记录 latency/tokens/attributes。评测体系:52 query × 7 类别 × 4 pipeline 变体(纯向量→+BM25→+Rerank→+Reflection)× 3 轮取均值。关键发现:Self-Reflection 在流式模式下是 no-op(SSE flush 阻止了中途改写),但置信度分流仍有独立价值——70% 高分短路省 LLM 调用,30% 低分触发 Web Search 兜底。