上个月,组里一个同事跑过来找我,脸色不太好看。

“哥,你帮我看看,这个 API 接口是不是有问题?我查了一下午,文档上写的参数名和实际返回的不一样。”

我看了一眼,瞬间血压上来了——那个 API 根本不存在

是他让 AI 生成的调用代码,AI 编造了一个"看起来很真实"的 SDK 方法名、参数结构、返回格式,甚至连错误码都像模像样。但这整套东西,从函数名到参数,全是 AI 凭空捏造的

他在那段代码上花了整整一天。

这不是个例。在过去半年里,我自己和身边同事踩过的 AI 幻觉坑,保守估计浪费了超过 200 个小时。今天把血泪教训整理出来,希望能帮你少交点学费。


什么是大模型幻觉?

简单说:AI 一本正经地胡说八道。

它不会说"我不知道",而是会编造一个听起来非常合理、但完全错误的答案。更可怕的是,它的语气越自信、格式越规范,你越容易上当。

幻觉的本质

大模型的核心能力是预测下一个 token,而不是"查证事实"。它在训练数据中学到了语言模式,但并没有真正"理解"事实。

用一句话概括:

大模型是一个极其优秀的"语言模仿者",而不是一个可靠的"事实查询引擎"。


我遇到的七种幻觉类型

踩了半年的坑,我把幻觉归纳为以下七类,按危害程度从高到低排列:

🔴 类型一:代码幻觉(危害最高)

这是最常见也最危险的类型。AI 编造不存在的函数、API、库,甚至编造整个模块。

真实案例

我让 AI 帮我用 Python 读取一个 PDF 文件。它推荐了一个叫 pdfparser 的库,写了完整的示例代码,包括 import pdfparserpdfparser.load()pdfparser.extract_text(),参数、返回值、异常处理全都有。

问题是:这个库根本不存在。

pip install pdfparser 报错了,还以为是网络问题,换了好几个镜像源。最后去 PyPI 搜才发现,根本没有这个包。

对比项AI 生成的实际情况
库名pdfparser❌ 不存在
方法pdfparser.load()❌ 不存在
返回值Document 对象❌ 不存在
正确方案-pdfplumberpypdf

损失:40 分钟白折腾。


🔴 类型二:引用幻觉

AI 编造不存在的论文、法规、文档链接,甚至编造作者名和发表年份。

真实案例

我让 AI 解释 Transformer 的注意力机制,它引用了一篇论文:

“Zhang et al., 2021, ‘Adaptive Multi-Head Attention in Deep Neural Networks’, NeurIPS 2021”

标题像模像样,作者名字也合理,会议也是真的。但这篇论文完全不存在

我花了 20 分钟在 Google Scholar、DBLP、NeurIPS 官方页面上反复搜索,确认是 AI 编造的。

AI 生成的引用实际情况
Zhang et al., 2021❌ 作者不存在
Adaptive Multi-Head Attention…❌ 论文标题不存在
NeurIPS 2021✅ 会议是真实的
引用数 347❌ 完全是编的

损失:20 分钟 + 信任崩塌。


🟡 类型三:数据幻觉

AI 编造具体的数字、统计数据、性能指标,用于支撑看起来"有说服力"的结论。

真实案例

我问 AI:“Redis 7.0 相比 6.2 性能提升了多少?”

AI 回答:

“根据 Redis 官方基准测试,Redis 7.0 在 SET 操作上提升了 43%,GET 操作提升了 38%,MGET 提升了 67%。在 128 字节 value 的场景下,QPS 从 10.5 万提升到 15.1 万。”

每一个数字都精确到个位数,看起来非常可信。但实际上——这些数字全是编的。Redis 官方博客并没有发布过这些具体的对比数据。

AI 给出的数据实际情况
SET 提升 43%❌ 编造
GET 提升 38%❌ 编造
QPS 10.5 万 → 15.1 万❌ 编造
“Redis 官方基准测试”❌ 来源不存在

损失:我在技术评审会上引用了这些数据,被同事质疑后非常尴尬。


🟡 类型四:逻辑幻觉

