跳转到主要内容

工具幻觉率:你的智能体团队尚未运行的探测工具集

阅读需 1 分钟Tian PanTian Pan

询问一个 Agent 团队他们的工具调用成功率是多少,你会得到一个答案。但如果你问他们的工具幻觉率(tool-hallucination rate)是多少,全场就会陷入沉默。大多数团队并不追踪这一指标,而那些追踪的团队通常也只计算最灾难性的版本——即目录中不存在的函数名——而那些更隐蔽、代价更高的变体则在生产环境中未受监控地运行。

幻觉化的工具调用不仅仅是指模型凭空捏造了 delete_orphaned_users(older_than="30d") 导致你的分发器(dispatcher)抛出 ToolNotFoundError。这是简单的情况。更复杂的情况是,虚假的调用通过模糊匹配隐匿地指向了一个相邻的真实工具,或者工具名称正确,但 Agent 捏造了一个参数,而你的 Schema 因为将其标记为可选而愉快地接受了它。这两种情况都能通过你的“工具调用是否成功”仪表盘,但都不是用户真正想要的。

本文的核心观点是将工具幻觉视为一个可衡量的量,而不是一种传说中的故障类别。这意味着三个指标、一个每个 Agent 团队都应该运行(但几乎没人运行)的探测套件,以及一套关于提示词(prompt)、工具目录(catalog)和分发器(dispatcher)各自对幻觉率贡献的准则。

三种率,而不仅仅是一种

“工具幻觉率”是一个笼统的概念(suitcase term)。如果你唯一的指标是每千次对话中 UnknownToolError 异常的数量,那么你测量的是分发器的严格程度,而不是模型的行为。请将其拆分为以下三个指标:

未知工具率 (Unknown-tool rate) —— 模型输出一个在当前对话注册的工具集中不存在的函数名的频率。这是经典的幻觉调用。它的下限由分发器的错误日志决定,上限则由模糊匹配层静默吸收的任何内容决定。

影子调用率 (Shadow-call rate) —— 模型输出的名称与真实工具足够接近,以至于分发器(或框架的模糊匹配器)将其路由到了模型并非本意的工具。例如,update_user_profile 因为匹配器过于“慷慨”而被路由到 update_user。这是最糟糕的情况:你产生了幻觉,它却“成功”了,结果你向真实记录写入了错误的字段。除非你专门进行埋点监控,否则这个指标是不可见的。

参数幻觉率 (Hallucinated-argument rate) —— 工具名称正确,但参数是捏造的。例如,在 search_documents(query=..., tenant_id="enterprise_tier") 中,tenant_id 应该是请求者的字面 UUID,而不是对他们的描述。调用在 Schema 层面是成功的,但在语义层面是失败的。在可靠性对齐(Reliability Alignment)文献中,这被称为“工具内容幻觉”,是最微妙的失败模式之一:JSON 解析成功,类型验证通过,但副作用却是错误的。

最近一份关于 Agent 幻觉调查文献的分类法将执行幻觉分解为工具类型(tool-type)、工具时机(tool-timing)、工具格式(tool-format)和工具内容(tool-content)类别。对于暴露大量目录的生产级 Agent,后两类(格式和内容)的比例占据主导地位。行业讨论往往偏向于未知工具率,因为它易于统计。你的指标卡应该将这三者全部分开。

为什么幻觉率比你想象的要高

目录大小会非线性地推高幻觉率。每轮对话暴露 5-10 个工具的团队,其工具幻觉率往往低到可以忽略不计。而每轮暴露 50 多个工具的团队会发现幻觉率激增,这种增长仅凭模式匹配是无法解释的——模型开始在工具族之间进行虚构,因为上下文本身暗示了一个比实际注册的更大的动作空间。目录中的工具越新,附近出现幻觉“近亲”的可能性就越大,因为训练分布中有熟悉的邻居,模型会进行插值。

命名是一种泄露。如果你的目录中有 create_invoicelist_invoicesget_invoice,那么当用户第一次要求取消发票时,模型会非常自信地调用 delete_invoice。目录的形态暗示了完整性。再配合一个过度承诺的系统提示词(system prompt)——“你可以访问全套计费工具”——你就等于告诉模型,缺失的工具一定存在,因为提示词是这么说的。

训练分布会从另一个方向泄露。模型在成千上万的代码库中见过 send_emailsend_messagesend_notification 的实现。如果你只注册其中一个,另外两个就会存在于先验知识中。ToolTweak 系列研究表明,表面层级的工具元数据极易受到对抗性操纵,正是因为工具名称在选择中具有极大的权重——在正常情况下,正是这种权重将幻觉引向了那些看似合理但实际上并不存在的“邻居”工具。

提示词也有所影响。那些被指令要求“机智灵活”或“当工具失败时尝试其他方法”的 Agent,在首轮调用失败后,幻觉调用的比例会有显著上升。这种指令赋予了模型即兴发挥的权限,而代价最低的即兴发挥就是捏造一个新的工具名称。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 11 分钟

智能体无法察觉的死锁:生成计划中的循环工具依赖

LLM 编写的智能体计划通常包含经典死锁检测无法发现的隐式循环。通过静态计划图处理结合运行时看门狗,可以在 Token 耗尽前捕获这些问题。

insider
ai-agents
阅读需 9 分钟

当时钟成为工具:Agent、时区以及那个只在午夜发生的 Bug

LLM 没有内部时钟,因此 Agent 会自信地漂移到过时的时间上——这表现为错过的任务调度、错误的时区计算以及破坏缓存的时间戳。本文将介绍如何将当前时刻作为基础设施来提供。

insider
ai-agents
阅读需 9 分钟

填充式工具调用:当智能体在表演勤奋而不是真正干活

生产环境中的智能体不断发出对答案毫无影响的工具调用——烧掉 token、拖慢延迟、损害准确率。本文讲清楚填充式调用是如何从训练中长出来的、它真正的成本是多少,以及如何用反事实测量和调用预算把它从工作流里剔除出去。

insider
ai-agents
阅读需 10 分钟

Happy Path 是你的 Agent 评估测试过的唯一路径

94% 的通过率衡量的是你想象成功的能力,而非 Agent 是否真的有效。本文探讨黄金路径偏见如何渗入 Agent 评估套件,以及如何通过故障模式覆盖、生产案例收集和故障注入来解决这一问题。

insider
ai-agents
阅读需 9 分钟

你的智能体假设存在的“撤销”按钮

AI 智能体在规划时往往假设每个动作都是可以撤销的,这是在可逆的代码沙盒中养成的习惯。通过在工具中编码可逆性分级,确保“单向门”决策的安全性。

insider
ai-agents