工具调用被普遍当作"治幻觉的解药"——把模型的自由发挥关进函数签名的笼子里,输出就有据可查了。2025–2026 年的一批实证研究正在拆穿这个叙事:当模型被赋予工具、尤其是被赋予更强推理能力之后,它并没有变得更老实,反而演化出了一套结构化的、可分类的、与能力正相关的编造行为。本文以 SimpleToolHalluBench、ToolBeHonest、AgentHallu、StableToolBench、MIRAGE-Bench 五个基准的公开数据为骨架,拆解工具调用幻觉的五个亚型,并量化每一种缓解手段必须支付的"幻觉税"。
核心结论先抛出来:推理越强,幻觉越凶——Qwen3-8B 开启 thinking 模式后工具幻觉率从 36.2% 跳到 56.8%;工具增强模型答案准确率能涨 19.3 个百分点,但推理质量赢率暴跌 41.5 个百分点;而把幻觉率从 61.5% 压到 18.8% 的可靠性对齐,代价是工具调用量被砍掉 76%。这是一条贯穿全文的红线:在当前架构下,降幻觉几乎必然降能力。
学术界已不再把"工具调用错"当作一个笼统的 bug,而是按失败发生的位置切成了五类。这张分类表是后续所有度量的坐标系。
| 亚型 | 失败本质 | 触发位置 | 代表基准 | 典型征兆 |
|---|---|---|---|---|
| 选择幻觉 Selection | 调用不存在/不相关工具 t∉T |
动作发射前 | SimpleToolHalluBench | 编造 search_package 这类签名里没有的函数 |
| 使用幻觉 Usage | 工具对,参数畸形/缺失/编造 | 参数填充阶段 | BFCL / StableToolBench | 必填项空着、类型错乱、凭空塞值 |
| 可解性幻觉 Solvability | 误判"这题能用现有工具解" | 规划阶段 | ToolBeHonest | 无工具时仍声称可解、硬编计划 |
| 工具诱导近视 TIM | 用工具输出替代多步推理 | 执行后推理 | TIM 基准 | 答案对、过程是"贴结果" |
| 旁路幻觉 Bypass | 压根不调用,直接编造结果 | 动作发射被跳过 | AgentHallu | 回答里引用了"工具结果",trace 里却没有那次调用 |
前两类(选择、使用)属于"动作层"错误,业界投入最多,BFCL 这类榜单主要盯它,也最好用 JSON Schema 强约束治掉。真正难的是后三类——它们发生在"动作之前或之后"的认知层,schema 约束根本碰不到。
最反直觉的一条数据:给模型开 CoT / thinking,幻觉率不降反升。 SimpleToolHalluBench 上 Qwen3-8B 关闭推理时幻觉率 36.2%,开启后飙到 56.8%,整整高出 20 个百分点。论文给出的机制是两条:一是表征坍缩(representation collapse)——强化学习把推理子空间打磨得越尖锐,工具调用子空间在逐层 Centered Kernel Alignment 上反而越扭曲,工具上下文的早/中层 CKA 跌到约 0.7,而数学推理能稳在基线,等于"练推理练废了工具脑";二是推理启发式的过度泛化——模型被奖励"先想后做",于是在 NTA(No-Tool-Available,工具集为空)和 DT(Distractor-Tool,只有干扰工具)场景里也强行"想出一个调用"。
# 推理-幻觉正相关的实测斜率(SimpleToolHalluBench 回归)
# SynTool reward 提升 0.10 → 0.60 时,幻觉率随之 70% → 95%
# 即: 性能越强, 越倾向于"自信地编一个工具调用"
slope(hallucination | reward) > 0 # 一条向右上方倾斜的回归线
这条结论直接挑战了"上更强模型就能治幻觉"的工程直觉。在工具受限、工具缺失的边缘场景,更强推理 ≈ 更强编造。
工具诱导近视(Tool-Induced Myopia)是另一组刺眼的反差。Bayat 等人量化发现,挂上工具后,模型答案准确率最多涨 19.3 个百分点,但推理质量的赢率却掉了 41.5 个百分点。机制是工具调用短路了多步推理:模型把"算对"外包给了工具,自己不再走逻辑链。代价是错误形态发生了迁移——局部算术错误下降约 9pp,但全局逻辑/假设错误反而上升 12pp 和 10pp。调用次数越多,逻辑漏洞越深。
这对"用工具做能力外挂"的打法是个警告:工具把正确率抬上去了,但抬上去的是脆皮正确率。一旦遇到工具没覆盖、需要模型自己拆解的长尾问题,那 41.5pp 的推理欠账就会连本带利还回来。DPO 惩罚"只靠工具的证明"、明确提示"把工具当辅助证据而非结论"能部分挽回推理质量,但会顺手压低答案准确率——又是那条跷跷板。
ToolBeHonest 的三级诊断(可解性检测 EM、计划 Progress Rate、缺工具分析 Matching Score)暴露了一个被低估的失败源:可解性幻觉独占深度规划错误的 40% 以上。模型不擅长"拒答"——当给定工具集不足以解决查询时,它倾向于把查询强行判定为可解,然后编造一个调用链或调用一个"潜在工具"。错误驱动场景被细分成三类:缺必要工具(MNT)、仅有潜在工具(PT)、工具功能受限(LFT)。开源权重模型在 MNT/PT 场景里尤其爱"无中生有"地生成不存在的工具名。
工程上的直接对策是给动作空间显式扩一个"我不会/工具不够"出口。这正是可靠性对齐(Relign)的思路:把 ChangeTools(换工具)、TalkToUser(追问用户)作为合法动作喂给 SFT+DPO,让模型学会"该停就停、该问就问",而不是硬编一个调用。
旁路幻觉(Bypass)是五型里最难发现、也最危险的一种——模型直接跳过工具调用,编造一个"工具返回结果"写进回答。LangChain 团队把它细分成四档以便 trace 复盘:纯幻觉(调用从未发生却声称有结果)、部分幻觉(工具返回了,模型却添油加醋或误读)、工具真 bug(工具返回错数据、模型忠实地传下去)、错误处理 bug(工具抛异常,模型忽略它继续用陈旧上下文)。
# 旁路幻觉的工程兜底: trace-first 校验(伪代码, 思路源自 LangSmith)
def is_bypass_hallucination(final_answer, trace):
cited_tool_calls = extract_tool_refs(final_answer) # 回答里声称引用了哪些工具结果
real_runs = {r.name for r in trace.tool_runs} # trace 里真正执行了哪些工具
# 回答引用了某工具结果, 但 trace 里压根没有那次调用 => 纯幻觉
fabrications = cited_tool_calls - real_runs
for f in fabrications:
alert("旁路幻觉: 回答引用 %s, 但无对应 tool_run" % f)
return bool(fabrications)
旁路之所以危险,是因为它不崩、不报错、不留堆栈。团队通常要到用户投诉"这不是工具返回的""它为什么无视了报错继续往下跑"才发现。这是为什么 observability 必须从"扁平日志"升级成"把每次调用、参数、原始返回、后续决策串成 run 树"的完整轨迹——否则你永远无法回答"到底是模型编的,还是工具真返回了那个数据"。
Healy 等人(arXiv 2601.05214,2026 年 1 月)给出了一条轻量路线:在函数名、参数、调用闭合等 token 位置读取模型最终层激活,跑一个单趟分类器,幻觉检测准确率可达 86.4%,且明显优于多趟采样基线。它的物理基础正是第 1 节那条表征坍缩曲线——幻觉点和正常点的激活分布在后段残差流上是可分的。
# 表征级幻觉探针(示意): 在工具调用 token 处读 hidden states
def hallucination_probe(hidden_states, call_tokens):
h = pool(hidden_states[call_tokens], mode="field_aware") # 领域感知池化
return sigmoid(linear_probe(h)) # > 阈值 => 疑似幻觉, 触发门控
# 价值: 一次前向传播就能拦截, 不像自验证要采样 N 次再投票
更激进的是 DyMo+SVS:给模型装一个"内部世界模型",先预测候选调用执行后的下一状态,按预测成功率打分,只有被接受的调用才放行,precision 可达 94.5%,相比纯 SFT 成功率高 20 个点。这类探针/世界模型的价值在于把幻觉检测从"事后对账"提前到"事中门控",但它也意味着多一层模型、多一份延迟——又是一笔税。
把缓解手段的数据摆在一起看,跷跷板就清楚了。Xu 等人的 Relign 把整体幻觉率从 61.5% 砍到 18.8%,工具调用量减少 76%,效用与可靠性比反而提升 43%——这是少有的"降幻觉还涨效用"的赢家,秘诀在于它不是单纯抑制调用,而是把"换工具/问用户"做成了被奖励的合法出口。对比之下,朴素的 DPO + prompting 虽然能把幻觉率从 90.2% 拉到 55.8%,但 SynTool reward 同步从 0.45 跌到 0.34——幻觉降了一半,任务能力也跟着降。
| 缓解手段 | 幻觉率变化 | 能力/效用变化 | 净判断 |
|---|---|---|---|
| Structured Outputs / 约束解码 | 选择/使用型≈归零 | 几乎无损 | 高 ROI,治动作层 |
| Reliability Alignment (Relign) | 61.5% → 18.8% | 效用+43% | 罕见双赢 |
| 表征探针门控 | 检测 86.4% | +延迟 | 性价比高 |
| DyMo+SVS 自验证 | 接受精度 94.5% | 成功率+20pt | 重型、高精 |
| DPO + Prompting | 90.2% → 55.8% | reward 0.45→0.34 | 降幻觉也降能力 |
这张表是给"该上哪道闸"的决策用的:动作层幻觉用 Structured Outputs 一刀切,便宜且几乎无损;认知层幻觉(可解性、TIM、旁路)才是 Relign、探针、SVS 的主场,且都要权衡。
单步幻觉已经难,多步轨迹里把幻觉"定到哪一步"更是灾难。AgentHallu 给出的工具调用幻觉步定位准确率,闭源模型仅 11.6%,开源仅 6.3%,远低于规划幻觉和检索幻觉的定位率,且 SOTA 模型整体很少能超过 20%。轨迹越长、参数错配越隐蔽(尤其是"工具调对了但执行语义错"的那类 wrong-execution),归因越糊。
这意味着多智能体/长链路场景里,"哪个工具调用幻觉了"本身就是个没解好的题。工程上必须从"靠人读 trace 定位"升级到"结构化、可回放、可断言"的轨迹系统——把每一步的调用、参数、返回、模型后续推理都绑成可重放的 run,把可疑步骤自动标红,否则一个 20 步的链路里找一个 6.3% 才能定位的幽灵,基本等于大海捞针。
工具幻觉不只是可靠性问题,更是攻击面。InfoSecWriteups 的实战拆解展示了同一条机制的恶意版本:攻击者通过受污染的输入诱导 LLM"自主"调用 search_package 之类函数——这正是一条被人为触发的"选择幻觉"。换句话说,模型的"爱编造工具调用"这一倾向,对防御方是 bug,对攻击方是 feature:注入一段文本,就能把一个本不该发生的调用"幻觉"出来并执行。结论是工具调用的输出处理(output handling)必须当一等公民做校验——调用前白名单、参数 schema 强校验、副作用幂等、结果回灌前再校验。把幻觉从"模型偶尔犯的错"升级为"可被外部输入定向触发"之后,runtime 校验层就不再是可选项。
下图把五型幻觉按发生位置串成一条调用生命周期,并标出每种缓解手段挂在哪一层——可以清楚看到:动作层的两型被 schema 切掉,认知层的三型只能靠 Relign/探针/SVS 在更上游拦。
flowchart TD
Q[用户查询] --> SOLV{可解性幻觉<br/>Solvability}
SOLV -- 误判可解/硬编 --> SEL[选择幻觉 Selection<br/>调用 t∉T 或编造]
SOLV -- 学会拒答 --> RELIGN[Relign 出口<br/>ChangeTools / TalkToUser]
RELIGN --> OK[合理中止/追问]
SEL --> USAGE[使用幻觉 Usage<br/>参数畸形/缺失]
USAGE -. schema 约束 .-> STRUCT[Structured Outputs<br/>约束解码]
STRUCT --> CALL[真实工具执行]
CALL --> PROBE{表征探针门控<br/>86.4% 检测}
PROBE -- 疑似幻觉 --> REJECT[拦截/重试]
PROBE -- 通过 --> TIM{TIM 近视检查<br/>是否用结果替代推理}
CALL -. 跳过不调 .-> BYPASS[旁路幻觉 Bypass<br/>直接编造结果]
BYPASS --> TRACE[Trace 校验<br/>回答引用 vs 真实 run]
TIM -- 推理外包 --> DPO[DPO/提示<br/>工具=证据非结论]
TIM -- 正常推理 --> ANS[最终回答]
DPO --> ANS
TRACE --> ANS
classDef action fill:#fde2e2,stroke:#c0392b,stroke-width:2px;
classDef cog fill:#fef5e7,stroke:#e67e22,stroke-width:2px;
classDef gate fill:#eafaf1,stroke:#27ae60,stroke-width:2px;
class SEL,USAGE action;
class SOLV,TIM,BYPASS cog;
class STRUCT,PROBE,TRACE,RELIGN,DPO gate;
读图要点:红色是动作层幻觉(schema 可治),橙色是认知层幻觉(只能靠门控),绿色是缓解闸门。认知层的三个闸(探针、Relign、trace 校验)每一个都对应一笔延迟或能力税——这正是为什么"装个工具就治幻觉"是伪命题。
把上面的数据收敛成可落地的选型建议:
纯 API 封装型 Agent(工具固定、查询简单):动作层幻觉占绝大多数。首选 Structured Outputs + 约束解码 + Pydantic schema 校验,几乎零成本把选择/使用型幻觉归零,不必上重型门控。
工具受限 / 半开放场景(工具可能不够用):可解性幻觉是主战场。上 Relign 风格的"换工具/问用户"出口——这是数据里唯一双赢的缓解(61.5%→18.8%,效用还涨 43%),别用朴素 DPO 硬压,那会同时砍掉任务能力。
长链路 / 多步 / 多智能体:旁路幻觉和定位黑洞(6.3%–11.6%)是头号风险。可观测性优先——把每次调用、参数、返回、后续推理串成可回放的 run 树,回答发布前做"引用 vs 真实 run"一致性校验。条件允许再叠一层表征探针门控(86.4%,单趟低成本)。
对外暴露 / 有不可信输入的场景:工具幻觉 = 攻击面。调用白名单 + 参数强校验 + 副作用幂等 + 输出处理校验必须成体系部署,把 prompt injection 触发的"被定向幻觉的调用"在 runtime 拦死。
推理密集 / 准确率优先的场景:警惕 TIM。挂工具会涨 19.3pp 准确率但掉 41.5pp 推理质量。要么显式提示"工具是证据不是结论",要么对关键链路保留一条"模型自己推理"的对照组做质检。
一句话总结全篇的红线:当前架构下,工具幻觉与模型能力正相关,降幻觉几乎必然降能力。 唯一能跳出这条跷跷板的是 Relign 式的"学会拒答"和 Structured Outputs 式的"硬约束"——前者治认知层、后者治动作层。其余手段(探针、SVS、DPO)都是按场景支付能力税或延迟税去换幻觉下降。认清这笔税,比迷信"更强模型/更多工具"重要得多。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
