幻觉是机制而不是 bug,靠流程防,不靠提醒
我问 AI,帮我详细介绍「架构师之路沈剑」从出生到创业的履历,一定要详细,6000 字!太有意思了,说的有理有据,这个老六——要不是我自己,差点都信了。
大模型为什么要编?它知道自己在编吗?先说结论:幻觉(hallucination)——模型自信地编造看似合理但不真实的内容——并不是某个模型的缺陷,而是所有大模型的共性。它不是 bug,是机制的必然产物。这一讲咱们把这件事讲透。
问题一:它为什么非得编,而不能说”不知道”?
核心原因一,训练决定的:模型分不清”知道”和”编得像”。模型从海量文本里学到的是统计规律。有些事实,训练数据里只出现过一次,比如某个人的生日。有些编造的内容,出现的次数多,统计权重就高了。
谎言重复千遍,就成了真相。在大模型的世界里,确实是这样。
那些”一次性信息”的真相,大模型靠统计是学不会的。但训练目标不管这些,它要求模型”问什么都能答,而且要答得像回事”。所以模型学到的不是事实,而是“事实长什么样”——论文标题的格式、日期的格式、API 的命名风格。模型不是在”说谎”,它根本不知道自己在编——它没有”我知道的”和”我编的”这个概念区分,只有训练过程中学到的统计概率。
核心原因二,评估决定的:瞎猜被奖励,诚实被惩罚。大模型的主流评测几乎全是”考试思维”:看准确率,而不是错误率。一说你就懂了——问大模型一个问题:沈剑的生日是哪个月?它怎么会知道。此时它有两个选择:
瞎猜一个答案 → 1/12 的概率能对
说"我不知道" → 必然得零分
几千几万道题测试下来,爱猜的模型在排行榜上碾压诚实的模型
不要说大模型了,考试的时候,老师是不是教我们:不要空着,随便选一个也有 25% 的概率答对。
这不是推测,是有实测的。2025 年 9 月,OpenAI 发了一篇论文(作者之一 Adam Tauman Kalai)。他们拿三个主流大模型问同一个问题:”Adam Tauman Kalai 的博士论文标题是什么?”三个模型给出三个完全不同的答案,每个都有模有样——标题、学校、年份一应俱全,而它们全错了。论文里还有组对照数据更说明问题:同一个事实问答评测里,一个较旧的模型准确率略高(24% 对 22%),但错误率高达 75%——因为它弃权率只有 1%,什么都敢答;另一个弃权率 52%,错误率只有 26%。你猜榜单上谁赢?爱瞎猜的那个。
模型编答案,是因为训练和评估的整个体系,都在教它”宁可编,也不要说不知道”。指望它在生产环境里突然变得诚实,不现实。模型不是一个”偶尔说谎的助手”,它是一个”永远在应试的考生”。
问题二:怎么防?靠流程,不靠提醒
很多人的第一反应是,提示词里加一句提醒:”请诚实回答,不知道就说不知道。”
你在提示词里用过这个技巧吗?
其实吧,这句话作用很有限。大模型的”应试模式”,一句提醒改变不了训练出来的行为倾向。真正有效的方法,是把验证做到 Agent 流程里。
这是今天全文最重要的一句话。
更具体地说,我们在设计 Agent 的时候:
- 要有验证环节——生成的代码必须跑起来才算数,生成的事实必须给来源链接才算数
- 要求引用来源——让模型标注每个关键事实的出处,没出处的默认存疑
- 把”不确定”设计成合法输出——输出格式里明确留一个”无法确认”的选项,而不是逼它必须给答案
- 关键事实人工核验——关键决策点,Agent 对话中断,返回人工决策
AI 时代,审美、决策、兜底(我不愿说”背锅”),是人无可替代的能力。
以上四条,本质上是同一件事:不完全相信模型的单次输出,只相信经过验证流程的输出。到第 9 讲,我们会把”验证”升级成完整的”评估与迭代”体系——今天先建立意识。
问题三:什么任务适合交给它?
判断标准就一句话:答案能否被极低的成本验证?
适合的场景(答案可验证):
生成类 写代码、写文案——代码跑一遍,文章看一眼,就能验证
转换类 翻译、格式化、改写——原文就在手里,对照即可
有验证器 单元测试校验、schema 校验、人工抽检
不适合的场景(答案难验证):
精确事实 某人的生日、某篇论文的标题
实时数据 今天的股价、最新的版本号
高风险无校验 医疗建议、法律意见——错了也没人兜底
特别提醒一个和程序员关系最大的:代码幻觉。模型会编造不存在的 npm 包、不存在的 API 方法、看起来合理但签名错误的函数。它编造的方式和编论文标题一模一样——按”API 应该长什么样”的统计印象生成。
像不像面试时不懂装懂的候选人?说得越细,越像真的。
所以,AI 写代码,一定要验证:SDD 就很好,有 spec 验证;TDD 也很好,有用例验证——这也是我们的 sdd-site-agent 里,”验收标准”和”实跑验证”是设计的核心,而不是事后的补丁。
简单总结一下
① 幻觉是大模型的机制,不是 bug;
② 降低幻觉的核心是验证;
③ 任务是否适合交给大模型,看它能不能被低成本验证。
具体到第 9 讲,会详细介绍 Agent 的验证、评估与迭代体系。欢迎持续关注,让我们一起,一步一步,实现自己业务专属的 mini-agent。
实操演练(约 25 分钟)
必做部分 + 一步加餐,每一个实验都能在我们的日常 AI 助手里直接做。做完必做部分,大伙就会对”机制而不是 bug”有切肤的手感。
检验一下
① 一份诱导幻觉记录:从实操第 1、2 步里挑一个效果最震撼的,记录问题、模型的编造内容、以及它编得有多像真的;
② 一份防幻觉流程设计:针对我们自己的真实工作场景(比如让 AI 生成代码、生成文档),写出验证流程——输出后经过哪几步检查才允许进生产。
第 ② 份会在第 9 讲(评估与迭代)升级成完整的验收标准,写的时候想到的标准先随手记下来。
你如果想深挖一层,读这篇:OpenAI · Why language models hallucinate(论文全文:arXiv 2509.04664)
幻觉的统计根源和评估激励的完整论证都在里面。生日实验、DEEPSEEK 数 D 实验的原版数据就在论文开头,15 分钟阅读量,值得一看。
但还有一个没解决的问题:就算模型老老实实不编,咱们能塞给它的信息也是有限的——第 1 讲说过,窗口有天花板,塞多了还会慢慢”腐烂”。那到底该喂什么?怎么喂?喂多少?——第 3 讲,我们讲上下文是稀缺资源。
知其然,知其所以然。思路比结论更重要。