AI 的推理过程看起来合理,但结论是错的。这是最难识别的一种,因为你读推理过程时会被"说服"。

真实案例

我问 AI:“Python 的 GIL 在多线程 CPU 密集型场景下会导致什么问题?有没有绕过的方法?”

AI 给出了一段看起来非常专业的分析,最后建议:

“推荐使用 multiprocessing.Pool 替代 threading,因为多进程不受 GIL 限制。对于 I/O 密集型任务,可以使用 asyncio 配合 ThreadPoolExecutor。”

这段回答方向是对的,但中间夹带了一个致命错误:

“Python 3.12 已经默认移除了 GIL,所以升级到 3.12 后多线程 CPU 密集型任务不再受限。”

这是错的。 Python 3.12 并没有默认移除 GIL。移除 GIL 的实验性支持(PEP 703)要到 Python 3.13 才以 free-threaded build 的形式提供,而且默认仍然是关闭的。

AI 的说法实际情况
Python 3.12 默认移除 GIL❌ 完全错误
升级到 3.12 就不受限❌ 误导
PEP 703 在 3.13 实验性支持✅ 这部分是对的
multiprocessing 绕过 GIL✅ 这部分是对的

危害:真假混搭,让你以为整体都对。


🟡 类型五:时间幻觉

AI 混淆事件的先后顺序,或者把旧信息当成最新的。

真实案例

我问 AI:“2025 年最新的 JavaScript 前端框架推荐?”

AI 推荐了 Svelte 5,然后说:

“Svelte 5 于 2024 年 10 月发布,引入了全新的 Runes 响应式系统,是 2025 年增长最快的框架。”

这部分大致正确。但接下来:

“同时,Vue 4 也在 2025 年初发布,带来了 Composition API 的重大重构。”

Vue 4 根本不存在(截至目前)。Vue 3 仍是最新版本。AI 把 Vue 的版本迭代"预测"了一个不存在的版本。


🟢 类型六:语法幻觉(较易识别)

AI 生成的代码语法有误,但这种幻觉相对容易发现,因为有编译器和 linter 兜底。

常见表现

  • 用了已弃用的 API 但没标注版本
  • 参数顺序写反
  • 缩进和缩进风格混用(Python)
  • TypeScript 类型定义与实际库版本不匹配

🟢 类型七:风格幻觉(危害最低)

AI 生成的内容在风格上模仿了某种"权威语气",但内容其实是泛泛而谈。

比如 AI 写技术博客时,会模仿 Stack Overflow 的回答格式,用"首先…其次…最后…“的结构,让你觉得"这么有条理,应该是对的”。

本质上是用格式的权威感掩盖内容的不确定性。


幻觉发生率实测:谁最爱"胡说"?

我用一套包含 200 个问题的测试集,对主流模型做了幻觉率对比。问题覆盖代码生成、事实查询、数据分析、逻辑推理四个领域。

测试方法

  • 每个问题独立验证答案的正确性(人工 + 自动化交叉验证)
  • 记录每个模型产生幻觉的次数和类型
  • 同一个问题跑 3 次,取最严重的结果

幻觉率对比

模型代码幻觉率事实幻觉率数据幻觉率逻辑幻觉率综合幻觉率
GPT-5.3-codex8%12%15%6%10.3%
Claude Opus 4.65%7%9%3%6.0%
Gemini 3.5 Pro11%18%22%9%15.0%
Grok 49%14%16%7%11.5%
Qwen 3.5-235B13%16%20%8%14.3%

⚠️ 说明:以上数据基于我个人的测试集,仅供参考。不同问题集的结果可能有差异。

关键发现

发现说明
🏆 Opus 幻觉率最低在所有类别中表现最好,尤其是逻辑推理(3%)
💡 代码幻觉普遍最低所有模型在代码生成上都相对谨慎,可能是训练数据中代码质量较高
⚠️ 数据幻觉普遍最高所有模型都倾向于编造精确数字,这是最大的隐患
🔍 Gemini 事实幻觉率偏高虽然速度快,但在事实准确性上需要更多验证

