#AI Agent#DevOps

AI 应用可观测性:从一次回答追踪到质量与成本闭环

"AI 应用的故障往往不是服务宕机,而是检索错、工具选错、回答退化或成本失控。本文设计一套覆盖 trace、token、工具调用、评测反馈与隐私治理的可观测性方案。"

本文要点

  • 主题聚焦:AI Agent、DevOps
  • 适合人群:独立开发者、全栈工程师、AI 应用开发者
  • 核心价值:快速理解背景、实践路径、常见误区和工程建议
作者 @admin·发布于 2026年7月4日·更新于 2026年7月16日

普通 Web 服务返回 200,通常意味着请求成功;AI 应用返回 200,只能说明网络没有断。答案可能引用了错误资料,Agent 可能重复调用工具,模型可能悄悄切换版本,成本也可能在用户没有感知的情况下翻倍。

因此,AI 可观测性不能停留在 CPU、内存和错误率。它还要解释一次回答是怎样产生的,以及这个过程是否正确、可控、值得。

一、把一次请求建模为 Trace

一次 AI 请求通常包含多个步骤:接收输入、权限判断、查询改写、向量检索、重排、Prompt 渲染、模型生成、工具调用、二次生成和输出校验。最适合表达这条链路的是分布式 trace。

建议为每个步骤建立 span,并记录:

  • 稳定的 trace_id 与 request_id。
  • 模型、Prompt、索引和工具版本。
  • 步骤开始时间、结束时间和状态。
  • 输入输出的大小、token 与费用。
  • 检索文档 ID、得分和排序。
  • 工具名称、参数摘要、重试次数和错误类型。
  • 输出 schema 校验与安全策略结果。

这样看到“回答慢”时,可以判断是向量库慢、模型首 token 慢,还是 Agent 多走了五步,而不是只得到一条总耗时曲线。

二、日志要可调试,也要保护隐私

最简单的做法是记录完整 Prompt 和模型输出,但这可能把密码、个人信息、合同和内部代码写进日志系统。生产环境应默认采用最小化策略。

可以把字段分成三类:

  1. 始终记录:版本、耗时、token、状态码、工具名、数据量。
  2. 脱敏记录:用户输入摘要、错误片段、结构化参数。
  3. 受控采样:完整 Prompt 与响应,仅在获得授权、加密存储和设置短保留期后使用。

敏感字段不应先写日志再异步清洗,因为泄露已经发生。脱敏需要在日志调用前完成;对调试必需的原文,可存入权限隔离的对象存储,日志只保留引用 ID。

三、四组核心指标

可靠性指标:请求成功率、模型超时率、工具失败率、输出 schema 失败率、重试率、降级率。

性能指标:首 token 延迟、完整响应时间、各 span 耗时、流式中断率、队列等待时间。

成本指标:输入/输出 token、缓存命中 token、每次请求费用、每个成功任务费用、按用户与功能的预算消耗。

质量指标:引用一致性、离线评测分、用户重写率、人工接管率、负反馈率、严重错误数。

成本必须和质量、成功任务绑定。单纯把 token 降低 20%,若任务完成率下降更多,并不是优化。同样,模型费用上涨可能换来人工处理量显著下降,也可能是合理投入。

四、Agent 需要额外的循环指标

Agent 是循环系统,最危险的问题通常发生在“还能运行,但一直没有进展”的状态。除了普通指标,还应记录:

  • 每个任务的步数与工具调用数。
  • 连续调用同一工具的次数。
  • 相同错误指纹的重复次数。
  • 计划重写次数与人工确认等待时间。
  • 任务完成、主动终止、预算终止和人工接管的比例。

可以设置运行时护栏:最大步数、最大 wall time、最大 token 和最大费用。若连续两次工具调用参数相同且结果相同,执行器应识别停滞,而不是继续让模型消耗预算。

五、用统一事件模型降低分析成本

不同模型供应商返回的 usage、finish reason 和工具调用格式不同。业务代码如果直接依赖供应商字段,监控看板会迅速碎片化。应在网关或模型适配层统一成内部事件。

ts
type AiSpanEvent = {
  traceId: string;
  spanId: string;
  kind: "retrieval" | "model" | "tool" | "validation";
  operation: string;
  startedAt: string;
  durationMs: number;
  status: "ok" | "error" | "blocked";
  model?: string;
  promptVersion?: string;
  inputTokens?: number;
  outputTokens?: number;
  estimatedCostUsd?: number;
  errorCode?: string;
};

内部事件稳定后,可以将其导出到 OpenTelemetry,再接入现有的 trace、metrics 和 log 后端。不要为了 AI 单独搭一套无法与订单、用户和部署版本关联的孤岛监控。

六、从告警升级为诊断

“错误率大于 5%”适合传统接口,但 AI 质量退化往往没有显式错误。更有效的告警包括:

  • 某 Prompt 版本的 schema 失败率相对基线突增。
  • 某工具的平均调用次数持续上升。
  • 检索结果为空率或低分结果占比异常。
  • 单个成功任务成本超过预算。
  • 高风险评测集在线抽样分数下降。
  • 某模型或地区的首 token 延迟偏离历史区间。

告警消息应带可定位维度,例如部署版本、Prompt 版本、模型、租户和 trace 示例。只有一个全局平均数,值班人员很难采取行动。

七、建立反馈回流

可观测性的终点不是看板,而是改进闭环。用户反馈、人工编辑和失败 trace 应进入统一的案例库,经脱敏和分类后成为回归样本。

一次严重错误需要回答:错误发生在哪个 span、属于检索还是生成、现有测试为何没发现、修复后应增加哪条自动检查。这样事故不会只留下一份复盘文档,而会转化为长期质量资产。

小结

AI 应用可观测性关注的是“答案如何产生”和“这次运行是否值得”。用 trace 还原链路,用统一事件连接不同供应商,用质量与成本指标衡量结果,再把线上失败回流到评测集,团队才能从被动排查升级为持续改进。对 Agent 来说,步数、停滞和预算护栏更是生产上线前的必备能力。

Related

相关推荐