← 初识 vibe codingAI 为什么会答错、忘记或编造

免费文章 · 01 认识 AI 与模型

AI 为什么会答错、忘记或编造


  上一节,我们学会了根据任务选择合适的模型。但即使模型具备相应能力,也可能看错日期、记错地点,甚至编出原本不存在的信息。有时,回答还显得十分肯定。

  为什么会这样?遇到错误时,我们又该怎样判断原因、帮助 AI 改正?

  我们从一份活动通知开始,看看几种常见的错误是怎样产生的。

  下面是一份用于讲解的虚构通知:

青禾书屋本周六举行读书会,下午三点开始,四点半结束。活动在二楼小厅,限十二人。

  假如我们问 AI:“活动在哪里举行、持续多久、联系电话是什么?”它可能给出一段完整的回答。但这三个问题,能够从原文中得到的信息并不一样。

要回答的问题

通知提供了什么

如何得出答案

在哪里举行

二楼小厅

原文直接写明

持续多久

一个半小时

根据三点到四点半计算

联系电话是什么

没有提供

无法从现有信息得出

  前两个问题有明确依据,第三个却没有。如果 AI 补出一个看似正常的电话号码,我们也不能把它当成书屋的真实联系方式。

  回答看起来完整,不代表其中每一项都有依据。

说得通顺不代表事实正确

  前面我们学过,语言模型通过大量材料和训练获得语言理解、表达和解决问题的能力。它能够组织一段自然的活动介绍,也可能知道这类介绍通常包含时间、地点和联系方式。

  但熟悉一种内容的写法,不等于掌握了其中每一条具体事实。

  例如,通知没有提供电话号码。如果 AI 为了让回答显得完整,自行补出一个号码,就产生了没有依据的内容。

  这种看似可信、实际不正确或不受给定材料支持的生成内容,通常称为 AI 幻觉。这个名称描述的是模型的输出问题,并不意味着 AI 像人一样产生了真实的幻觉。

  不过,也不能把所有错误都简单归为幻觉。看错数字、使用过时的信息,或者没有遵守已经给出的要求,都可能导致错误,需要结合实际情况判断。

  任务本身也会改变我们对结果的要求。如果请 AI 创作一篇虚构书屋的故事,它当然可以想象人物和情节;但如果要回答活动通知中的事实,就应该以实际资料为依据。

  因此,面对不确定的回答,可以追问信息来自哪里。即使 AI 提供了引用或链接,也需要确认对应资料是否真的支持结论,而不能仅凭回答肯定就相信它。

没有资料和资料过时,处理办法不同

  回到书屋的联系电话。通知没有提供这个信息,合理的回答应该是“通知中未提供联系电话”。如果确实需要联系方式,我们就得另外取得资料,而不是让 AI 猜测。

  但有时,问题不是缺少资料,而是已经掌握的资料过时了。

  例如,青禾书屋原本安排在二楼小厅举行读书会,后来临时改到一楼阅览区。如果 AI 仍根据旧通知回答,就会给出一个曾经正确、现在却不再适用的地点。

  这种情况需要找到更新后的通知。对于现实中会变化的信息,模型训练时获得的知识也不会随着外部变化自动更新。如果产品支持联网查找,我们可以让它查询最新信息,再核对来源和适用时间。

  可以看到,虽然最终都可能答错,但原因不同:

  资料没有提供,就补充资料或保留未知;资料已经过时,就需要找到当前有效的版本。

说过的信息,不一定进入本次上下文

  现在假设,我们已经在聊天中告诉 AI:“读书会改到一楼阅览区,其他安排不变。”

  可聊了一段时间以后,AI 又把地点写成二楼小厅。明明已经告诉过它,为什么还会出现这样的错误?

  要理解这个问题,需要认识上下文。

  模型在一次处理过程中,实际接收到的任务要求、资料和相关对话信息,合起来称为上下文。我们刚才补充的地点变更,需要被提供给模型,才能作为它这次回答的具体依据。

  这里有一个重要区别:聊天产品保存的历史记录,不一定等于模型这一轮实际收到的内容。

  有些产品会将之前的对话重新交给模型,也可能把较早的信息整理成摘要,或者只提取当前任务需要的部分。

  图中,左边表示产品保存的信息,中间的托盘表示这次实际提供给模型的上下文。当前问题、相关资料和必要历史进入托盘后,模型才能结合它们生成回答。

  为什么不把所有历史原样提供给模型?

  因为模型一次能够处理的信息量存在限制,这个范围称为上下文窗口。

  模型处理文字时,会把内容拆分成称为 Token 的单元。一个 Token 可能对应一个字、一个词的一部分或其他字符组合,因此不能简单地按字数换算。

  输入的资料、对话历史以及需要生成的回答,都会涉及 Token 的使用。对话越来越长,就可能需要筛选或压缩部分信息。

  不过,上下文窗口更大,也不代表模型一定能正确使用其中的全部内容。

  因此,看到 AI 又写成“二楼小厅”,我们还不能直接认定它忘记了之前的要求。可能是地点变更没有进入本轮上下文,也可能是新旧信息发生冲突,或者模型已经收到新地点,却仍然采用了旧内容。

  我们能够观察到的是回答错误,具体原因还需要进一步判断。

