可观测正文要按环境分级放开
为什么不直接全开
blast radius(隐私影响半径)太大:一次打开,生产用户的原文与模型输出全部进入第三方平台。隐私是默认值问题,不是事后过滤问题。
分级方案
development:记录脱敏 + 截断后的 Input/Output。production:默认关闭;只对失败请求或极低比例请求采样。- Prompt、正文、输出都设最大长度上限。
- 上报前移除邮箱、Token、Cookie、URL 参数等可能的个人数据。
- 评测(eval)用人工准备的数据集,不依赖生产原文。
副作用:本地调试看不到正文,所以要留开关
脱敏逻辑若写死,本地调 prompt 时平台上只能看到「调了几次模型、用了哪些工具、花了多少 token」,看不到模型到底说了什么——而这恰恰是调 prompt 最想看的。
⇒ 正确形态是一个开关:本地可关、线上强制不可关。既不是全局关掉脱敏,也不是把逻辑写死。
分层:采集标准 vs 展示平台
- OpenTelemetry:埋点与运输标准,负责收集 Trace(调用链)/ Metric / Log,并记录模型调用与工具执行之间的父子关系(Span)。
- Langfuse:AI 可观测平台,负责展示与分析模型请求、Tool Call、Token、成本与错误,底层通过 OTel Span 接入。
所以「平台上能不能看到正文」由自己的上报代码决定,不是平台能力问题;排查时先看上报层,而不是怀疑平台。
相关
- 观测平台不能当运行状态真相源 —— 平台解释「为什么」,运行状态真源在自家数据库
- 上下文按信任等级分层
- 真源要按维度显式指定
- 判据要用真值而非代理
- 观测平台的环境维度由数据产生
- 假成功要有真失败信号 —— 本条是该 synthesis 的第五处证据:无数据被误读成配置问题,实际是上报侧静默关掉了