为什么幻觉这么难防?

原因一:幻觉长得太像正确答案

幻觉最大的特点是格式完美、语气自信、细节丰富。它不会含糊其辞,而是会给出一个非常"确定"的答案。

举个例子,以下两个回答,哪个是幻觉?

回答 A:Redis 7.0 的 FUNCTION LOAD 命令支持 REPLACE 参数,可以覆盖已存在的同名函数。使用方式为 FUNCTION LOAD REPLACE "#!lua name=mylib\nredis.register_function('myfunc', function(keys, args) return args[1] end)"

回答 B:Redis 7.0 引入了 Function 功能,具体参数我不太确定,建议查阅官方文档 redis.io/commands/function-load

回答 A 是幻觉。 FUNCTION LOAD 命令确实存在,但它的语法细节、参数格式都有微妙的错误。而回答 B 承认了不确定性——但现实中,大多数模型倾向于给出回答 A 这种"自信"的答案。

原因二:人类天然信任"看起来专业"的内容

心理学上这叫权威偏差(Authority Bias)。当一段内容格式规范、术语准确、引用看起来完整时,你的大脑会自动降低警惕。

AI 恰好最擅长生成"看起来专业"的内容。

原因三:验证成本远高于生成成本

AI 生成一个答案只需要几秒钟,但你验证它的正确性可能需要几分钟甚至几小时。你不可能验证 AI 说的每一句话,这就是幻觉最危险的地方。

场景AI 生成时间人工验证时间验证/生成比
一段 20 行的函数3 秒2 分钟40:1
一篇技术博客30 秒1-2 小时200:1
一个架构设计方案1 分钟半天400:1
一份 API 文档20 秒30 分钟90:1

这意味着:你越依赖 AI,花在验证上的时间占比就越大。如果不建立验证机制,节省的时间会被幻觉带来的返工吃回去。


实战防范体系:我总结的三层防护

经过半年的踩坑和迭代,我建立了一套三层防护体系,把幻觉导致的实际问题降低了 80% 以上。

第一层:Prompt 工程(零成本,立即见效)

通过优化提示词,从源头减少幻觉发生。

技巧 1:强制 AI 表达不确定性

在系统提示词中加入:

当你不确定某个信息是否准确时,必须明确标注"⚠️ 未验证"。
宁可说"我不确定",也不要编造看起来合理的答案。
如果你不确定某个 API、库或函数是否存在,请标注 [需验证]。

效果:幻觉率降低约 30-40%。AI 会开始在不确定的地方加标注,你的验证效率大幅提升。

技巧 2:要求提供验证方法
对于你给出的每个关键信息(API 名称、函数签名、配置参数),
请同时提供验证方法(官方文档链接、测试命令等)。

效果:AI 在编造时会"露馅",因为它给不出有效的验证链接。反过来,如果它能给出有效的验证方法,可信度就高很多。

技巧 3:分步确认

不要一次性让 AI 生成完整方案,而是分步确认:

第一步:先列出你打算使用的库和 API,我来确认是否真实存在。
第二步:确认后再生成代码。
第三步:生成后给出测试用例。

效果:把"一次性信任"变成"逐步验证",每一步都有检查点。


第二层:工具链防护(低成本,自动化)

用自动化工具在代码层面拦截幻觉。

2.1 代码幻觉检测
工具功能效果
IDE 自动补全如果 AI 生成的函数名在 IDE 中没有补全提示,大概率是幻觉⭐⭐⭐⭐
pip search / npm search安装前验证包是否存在⭐⭐⭐⭐⭐
Linter + Type Checkermypyeslint 可以拦截大部分语法和类型错误⭐⭐⭐⭐
单元测试AI 生成的代码必须通过测试才能合并⭐⭐⭐⭐⭐
2.2 事实幻觉检测
方法适用场景实施难度
链接验证脚本自动检查 AI 给出的 URL 是否可访问
文档交叉验证用另一个模型或搜索引擎验证同一事实
RAG + 知识库让 AI 基于你的本地文档回答,而不是"自由发挥"中高
2.3 我的自动化验证脚本(Python 示例)
import re
import subprocess

