在前面的章节中,我们一直在研究一件事:怎样把提示词写得更好,从而让 AI 把活儿干得更加漂亮。
但是当我们把 AI 真正用到日常办公或代码开发中时,往往会遇到一个非常头疼的问题:它有时候会 “一本正经地胡说八道” !
比如,你让它分析一份资料,它能面不改色地把资料里根本没有的数据编得有模有样;你让它调个不存在的代码库,它连文档带注释都能给你虚构出来,语气还特别笃定,稍不留神就会被忽悠瘸了。
这种现象,就是大家常说的 “大模型幻觉”。关于幻觉是怎么产生的,我们在 “大模型幻觉” 这篇文章中已经详细介绍过了。在咱们这一节中,我们不扯概念,只上干货——怎么通过写好提示词,管住 AI 这张爱跑火车的嘴?

为什么大模型会有幻觉?
简单来说,大语言模型的底层逻辑有点像是在玩 “词语接龙”。它并不是像数据库那样去硬盘里精准查询数据,而是根据上下文的概率,去猜测下一个最有可能出现的词。
此外,很多大模型(比如 “某包”)为了更好地留住用户,底层都会设计成一种 “讨好型人格”。
当你问它问题时,它通常更倾向于顺着你把任务做完,而不是主动交白卷。所以,为了让你觉得满意,它有时候会倾向于 “瞎编一个看似合理的答案”,而不是直接对你说 “我不会”。

这时候可能有小伙伴要问了:“那使用提示词,能彻底消除幻觉吗?”
答案是:很难彻底消除。一个好的提示词,虽然能明显降低幻觉发生的概率,但通常没法把模型变成一个永远正确的数据库。因为大模型可能缺少最新知识,也可能误读了你的资料、算错了数,甚至编出一个看起来很真实的来源。
有些小伙伴喜欢在提示词末尾加一句:“请确保内容绝对准确,禁止出现任何错误。” 这句话虽然表达了你的期望,但它并不能凭空创造出模型本来不知道的知识,也很难保证模型真的去仔细检查了。
这就像在试卷上写一句 “本题不许做错”,看起来态度很坚决,却不会自动让答案多出 20 分。

注意: 提示词写得再严谨,通常也不能替代人工的事实核查。特别是在医疗、法律、金融、安全生产等风险较高的领域,建议还是交由专业人士来把关。
了解了原因之后,接下来的重点就是:写提示词时,怎么尽量减少它胡编乱造?
还是那句话,提示词只能降低幻觉出现的概率,但无法彻底消灭幻觉。不过,只要掌握下面四个方法,大多数日常任务的可靠性都会明显提高。
1. 把 “闭卷考试” 变成 “开卷考试”
降低幻觉最简单、也是最有效的方法之一,就是不要让 AI 仅凭它出厂时背下来的知识去回答问题,而是把确凿的资料直接喂给它。
比如,你想了解某所学校最新的奖学金申请条件,却只问:
请介绍一下星海大学 2026 年奖学金的申请条件。如果 AI 没看过最新通知,它很可能会参考其他学校的常见规定,给你编一套看似合理的条件。而且语气往往一本正经,很容易让人信以为真。
因此,更稳妥的写法可以像下面这样写。
示例:
请根据下面提供的【奖学金通知】,总结申请条件、申请材料和截止时间。
要求:
1. 只能使用通知中明确提供的信息。
2. 不要补充其他学校的规定或常见做法。
3. 如果某项信息没有提到,请明确说明“通知中未提及”。
【奖学金通知】
[在这里粘贴学校发布的真实通知]这样一来,AI 就不再是参加 “闭卷考试”,而是拿着指定资料做 “开卷考试”。此外,我们还给它划定了答题范围:只能根据提供的资料回答,不能跑到围栏外面自由发挥。

2. 允许 AI 坦白 “我不知道”
很多时候 AI 瞎编,真不一定是故意骗人,而是它太想给你一个完整的回答了。
它就像个害怕交白卷的学生,哪怕没把握,也想先写点啥凑上。所以,我们需要在提示词里明确告诉它:不知道就说不知道,找不到就说找不到
示例:
请根据上面提供的材料回答问题。
如果材料中没有包含答案,请直接回答:
“提供的材料中未包含此信息。”
不要根据常识补充,不要猜测,也不要编造看似合理的答案。这句话相当于给 AI 留了个安全出口。没这个出口时,它可能会觉得 “用户既然问了,我总得答点什么吧”;有了出口,它就可以理直气壮地说 “这份材料里确实没写”。
在处理合同、公司制度、说明书或会议记录时,这招往往特别好用。因为在这些场景下,少答一条,通常比答错一条要安全得多。

3. 要求 “实锤” 证据
让 AI 帮我们看长文档、合同或大量代码时,通常不能只听它的结论,还得让它把判断依据也交出来。
例如,你想让 AI 审查一份租房合同,可以像下面这样写。
示例:
请审查下面的租房合同,找出可能对承租方不利的条款。
对于每一个风险点,请按照下面的格式输出:
1. 风险名称
2. 风险说明
3. 对应的合同原文
4. 可能造成的影响
要求:
- 必须引用合同中对应的原文。
- 不要修改原文内容。
- 如果找不到能够支持结论的原文,就不要将其列为风险点。这样做,主要有两个好处。
- 方便我们快速核查。AI 说某一条有风险,我们可以直接回到合同原文查看,而不是满篇寻找依据。
- 可以减少没有依据的结论。因为你已经明确要求:找不到原文,就不能下结论。
不过也要注意:AI 引用了原文,不代表它的理解就完全正确。对于重要的法律或财务文件,最好还是人工确认一下。我们可以把它当成帮忙找线索的助手,但尽量别直接让它当法官。

