我以前最怕大模型一本正经地胡说八道。它不是那种明显离谱的错,而是会把一个不存在的法规编号、一个编出来的论文结论,说得像刚从档案柜里翻出来一样。最气人的是,你看第一遍还真会点头。后来我慢慢发现,想减少这种“幻觉”,光喊“请你准确一点”基本没用,得给它搭一条窄路走,这就是结构化提示真正厉害的地方。
幻觉不是“笨”,更多是太会补全
大模型的底层能力,说白了就是根据上下文预测下一个最合理的内容。问题也出在这里:当信息缺了一块,它不会像人一样尴尬地说“我不知道”,它更倾向于补一个看起来顺滑的答案。
我之前让模型整理一批医疗器械注册信息,只给了产品名和厂家名,结果它居然补出了注册证编号。格式对,语气稳,甚至编号位数也像真的。后来人工核验,10 条里有 3 条完全查不到。那一刻我真的有点后背发凉,这玩意要是直接进报告,麻烦就大了。
结构化提示像给模型装护栏
我现在写提示词,基本不会再用“帮我分析一下”这种大开口句式。太危险了。我的习惯是把任务拆成几个固定格子,让模型只能在格子里填东西。
比如查资料类任务,我会这样要求:
- 只使用我提供的材料回答
- 每个结论后面标注来源句
- 找不到依据就写“材料未提及”
- 禁止补充外部知识
- 输出分为“已确认信息”和“无法确认信息”
这个变化非常明显。之前模型会把空白处脑补得漂漂亮亮;加了“来源句”和“无法确认”之后,它开始变得谨慎,甚至有点“怂”。但我宁愿它怂一点,也不想它自信地瞎编。
对抗幻觉的关键,不是让模型更聪明,而是让它少一点自由发挥。
最有用的是“证据链”三个字
我做内容审核时试过一个小测试:同样让模型判断一段广告文案是否涉嫌夸大宣传,一组只写“请判断是否违规”,另一组要求它按“原文摘录、风险点、判断依据、置信度”输出。
结果很有意思。开放式提示里,模型经常直接扣帽子,比如“涉嫌虚假宣传”;结构化提示里,它会先摘出“7天根治”“100%有效”这类原句,再解释为什么这些词风险高。我们抽了 120 条样本复核,后者误判率从大约 28% 降到 12%左右。虽然不是严谨论文级实验,但在日常工作里已经很香了。
结构化不是把提示词写长
这里有个坑,我踩过。很多人以为结构化提示就是写一大坨规则,越长越安全。其实不是。规则太多,模型也会“眼花”,尤其是十几条约束堆在一起时,它常常执行前面忘后面。
我现在更喜欢短而硬的结构:
- 任务目标:一句话说清楚
- 信息边界:能用什么,不能用什么
- 执行步骤:每步只干一件事
- 输出格式:固定字段
- 异常处理:缺数据时怎么说
尤其是“异常处理”,太关键了。很多幻觉就是因为你没告诉它“不知道的时候该怎么办”。人类员工遇到缺资料会问你,模型不会,它会自己圆。
我最常用的一句咒语
如果只能保留一句提示,我会选这个:
“每个结论必须对应输入中的原文依据;没有依据时,不得推断。”
这句话不华丽,但特别管用。它会逼模型从“写作文模式”切到“做审计模式”。当然,它不能百分百消灭幻觉,大模型也不是贴上结构化提示就变成数据库。但至少,它会从一个爱发挥的聊天搭子,变成一个愿意翻材料、列证据、承认不知道的助手。
说真的,能让 AI 老老实实说一句“资料里没写”,已经赢了一半。

结构化提示确实管用,我之前让AI查资料,它给我编了个根本不存在的法规。
没有原文依据就不推断这句话太重要了,比啥都强。
求问:如果材料里确实没有明确结论,模型应该怎么表达比较合适?