def verify_python_package(package_name: str) -> dict:
    """验证 Python 包是否真实存在"""
    try:
        result = subprocess.run(
            ["pip", "index", "versions", package_name],
            capture_output=True, text=True, timeout=10
        )
        if result.returncode == 0:
            return {"exists": True, "package": package_name}
        return {"exists": False, "package": package_name, "error": "包不存在"}
    except Exception as error:
        return {"exists": False, "package": package_name, "error": str(error)}


def verify_url(url: str) -> dict:
    """验证 URL 是否可访问"""
    import urllib.request
    try:
        req = urllib.request.Request(url, method='HEAD')
        resp = urllib.request.urlopen(req, timeout=5)
        return {"accessible": True, "status": resp.status, "url": url}
    except Exception:
        return {"accessible": False, "url": url}


def extract_and_verify(ai_response: str):
    """从 AI 回答中提取包名和 URL,批量验证"""
    # 提取 pip install 命令中的包名
    packages = re.findall(r'pip install\s+(\S+)', ai_response)
    # 提取 URL
    urls = re.findall(r'https?://[^\s\)"]+', ai_response)

    results = {"packages": [], "urls": []}

    for package in packages:
        results["packages"].append(verify_python_package(package))

    for url in urls:
        results["urls"].append(verify_url(url))

    return results

使用效果:把 AI 的回答丢进去,几秒钟就能知道哪些包和链接是真实的,哪些是幻觉。


第三层:流程防护(团队协作层面)

这是最重要也最容易被忽视的一层。

3.1 AI 代码审查清单

我让团队在 code review 时增加一个 AI 专项检查

  • AI 引用的库/API 是否在包管理器中可查到?
  • AI 给出的配置项是否有官方文档支持?
  • AI 生成的逻辑是否有对应的单元测试?
  • AI 提到的性能数据是否有出处?
  • 是否有 AI 自信地给出但团队没人能确认的细节?
3.2 "不信任默认值"原则

我在团队里立了一个规矩:

AI 给出的任何具体数字、版本号、API 名称,都默认"待验证",直到人工确认。

这条规矩一开始执行成本很高(每个数字都要查),但两周后团队就形成了习惯,验证速度越来越快,而因为幻觉导致的生产事故降到了零。

3.3 真实效果对比
指标无防护(3 个月前)三层防护后(现在)改善
幻觉导致的 bug 数月均 8 个月均 1-2 个降低 75-87%
幻觉排查耗时月均 15 小时月均 2 小时降低 87%
生产事故2 次0 次归零
团队对 AI 的信任度😰 不敢直接用😊 放心用,有兜底质的飞跃

各模型"幻觉特征"对比

不同模型的幻觉有不同的"口味",了解这些特征能帮你更快识别。

模型幻觉特征高危场景识别技巧
GPT-5.3-codex编造看起来很真实的库名和方法名代码生成安装前搜包名
Opus 4.6逻辑链中的某个环节出错(最隐蔽)复杂推理逐步检查推理链
Gemini 3.5 Pro编造精确的数字和百分比数据分析所有数字都验证
Grok 4混入过时的网络信息实时查询检查时间戳
Qwen 3.5-235B中文语境下编造国内工具和 API中文代码生成搜国内包源验证

最容易上当的时刻

  • 🔴 赶 deadline 时:来不及验证就直接用了
  • 🔴 不熟悉的领域:你越不懂,越容易被"专业格式"唬住
  • 🔴 AI 给出"完美答案"时:越完美的答案越要警惕
  • 🔴 批量生成时:一次性生成大量代码,验证精力跟不上
  • 🔴 复制粘贴到生产环境时:这一步必须有人工检查

高级技巧:让 AI 自己检查幻觉

这是我觉得最实用的一招——用 AI 检查 AI

方法:二次验证 Prompt

在 AI 生成内容后,用以下 prompt 让它自检:

