跳到主要内容

04-可观测性与Trace

核对日期:2026-05-13。

不稳定项:OpenTelemetry 语义约定、各 provider usage 字段、模型 trace 工具、评测平台和日志治理能力持续变化;接入前必须核对当前版本。

1. 学习目标

本专题关注 AI 系统如何被观察、解释和复盘。普通服务只看错误率和延迟不够,LLM 系统还要看 token、成本、模型、Prompt、RAG、工具、质量和安全。

学完后你应该能做到:

  • 设计一次 AI 请求的 trace span 结构。
  • 定义模型调用、RAG、工具调用和输出解析的关键日志字段。
  • 区分 metrics、logs、traces 和 eval 结果的职责。
  • 建立质量、成本、延迟和安全的监控面板。
  • 设计脱敏、采样和访问控制,避免观测系统变成泄漏源。

2. 为什么普通观测不够

传统服务常看:

  • QPS。
  • 错误率。
  • 延迟。
  • CPU / 内存。

AI 系统还必须看:

  • 使用了哪个模型和 provider。
  • Prompt 版本是什么。
  • 输入输出 token 多少。
  • 是否命中缓存。
  • 是否 fallback。
  • RAG 检索到了什么。
  • 工具调用了几步。
  • 输出是否通过 schema。
  • 引用是否有效。
  • 安全策略是否拦截。
  • 用户反馈如何。

没有这些字段,线上问题会变成“模型今天好像不太行”。

3. Trace 结构

推荐 span:

request
auth.check
input.guard
prompt.build
rag.retrieve
rag.rerank
model.route
model.call
output.parse
citation.check
tool.call
feedback.record

不是每个请求都有所有 span。关键是每个阶段能记录输入摘要、输出摘要、耗时、错误和版本。

4. 模型调用字段

字段说明
trace_id全链路 ID
span_id当前 span ID
tenant_id租户
feature功能
task_type任务
model模型
provider供应商
route_reason路由原因
prompt_versionPrompt 版本
input_tokens输入 token
output_tokens输出 token
cached_tokens缓存 token
estimated_cost估算成本
latency_ms总延迟
first_token_ms首 token 延迟
retry_count重试次数
fallback_used是否 fallback
finish_reason结束原因
error_type错误类型
provider_request_id上游请求 ID

这些字段让你能把质量、成本、延迟和故障串起来。

5. RAG 观测字段

RAG 失败经常不是模型失败,而是检索失败。

字段说明
query_rewrite_version查询改写版本
rag_index_version索引版本
retrieval_strategykeyword / vector / hybrid
top_k召回数量
rerank_model重排模型
retrieved_doc_ids文档 ID 摘要
permission_filtered_count权限过滤数量
empty_retrieval是否空召回
citation_check_passed引用是否通过

注意:日志中不要保存完整敏感文档正文。通常记录 doc id、chunk id、hash、标题和权限范围即可。

6. Agent 观测字段

Agent 需要轨迹观测:

字段说明
agent_run_idAgent 执行 ID
step_count步数
max_steps最大步数
tool_calls工具调用摘要
tool_error_count工具错误数
human_interrupt是否人工介入
stop_reason完成、超步数、错误、人工停止
state_snapshot_id状态快照

Agent 没有轨迹就无法解释为什么它做了某个动作。

7. Metrics 面板

至少包含:

类别指标
可用性success rate、error rate、provider status
延迟p50/p95/p99、first token latency
成本daily cost、cost by feature、cost by tenant
tokeninput/output/cached tokens
路由model distribution、fallback rate、retry rate
RAGempty retrieval、citation pass、rerank latency
Agentstep count、tool error、HITL rate
质量eval pass rate、user feedback、adoption
安全injection blocked、permission denied、DLP hit

监控面板要能回答:现在系统是否可用、是否变贵、是否变慢、是否变差、是否变危险。

8. 日志脱敏和访问控制

AI 日志容易包含敏感信息。

不要记录:

  • 密钥、token、密码。
  • 原始个人身份信息。
  • 未授权文档正文。
  • 完整系统提示词。
  • 高敏工具返回结果。

推荐:

  • user id hash。
  • 输入摘要或 hash。
  • 文档 id 和 chunk id。
  • 工具参数摘要。
  • 错误类型而非完整堆栈。
  • 对调试采样设置权限和过期时间。

观测系统本身也需要权限、审计和保留周期。

9. Eval 与线上观测

线上 metrics 不能替代 eval,eval 也不能替代线上观测。

机制作用
离线 eval发布前发现回归
线上抽样 eval发现真实分布变化
用户反馈发现体验和业务问题
Trace定位单次失败根因
Metrics发现系统级趋势

完整闭环:

线上失败 -> trace 定位 -> 加入失败样例库 -> 离线 eval 回归 -> 灰度发布

10. 工程案例

10.1 引用错误排查

现象:用户反馈回答引用不支持结论。

排查字段:

  • rag_index_version
  • retrieved_doc_ids
  • rerank_model
  • citation_check_passed
  • prompt_version

可能根因:

  • 检索召回错文档。
  • rerank 排序错误。
  • Prompt 没要求逐条引用。
  • citation checker 缺失。

10.2 成本异常排查

现象:某功能成本突然上涨。

排查字段:

  • feature cost。
  • prompt_version。
  • input_tokens。
  • top_k。
  • retry_count。
  • fallback_used。

可能根因:

  • Prompt 变长。
  • RAG top_k 增大。
  • provider 频繁失败导致重试。
  • fallback 到更贵模型。

11. 常见反模式

反模式表现后果修正
只看接口错误率模型胡说也算成功质量问题不可见加 eval 和引用指标
日志全量明文调试方便隐私和合规风险脱敏、摘要、采样
不记录版本无法复现问题回滚困难prompt/model/index 版本化
trace 无业务维度只知道慢不知道谁慢feature/tenant/task 入 trace
Agent 无轨迹只看最终答案无法解释动作记录 step 和 tool

12. 练习

为一个客服草稿生成系统设计观测方案:

  • trace span。
  • 模型调用字段。
  • RAG 字段。
  • 成本指标。
  • 质量指标。
  • 安全指标。
  • 日志脱敏策略。

13. 验收题

  1. AI 系统为什么不能只看错误率和延迟?
  2. 一次模型调用应该记录哪些字段?
  3. RAG 系统需要哪些额外观测字段?
  4. Agent 为什么必须记录轨迹?
  5. 日志脱敏和问题排查之间如何平衡?
  6. 离线 eval、线上 eval、用户反馈和 trace 各自解决什么问题?