产品记忆保存信息,供以后使用

  除了当前上下文,有些 AI 产品还提供记忆功能,可以保存用户偏好或需要长期使用的信息,减少以后重复说明的次数。

  但记忆与当前上下文并不是同一回事。信息即使已经保存,也需要在适当的时候被取用,才能影响当前回答。

  我们可以把目前接触的几种信息来源放在一起理解:

信息来源

在书屋例子中是什么

对回答有什么作用

训练形成的知识与能力

理解通知、组织语言、计算活动时长

提供一般能力,不保证知道本次安排

当前上下文

活动通知、地点变更、当前问题

提供这次回答需要使用的具体信息

产品保存的历史与记忆

之前的对话、保存的偏好或安排

相关内容被取用后,可以为后续回答提供依据

  如果产品提供查看和修改记忆的功能,我们可以检查其中是否存在过时的信息,并按实际情况更新。

  对于活动地点这样必须准确的内容,直接提供最新通知,通常比单纯依赖过去聊过的内容更稳妥。

纠正回答需要具体反馈和重新核对

  当 AI 把活动地点写错时,只说“你又错了”,并没有告诉它应该依据什么修改。

  更有效的做法是:指出错误,提供正确依据,再说明希望怎样调整。

  例如,我们可以这样反馈:

prompt
你刚才仍写“二楼小厅”,但地点已经改为“一楼阅览区”。请以这条变更为准,只修改地点;下午三点到四点半、限十二人保持不变。原通知没有联系电话,请说明未提供,不要补写号码。

  这里不仅指出了地点错误,还提供了最新安排,让 AI 知道哪些内容需要修改、哪些内容应该保持不变。

  收到新的回答后,再与当前通知比较,确认地点是否已经更新,时间、人数等其他信息是否仍然准确。

  同样的方法也适用于其他任务。整理通知时对照原文,计算数据时重新核算,制作应用后实际运行。让 AI 再回答一次,是修改;确认修改后的结果符合要求,才是验证。

给一段不可靠的回答找依据

  下面是同一场手作课的两条通知:

初始通知: 周六下午两点举办手作课,地点为一楼活动室,限八人。不需要自带材料。

最新通知: 地点改为二楼教室,其他安排不变。

  我们请 AI 根据两条通知整理当前安排,它却回答:

周六下午两点在一楼活动室上课,限十人,请自带剪刀。

  请找出回答中不符合资料的内容,区分哪些是过时信息、哪些与原文不符或缺少依据,并写一句能够帮助 AI 修正的反馈。

查看答案与解析

  回答中有三处问题:“一楼活动室”沿用了旧地点;“限十人”与原通知中的八人不符;“请自带剪刀”既没有依据,也与不需要自带材料的要求矛盾。周六下午两点则是正确的,应当保留。

  可以这样反馈:

请以最新通知为准,结合初始通知核对活动时间、地点、人数和材料要求,纠正不符的内容,不要补充资料中没有的信息。

  修改后,再对照两份通知,确认活动安排是否准确。

  现在,面对 AI 的可疑回答,我们可以先寻找依据,再判断问题出在哪里:缺少资料就补充,信息过时就更新,已经提供的条件则检查是否被正确使用。找到问题以后,才能给出更有针对性的反馈。

  这也提醒我们,想让 AI 更好地完成任务,最好从一开始就把目标、资料和要求交代清楚。

  下一节,我们将从这里继续,学习怎样组织一次请求,让 AI 更准确地理解我们想做什么。这就是提示词的作用。

讨论

登录后参与讨论