OpenAI

GPT-4 背古诗编造全文?原因分析与避免幻觉的实用做法

编辑部阅读约 6 分钟

向 GPT-4 追问一句古诗的全文,出处答对了,诗句却是拼凑出来的,再问一次又是另一个版本。这类「记忆型」幻觉来自语言模型的生成机制,而非偶发 bug。文章拆解成因,给出联网核实、交叉验证、提示词约束和人工核对等可操作方案,并说明各做法的适用边界。

问一句「映日荷花别样红」出自哪里,模型很快给出杨万里的《晓出净慈寺送林子方》,作者、朝代、诗题都对。可接着追问「全诗内容」,它却拼出一首并不存在的诗:句式像七言,主题往送别离愁上靠,读起来还挺顺。再问一遍,又会得到另一个版本。

这不是某个账号或某次对话的偶发问题。它暴露的是语言模型在「精确记忆」类任务上的系统性短板:能认出这句话属于谁,却调不出完整的原文,于是按格律和语义现场生成一段看起来合理的文本。搞清楚它为什么会这样,比争论「哪个模型更聪明」更有用。

问题到底出在哪

把现象拆开看,有三个特征值得注意。

  • 出处对、原文错。模型知道这句诗归属杨万里,说明相关知识在参数里有痕迹;但完整诗篇的字句没有被可靠记住,于是它用「送别诗」的常见意象补全。
  • 每次答案不一样。生成过程带有采样随机性,同一问题在不同会话、不同上下文里会走向不同结果,这说明它不是在「读取」一段固定文本。
  • 换模型或加检索就可能对。同一问题在新一代模型上能给出正确四句,说明差别在于知识调用与外部检索能力,而不是「懂不懂诗」。

作为对照,正确的《晓出净慈寺送林子方》是四句七言:毕竟西湖六月中,风光不与四时同。接天莲叶无穷碧,映日荷花别样红。全诗写西湖六月荷景,并无送别伤怀的句子。模型编出来的版本,恰恰是把「送林子方」这个题目按字面理解成了送别场景。

为什么模型会「一本正经地编」

训练目标决定的

模型的本职是预测下一个词,而不是维护一个可查询的原文数据库。它把训练语料压缩进参数,高频内容记得牢,低频长尾内容只剩模糊印象。古诗词全文属于典型的低频、要求逐字精确的长尾知识。

需要说明的是,「模型里根本没存这句话」这种说法方向大致对,但表述过于绝对。更准确的理解是:这类信息以压缩形式存在于参数中,能否被准确调出取决于出现频次、上下文线索和提问方式,而且模型没有内置的「查证」环节来核对调出的结果。

提问方式在推着它编

当被要求「给出全诗内容」时,模型面临的是一个必须填满的回答槽位。它很少主动说「我记不全」,更倾向于交付一个格式完整、语气自信的答案。诗题里的「送」字、七言绝句的格律,都会成为它补全的依据。

解码参数放大了差异

温度等采样参数越高,输出越发散,同一问题的答案波动越明显。把温度调低能让回答更稳定,但稳定不等于正确——它可能稳定地给出同一个错误版本。

可操作的解决方案

方案一:把记忆题改成检索题

最直接的办法是让模型先查再答,并明确允许它说「不知道」。提示词可以这样写:

请先检索可靠来源再回答。要求:
1. 逐句给出原文,不要自行补全;
2. 附上可核查的来源;
3. 若无法确认,直接回答「不确定」,不要编造。

问题:杨万里《晓出净慈寺送林子方》的全文是什么?

三个要点缺一不可:要求来源、要求逐句输出、明确允许放弃。缺少任何一条,模型都更容易滑向自由发挥。前提是所用产品具备联网或搜索能力;没有检索工具的模型,单靠提示词无法补上这个缺口。

方案二:两次独立会话做交叉验证

不要让模型自己检查自己刚写的答案,那容易顺着原思路走。更稳的做法是开一个新会话,只贴出待核对的文本,问「这首诗是否真实存在,作者与朝代是否对应,逐句核对」。也可以让两个不同模型回答同一问题,取一致部分,差异部分回原始出处查。

批量做这类对比测试时,需要长时间稳定在线调用接口、反复跑同一组题,本地机器休眠或网络抖动会打断任务。新加坡独享远程 Mac 这类整机放在机房、按月远程使用的方案,可以作为保持长期在线的一个选项,但它解决的是运行环境问题,不改变模型本身的能力边界。

方案三:按任务选模型,而不是按名气

不同模型的中文语料配比和训练侧重不同,古典文学类任务上的表现差异可能很明显。判断方法不是看一次结果,而是准备十到二十道有标准答案的题,固定题目集做小评测,记录正确率与编造率。模型迭代很快,过去的结论随时可能失效,涉及具体版本能力时以官方最新说明和自己复测的结果为准。

方案四:用结构化输出暴露不确定性

需要接入生产流程时,可以要求模型按固定结构返回,把「来源」和「置信度」变成必填字段:

{
  "answer": "逐句原文",
  "source": "可核查出处",
  "confidence": "high | medium | low"
}

字段本身不能保证内容为真,但低置信度标记能触发人工复核,比一段语气笃定的长文本更便于把关。

方案五:关键引文回到原始出处

用于教学、出版、文案发布的内容,最后一步必须是人工核对纸质诗集或权威数据库。模型输出只当草稿。这一步没有替代品。

几种观点的取舍

围绕这个问题,常见的分歧集中在两处。

「概率模型必然胡说」与「加了联网就万无一失」,两种说法都过于绝对。 联网检索能大幅降低事实类错误,但检索结果本身可能有错、可能张冠李戴,模型也可能把检索到的内容与问题错配。它适合「查一个确定事实」,不适合需要多源推理合并的判断。

「中文古诗文不如某些国产模型」在特定任务上可能是经验之谈,但不能一概而论。 模型能力按任务分化,代码生成、指令遵循、复杂任务拆解与古文背诵本就是不同维度。合理做法是针对自己的高频场景做小规模评测,而不是凭一次翻车或一次正确下结论。

做法 适用场景 主要代价与风险
联网检索后作答 事实查询、引文核对 检索源质量不可控,仍可能错配
多模型交叉验证 重要内容初稿 耗时,需自行整理差异
降低温度 需要输出稳定 只减少发散,不消除错误记忆
结构化输出加置信度 接入业务流程 置信度本身也是模型判断
人工回源核对 出版、教学、对外发布 成本最高,但最可靠

一份可执行的检查清单

  • 事实类问题是否明确要求了来源?
  • 提示词是否允许模型回答「不确定」?
  • 是否用第二个模型或新会话做过交叉核对?
  • 关键引文是否回到原始出处逐字比对?
  • 是否维护了一组固定测试题,在模型升级后重跑?

小结

把模型当成一个文笔流畅、记性不可靠的助手,期待就对了。它的强项是生成、改写、代码和指令遵循;逐字背诵属于它的弱项。遇到需要精确的事实,用检索补知识、用交叉验证补盲区、用人工核对兜底,比反复追问「你再想想」有效得多。

提示词模型幻觉联网搜索GPT-4古诗词