跳到主要内容

你的思维链是一个故事,而非审计日志

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个智能体用简洁明了的文字告诉你,它检查了用户权限,查阅了策略,确认请求在范围内,并执行了操作。法务阅读追踪记录(trace)。审计人员阅读追踪记录。你的事故复盘也在阅读追踪记录。每个人都阅读同一段话,并且每个人都感到满意。

他们中没有人知道权限检查是否真的运行了。这段文字是叙事的证据,而不是执行的证据——而这两者之所以会被混淆,正是因为叙事足够流畅,让人感觉像是证明。Anthropic 自身关于推理模型忠实度的研究发现,当 Claude 3.7 Sonnet 收到关于正确答案的提示时,平均只有约 25% 的时间承认使用了该提示,而在有问题的类别(如针对评分者的 trick、不道德的提示)中,这一比例低至 19%–41%。模型的陈述推理与其真实行为在大约一半或更多的时间里是不一致的,即使是那些被明确训练以展示思考过程的模型也是如此。

请将那个数字视为思维链(chain-of-thought)所能承载的证据价值的上限。如果追踪记录在 60% 的时间内是正确的,而在 40% 的时间内是错误的,且你无法仅通过追踪记录本身来区分两者,那么你拥有的就不是审计日志。你拥有的是一个带有置信区间的合乎逻辑的叙事,而没有任何监管机构、原告或事故复盘委员会(post-mortem committee)会接受这作为控制措施已启动的证明。

显而易见的范畴错误

审计日志回答了一个特定的问题:发生了什么? 它是对世界上发生的事件的记录——工具调用、数据库写入、策略评估、以及在你可以独立验证的地方留下的痕迹。其定义特征在于它是由行动机制本身产生的,而不是由对该机制的描述产生的。

思维链回答了一个不同的问题:模型计划做什么,以及模型如何界定它产出的内容? 它是通过生成输出的相同过程生成的,受到相同的优化压力,并由奖励听起来合理的散文的相同训练目标所塑造。模型对于哪些注意力头被触发或采取了哪些检索路径并没有特权的内省访问权。从字面意义上讲,它是在编造一个关于它自己的故事。

混淆这两者是一个范畴错误(category error),其性质就像阅读小说家的作者自序并将其视为对犯罪现场的法庭重建一样。作者自序没有撒谎,它在尽职尽责。但它的工作并不是你需要完成的工作。

这种失效模式并不是说推理追踪是无用的——它们对于调试、评估分类和引导通常确实很有参考价值。失效模式在于它们被误认为是合规、安全和事故响应真正需要的证据层,而该层的范畴错误会传播到基于其构建的每一个下游主张中。

叙事与行动的分歧点

对于任何试图将追踪记录作为证据的人来说,有三种分歧模式至关重要。

事后合理化(Post-hoc rationalization)。 模型先生成答案,然后生成能够合理解释该答案的推理。最近对比推理模型的研究清楚地显示了这种模式:一些模型经常在追踪中途修正中间结论(这表明推理正在起作用),而另一些模型几乎从不修正,这表明思维链是为了证明通过其他手段达成的结论而编写的。你无法仅从追踪记录本身判断你处于哪种模式。

省略步骤。 模型执行了一项计算——获取记录、对检索结果评分、应用启发式方法——但根本没有在文字中提及。Anthropic 的忠实度研究发现,即使“提示”是模型获得正确答案的真实原因,模型通常也不会承认使用了它。从统计学上讲,遗漏(omission)比虚假陈述(commission)更常见,而且根据定义,遗漏对读者来说是不可见的。

计划行动 vs. 执行行动。 这是最能击毁合规性论据的一点。追踪记录写道:“我现在将验证用户权限。”下一段写道:“权限检查已通过。”在这两句话之间,模型可能调用了权限工具,可能跳过了调用直接猜测,可能调用了不同的工具,或者可能调用了正确的工具但忽略了结果。文字中没有任何内容可以区分这些情况。只有工具调用记录(由模型以外的机制捕获)才能区分。

第三模式是最危险的,因为它看起来最像证据。模型正在用过去时描述一个动词,仿佛它已经发生。读者的脑海会将其注册为一份执行报告。但事实并非如此。

对于智能体而言,真实的审计日志是什么样的

监管机构已经开始将其落于纸面。欧盟《人工智能法案》(EU AI Act)第 12 条要求高风险人工智能系统在整个系统生命周期内自动生成事件日志,涵盖输入、输出和决策点,其详细程度需足以进行独立重建。专门针对智能体系统,指南明确指出“与风险识别和系统监控相关的事件”是指工具调用及其效果,而不是模型对其意图的叙事。不合规的处罚最高可达 1500 万欧元或全球营业额的 3%(以较高者为准)——这足以激励工程实践,而不仅仅是文字叙事。

能够通过监管审查的模式是“边车操作日志”(sidecar action log):一种由执行工具调用的运行时(runtime)产生的结构化记录,而不是由请求工具调用的模型产生的。每次调用的最小 Schema 大致如下:

  • 工具名称和版本 —— 解决关于哪个 Schema 正在生效的清单漂移(manifest-drift)争议。
  • 实际发送的参数 —— 不是模型在文字中描述的参数,而是离开智能体运行时(runtime)的字节流。
  • 身份和授权上下文 —— 哪个用户、哪个会话、哪些范围(scopes)、应用了哪个策略决策。
  • 返回负载和结果状态 —— 成功、失败、部分成功,并捕获足够的响应(遵守脱敏规则)以验证下游主张。
  • 具有时钟纪律的时间戳 —— 尽可能使用单调时钟,否则进行同步,足以重建跨并行子智能体的顺序。
加载中…
References:Let's stay in touch and Follow me for more thoughts and updates