4. 先检查问题,再回答问题
有些幻觉并不是 AI 主动编出来的,而是用户的问题本身就带着错误前提。比如你问:
为什么 Python 在 3.5 版本中加入了match-case 语句?这个问题的前提就是错的:Python 并不是在 3.5 中加入 match-case 语句,而是在 3.10 版本中才正式引入的。
如果 AI 没有先检查前提,而是顺着问题直接回答,就可能编出一段根本不存在的版本历史。因此,在处理技术、历史、医学、法律等专业问题时,可以先要求 AI 检查问题中的前提,再决定是否继续回答。
推荐写法:
你是一名严谨的技术助手。
回答问题前,请先检查问题中包含的前提事实,例如:
- 软件版本号
- 功能发布时间
- 技术名称
- 人物、事件和时间关系
# 回答规则
1. 如果前提明显错误,请先指出错误,并给出正确事实。
2. 不要沿着错误前提继续解释。
3. 如果前提无法确认,请明确说明不确定,不要猜测。
4. 只有在前提成立的情况下,再回答后续问题。
# 用户问题
为什么 Python 语言在 3.5 版本中加入了 match-case 语句?AI 此时通常会先纠正你:
Python 并不是在 3.5 版本中加入 match-case 语句,而是在 Python 3.10 中才正式引入。然后,再根据用户真正想了解的内容,介绍 Python 为什么引入泛型,以及泛型解决了哪些问题。这个方法可以概括为一句话:
先检查问题是不是成立,再讨论为什么。
不然一开始方向就错了,后面答得越详细,往往离真相就越远。

通用防幻觉 “提示词模板”
如果小伙伴们一时半会儿不知道怎么把前面的技巧揉在一起,不妨直接拿下面这套 “防幻觉通用模板” 去抄作业。遇到具体任务时,再根据实际情况稍微删减就行。
示例:
# 任务
[清楚说明需要 AI 完成的任务]
# 可用资料
[粘贴资料、上传文件,或者说明允许使用哪些来源]
# 可靠性要求
1. 只将有明确依据的内容写成确定事实。
2. 资料不足时,请回答 “根据现有信息无法确认”,不要猜测或虚构。
3. 将 “已确认事实” “合理推测” 和 “无法确认” 分开输出。
4. 对合理推测,说明推测依据、成立条件和可能的其他解释。
5. 对关键结论,提供对应的资料名称、章节、原文或可核查来源。
6. 如果资料之间存在冲突,请列出冲突,不要擅自替我决定哪一方正确。
7. 涉及时效性信息时,先确认信息日期;无法访问最新资料时要明确说明。
8. 完成后进行一次自检,删除无依据的人名、数字、日期、引用和结论。
# 输出格式
## 已确认事实
## 合理推测
## 无法确认
## 证据与来源
## 仍需补充的信息当然,平时不用每次都把全套搬上去。处理个小问题,留一句 “资料不足别瞎猜” 和 “给出依据” 通常就够用了。遇到比较复杂的硬骨头,再把冲突检查、自检清单这些大招端出来也不迟。
大家记得,提示词并不是越长越厉害,好用的模板往往是只留下那些对当前任务真正有帮助的干货规则。
常见问题
1. 使用更强的大模型,就不会产生幻觉了吗?
一般来说,能力更强的模型在知识面、指令理解和资料分析上表现会更好,幻觉往往也会少一些,但这并不代表能彻底消除。
模型越聪明,有时候反而会把错误内容编得更自然,所以重要的结论还是得核查。
2. 将 Temperature 设置为 0,能消除幻觉吗?
通常不能。把 Temperature 调低,往往只是让它的输出变得更稳定、随机性更小,但它并不会自动帮你分辨真假。如果模型对某个知识本来就理解错了,它往往只是更加稳定地把这个错误再重复一遍罢了。
3. 让 AI 联网搜索以后,答案就一定可靠吗?
不一定。联网确实能补充最新资料,但搜出来的网页本身可能就过时了、写错了或者质量比较差,AI 也有可能会误读网页内容。
所以用了联网功能后,最好还是顺手查查来源靠不靠谱、日期对不对,以及原文是不是真的支持这个结论。
4. 同一个问题多问几次,要是答案都一样,是不是就证明做对了?
不一定。答案一样,通常只能说明模型的输出比较稳定,不能直接证明这事儿就是真的。模型完全有可能多次重复同一个错误。
比较靠谱的办法,还是回到原始资料、权威渠道去查,或者用计算工具、实际测试去验证。
5. 能不能让一个 AI 去检查另一个 AI 的答案?
可以的。这种 “交叉检查” 通常能帮你发现不少遗漏、矛盾或者没依据的地方。但第二个 AI 同样也有出错的可能,所以它更适合用来做辅助复核,而不是当最终的裁判。
因此,对于重要的事情,还是需要可验证的资料和人工去拍板。