请回顾你刚才的回答,逐一检查以下内容:
1. 你提到的每个库名、API 名、函数名,是否 100% 确定真实存在?
2. 你提到的每个具体数字(百分比、版本号、日期),是否有可靠来源?
3. 你引用的文档链接、论文标题,是否确实存在?

对于任何你不确定的内容,请标注 ⚠️ [可能不准确] 并说明原因。

实测效果

模型自检后修正率说明
GPT-5.3-codex修正 40-50% 的幻觉能识别一部分编造的库名
Opus 4.6修正 60-70% 的幻觉自检能力最强
Gemini 3.5 Pro修正 30-40% 的幻觉对数字幻觉识别较弱
Grok 4修正 35-45% 的幻觉对过时信息识别一般
Qwen 3.5-235B修正 25-35% 的幻觉自检能力相对较弱

关键洞察:即使是自检能力最强的 Opus,也只能修正 60-70% 的幻觉。自检是辅助,不是替代人工验证。


什么情况下幻觉最危险?

绝对不能直接信任 AI 的场景

  • 🔴 生产环境代码:必须经过测试和 code review
  • 🔴 安全相关配置:加密算法、认证方式、权限设置
  • 🔴 数据库操作:SQL 语句、迁移脚本、索引设计
  • 🔴 金融/医疗合规:法规引用、合规要求、审计标准
  • 🔴 对外发布内容:技术文档、客户沟通、公开博客

可以适度信任 AI 的场景

  • 🟡 内部工具/原型:快速验证想法,不需要长期维护
  • 🟡 学习/探索:了解一个新技术的大致方向(细节再查文档)
  • 🟡 代码重构思路:获取灵感,但具体实现要自己把控

可以高度信任 AI 的场景

  • 🟢 常见模式的代码:排序算法、数据结构、CRUD 模板
  • 🟢 格式转换:JSON ↔ YAML、CSV ↔ JSON 等
  • 🟢 正则表达式生成:有测试工具可以立即验证

常见问题

Q:幻觉能完全消除吗?

A:不能。 这是大模型架构决定的。只要模型是基于概率预测下一个 token,幻觉就不可能完全消除。你能做的是建立防护机制,把幻觉的影响降到最低。

Q:越贵的模型幻觉越少吗?

A:总体是的,但不是绝对的。 Opus 4.6 幻觉率确实最低(6%),但它在某些场景下也会犯低级错误。GPT-5.3-codex 代码幻觉率低,但事实幻觉率比 Opus 高一倍。选模型要看场景,不能只看价格。

Q:AI 说"我不确定"的时候,是真的不确定吗?

A:不一定。 有时候 AI 说"我不确定"但答案是正确的(过度谨慎),有时候 AI 非常自信但答案是错的(过度自信)。不要用 AI 的语气来判断答案的可靠性,用验证工具来判断。

Q:RAG 能解决幻觉问题吗?

A:能大幅缓解,但不能完全解决。 RAG 让 AI 基于你的文档回答,减少了"自由发挥"的空间。但如果检索到的内容本身不完整,或者 AI 在"检索内容"和"自身知识"之间做了错误的融合,仍然会产生幻觉。

Q:有没有"零幻觉"的 AI 产品?

A:目前没有。但一些专注于特定领域的 AI 工具(如代码补全类的 Copilot)幻觉率比通用大模型低很多,因为它们的训练数据更聚焦、输出范围更受限。工具越垂直,幻觉越少。


总结

大模型幻觉不是"偶尔出个小错",而是一个系统性的、持续存在的风险

核心结论

  • 🧠 所有大模型都有幻觉,区别只是程度不同
  • 🛡️ 三层防护(Prompt 优化 + 工具链 + 团队流程)能降低 80%+ 的风险
  • 🔍 数据幻觉最普遍,代码幻觉最危险,逻辑幻觉最隐蔽
  • 验证成本是 AI 最大的隐性成本,必须纳入工作流
  • 🤖 用 AI 检查 AI 是有效的辅助手段,但不能替代人工验证

最后一句话

AI 是你的超级助手,但不是你的替身。信任它的能力,但永远验证它的输出。 这不是对 AI 的不信任,而是对生产环境的尊重。

更多推荐