trace 字段与 OTel 语义约定

评测与可观测进阶8讲解 4

一次多轮 Agent 请求的 trace 里必须记:每次模型调用的输入输出与 token、每次工具调用的参数与结果、模型与提示词版本、成本。OpenTelemetry 的 GenAI 语义约定(gen_ai.*)还在演进,内容捕获要处理 PII 与采样,目标是任何一条失败请求都能重放。

也叫:trace · OpenTelemetry · OTel · gen_ai 语义约定 · 可重放 · PII · 内容捕获

二、trace 里必须记什么出自 T5-3

按「没有它就查不出问题」的标准,分四类:

类别 必记 为什么
身份与串联 trace_id、conversation/session id、user id(脱敏)、请求入口/渠道 没有会话 ID,多轮问题永远查不了;没有渠道,开篇那个故障永远定位不到
可重放的输入 系统提示的版本号、检索命中的文档 ID + 分数、工具的真实入参与返回、上下文总长度、是否触发过压缩 能不能把一条线上请求原样搬到离线跑,全看这一栏记全没有(承接 Q5-02 第一刀)
模型与配置 模型 ID(含小版本)、effort 档位、max_tokens、是否命中 prompt 缓存、是否走了降级路由 上游静默升级、降级到小模型,都只有这一栏能证明
结果与判定 结束原因(正常结束 / 打到 max_tokens 被截断 / 工具报错 / 超时)、结构化输出是否解析成功、评测分数与 judge 版本 截断和解析失败是两个最高发、最容易被当成「模型变笨」的假象

判据:trace 的验收标准不是「记得全不全」,是「能不能据此把这条请求在离线复现出来」。 做不到,它就只是一堆好看的瀑布图。

存不存 prompt / completion 原文,是本节最真实的一道取舍题:

存原文 不存原文
收益 能排障、能做数据飞轮、能补评测用例
代价 PII 合规风险 + 存储成本的绝对大头 出问题只能看到「有个 span 慢了」

实践口径:默认脱敏 + 按采样存原文 + 敏感字段哈希 + 保留期分层(原文 7–30 天,指标与评分长期保留)。这条几乎是所有做过合规评审的团队最后收敛到的位置。

以上节选自T5-3 可观测:trace、线上质量监控与数据飞轮,读全文能看到前后语境。

延伸阅读

考这个知识点的题1

会连带问到7