跳到主要内容

6 篇博文 含有标签「tracing」

查看所有标签

AI 可观测性泄露:你的追踪堆栈正成为数据外泄的出口

· 阅读需 13 分钟
Tian Pan
Software Engineer

我最近接触的一个安全团队发现,他们的 prompt(提示词)和 response(响应)字段被完整地发送到了一个第三方 SaaS 日志后端,而他们从未与该厂商签署过《数据处理协议》(DPA)。这些字段包含客户的医疗摘要、支持人员误粘贴的 Stripe 私钥,以及某人要求内部助手总结的机密收购备忘录全文。Payload 中没有任何内容经过加密,也没有进行任何脱敏处理。数据保留期长达 400 天。这一集成是由一位初衷良好的工程师在黑客松期间通过 pip install 厂商的 SDK、填入 API 密钥后直接上线的。

这就是 AI 观测性泄露。每个 LLM 应用团队最终都会需要追踪(tracing)——没有它,你无法调试提示词回归或非确定性的智能体(agent)循环——因此 LangSmith、Langfuse、Helicone、Phoenix、Braintrust 或厂商提供的 AI 插件最终都会进入技术栈。默认设置会捕获整个请求和响应。对于大多数生产工作负载来说,这种默认设置就是一个等待被发现的合规性违规隐患。

Agent Trace 中的采样偏差:为什么你的调试数据集在悄悄排除你最关心的失败案例

· 阅读需 11 分钟
Tian Pan
Software Engineer

你团队每个周一盯着看的调试语料库并不是生产环境的代表性样本。它具有明显的偏差,而且偏差的方向完全错误。1% 的头部采样在保留一个罕见的灾难性轨迹之前,会先保留一百次中位数请求——大多数团队只有在某种静默循环了数月的失败模式最终导致退款或停机,并试图在追踪存储(trace store)中寻找示例却一无所获时,才会发现这一点。

这并不是什么罕见的边缘情况。这是所有专为无状态 Web 服务设计、随后又被用于长时程(long-horizon)Agent 的可观测性栈的默认行为。同样的采样算法在处理 HTTP 请求追踪时表现良好,但在处理 Agent 时却会系统性地抹除那些最重要的轨迹——因为在这里,每个“请求”都是一个包含三十个步骤的计划,可能会调用数十个工具,重新生成三个子计划,并在第 27 步发生细微错误之前消耗数万个 token。

解决方法不是“增加采样”。增加采样只会让账单爆炸,而不会改变偏差——你只会得到更多已经过剩的普通数据。解决方法是改变你采样的对象,以只有在轨迹结束后才能获知的预测结果为基准。这需要抛弃基于头部的默认设置,并围绕尾部信号、异常权重以及能在 Agent 执行的长尾效应中存续的有界蓄水池(bounded reservoirs)重新构建保留层。

Agent 集群可观测性:在千并发 Agent 运行中监控而不陷入仪表盘盲区

· 阅读需 13 分钟
Tian Pan
Software Engineer

在生产环境中运行一百个 agent 感觉还可以管理。你有追踪数据,有仪表盘,知道什么时候出问题。但运行一千个并发 agent 完全是另一个问题——不是因为 agent 更复杂,而是因为你为十个 agent 建立的监控模型在你注意到之前就已经悄然失效了。

失败模式很微妙。一切看起来都很正常。你的 span 树都在。错误率很低。然后,一个导致 40% 会话输出质量下降长达六小时的提示词回归,只因为客户投诉才浮出水面——而不是被你的可观测性系统捕获。

这就是仪表盘盲区问题:单 agent 追踪在小规模下运行良好,在集群规模下则会悄然失效。以下是它发生的原因及应对之道。

你的智能体追踪在撒谎:LLM 智能体的基数、采样与 Span 层级结构

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的链路追踪仪表盘显示 Agent 为了响应用户请求发起了 8 次调用。但实际上,它发起了 47 次。你的头部采样器(Head-based sampler)静默地丢弃了其中的大部分。你保留下来的那些调用在技术上是正确的,但在因果关系上毫无用处——它们是从被父级采样器丢弃的根节点中孤立出来的子 Span。

这并不是可视化层面的 Bug。它是将专为 10 个 Span 的 HTTP 扇出设计的分布式链路追踪基础设施,强行套用到每轮对话生成数百个 Span 的系统上的必然结果。默认的 OpenTelemetry 配置系统性地低估了 Agent 的工作量,而运行这些 Agent 的团队通常直到客户抱怨链路追踪视图中显示“不存在”的延迟时,才会察觉到问题。

APM 仪表盘不会告诉你:生产环境中的 LLM 可观测性

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 Datadog 仪表板显示 99.4% 的在线率,低于 500ms 的 P95 延迟,以及 0.1% 的错误率。一切都是绿色的。与此同时,你的支持队列却充满了抱怨 AI 给出了完全错误答案的用户。你毫无头绪,因为每个请求都返回了 HTTP 200。

这是传统可观测性与你在 LLM 系统中真正需要的可观测性之间的本质区别。语言模型可能会以标准 APM 工具无法留下痕迹的方式发生故障:幻觉事实、从错误的产品版本中检索文档、在代码更改修改了系统提示词后将其忽略,或者在模型更新后对特定查询类型静默降级。在你的延迟图表上,这些看起来都一切正常。

生产环境中的 LLM 可观测性:追踪不可预测的行为

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的监控栈能告诉你关于请求率、CPU 和数据库延迟的一切。但它几乎无法告诉你你的 LLM 是否刚刚幻觉出了一个退款政策,为什么一个面向客户的智能体在回答一个简单问题时循环调用了三次工具,或者你的产品中哪个功能正每天悄悄烧掉 800 美元的 Token。

传统的可观测性是围绕确定性系统构建的。LLM 在结构上完全不同 —— 每次都是相同的输入,不同的输出。故障模式不再是 500 错误或超时;而是一个听起来自信且合理、但恰好错误的答案。成本也不再稳定可预测;当一个配置错误的 Prompt 遇到流量高峰时,成本会激增。调试也不再是“在堆栈跟踪中查找异常”;而是“重建为什么智能体在周二凌晨 2 点选择了这条工具路径”。

这正是 LLM 可观测性(Observability)所要解决的问题 —— 而这一领域在过去 18 个月里已经显著成熟。