想象你有一个 AI 助手,它能访问你的邮箱、日历和通讯录。今天早上它收到一封邮件,写着“周三下午三点开会”,但它把“周三”理解成了下周三,然后向所有参会人发出了日程变更通知。等它发现错误时,大家已经把时间改了——这就是 Agent 幻觉的可怕之处:它不是一个错误回答,而是一个错误行动。

大模型幻觉你可能见过:问 ChatGPT 一些它不知道的事,它一本正经地给你编一个答案。说错了,你笑笑就过去了。但当这个模型拥有工具和权限时,同样的“一本正经”会变成删除文件、发送邮件、下单购物。后果完全不在一个量级。
我最早也以为,Agent 幻觉只是大模型幻觉的“应用版本”——模型先在脑子里产生幻觉,然后再写出来。但后来我跑了一个带工具调用的 Agent,才意识到事情没那么简单。
同样叫幻觉,完全不是一回事
在纯大模型场景中,幻觉指的是模型生成了与事实不符的内容。而在 Agent 场景中,幻觉指的是模型在决策链中产生了错误的状态认知或行动规划,并且这些错误会被外部环境执行。
说人话:大模型幻觉是“说错话”,Agent 幻觉是“做错事”。前者停留在信息层面,后者直接作用在现实世界。一个 Agent 通常由规划模块、工具调用模块、记忆模块和环境反馈模块组成——每个模块都可能产生幻觉。
| 幻觉类型 | 发生环节 | 例子 | 后果 |
|---|---|---|---|
| 规划幻觉 | 制定任务计划 | 虚构一个不存在的步骤,或者把步骤顺序搞反 | 整个执行方向错误 |
| 工具调用幻觉 | 选择工具/填写参数 | 调用错误的 API,或给参数编造一个不存在的值 | 系统报错、数据损坏 |
| 环境感知幻觉 | 解读环境反馈 | 把报错信息当成正常输出,把空结果当成有效结果 | 基于错误信息继续行动 |
| 记忆幻觉 | 写入或提取记忆 | 记错之前的对话、状态或事实 | 长期行为偏离目标 |
这些分类不是割裂的,它们常常连锁发生。我见过一个 Agent 在调用天气 API 时,把返回的 HTTP 404 页面解析成了“多云转晴”,然后基于这个“天气”去安排出行计划——这就是环境感知幻觉叠加规划幻觉。
最阴险的地方:错误会自我放大
大模型幻觉是一次性的,你说错了,下一句可以纠正。Agent 幻觉是会传染的:Agent 的每个行动都会改变环境,而新的环境状态又成为下一次决策的输入。错误行动 -> 错误观察 -> 错误决策 -> 更错误的行动,这是一个雪球。
在斯坦福那个虚拟小镇里,Agent 们会互相传播记忆。一个 Agent 的“记忆幻觉”会像谣言一样在小镇里扩散,然后驱动其他 Agent 做出相应的社交行动。比如 A 告诉 B“张三喜欢画画”,B 记成了“张三是个画家”,于是 B 邀请张三参加画展。幻觉从一个人的大脑传到了另一个人的行动上。这项研究来自Generative Agents,它揭示了 Agent 之间幻觉传播的社会性。
更麻烦的是,Agent 不会像人一样对异常保持警惕。它发现自己走错了,不会停下来反思,而是会努力地解释当前状态,把它合理化,然后继续执行。这种“合理化”让错误更难被察觉。
为什么说它比大模型幻觉危险得多
大模型幻觉影响的是“信息”,Agent 幻觉影响的是“现实”。语言模型说错话,你可以反驳;Agent 做错事,你只能承担后果。
| 维度 | 大模型幻觉 | Agent 幻觉 |
|---|---|---|
| 影响域 | 信息/文本 | 真实世界 |
| 作用对象 | 读者 | 工具、系统、人 |
| 可逆性 | 可以重新生成 | 可能不可逆 |
| 检测难度 | 人工容易发现 | 隐蔽性强,常被归因于系统故障 |
我认识的一个开发者给 Agent 配了文件删除权限,用来清理临时文件。结果 Agent 因为幻觉把一个包含重要备份的目录当成了临时文件,执行了删除。等发现时,已经无法恢复。这种事故不是个例,而是 Agent 应用落地时最常见的安全隐患之一。
怎么防?防不住,只能先收权
目前没有任何方法能彻底消除 Agent 幻觉。LLM 的本质是概率生成,只要它参与决策,就一定会出错。但我们完全可以通过架构设计,把幻觉的成本降到最低。
- 限制权限:给 Agent 最小权限,关键操作必须人工审批。这相当于给 Agent 装一个“刹车”。
- 验证工具调用:用规则或另一个模型检查 API 参数是否合法、工具是否存在。比如调用前先做 schema 校验,非法调用直接拦截。
- 反思机制:Reflexion 让 Agent 在执行失败后总结经验,写入记忆,以便后续尝试避开同样的错误。它不能防止第一次犯错,但能防止反复犯同一个错。
- 环境反馈闭环:让 Agent 对每一步执行结果进行显式校验,而不是盲目相信返回的内容。比如收到 API 响应后先检查状态码,再决定下一步。
- 任务分解与回滚:把任务拆成可回滚的小步骤,出错时能恢复到上一个安全状态。这类似于数据库事务,用空间换安全。
值得一提的是,Toolformer 和 ReAct 等早期工作,已经展示了模型调用工具的能力,但也暴露了工具调用中幻觉的普遍性。后来的 Agent 框架大多把“工具验证”和“人工审批”作为标配,正是因为大家都吃过亏。
如果你正在构建 Agent 应用,我的建议是:先把“它会犯错”当成默认前提,然后用系统架构去兜底,而不是把希望寄托在模型能力的提升上。模型会越来越聪明,但环境中的意外永远存在。毕竟,说错话可以被原谅,做错事要付出代价。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/262.html