学到一点就写一点 · AI 大白话 用具体例子,把 AI 的原理和用法讲清楚。
旅行地图与行程卡片表达当前参考材料和保存资料的区别 · 点击放大
上一篇,我们聊了 AI 为什么可能把错误说得很像真的。这次换一个困惑:明明前面已经说过的要求,为什么聊着聊着,它又忘了?
假设你请 AI 帮忙安排两天短途旅行,一开始就说:
不自驾,每天最多安排两个景点,周日晚上六点前要回到家。
后来,你们聊住宿、吃饭,又换了几次目的地。等它重新整理行程时,却排了三个景点,还建议你租车。
你忍不住提醒:
这些要求,我前面不是说过了吗?
我们会把这种情况叫作“忘了”。但对 AI 来说,看起来相似的遗漏,可能有不同原因。先从它怎样接着聊说起。
能接着聊,靠的是当前可以参考的信息
假设你刚说完“不自驾”,又问:
那两个景点之间怎么走?
如果前面的要求也提供给了模型,它就可以把“不自驾”和这个新问题一起考虑,建议公共交通或步行。
前几篇讲过,模型会结合已有内容,一步步生成回答。这里能够参考的要求、对话和资料,就是我们要说的上下文。
它不只包括你刚输入的最后一句话,也可以包括前面的问答、软件提供的说明,以及读到的相关资料。
可以暂时把它想成:这次办事时,摊在面前的材料。 模型根据这些材料生成回答。
这也接上了第 04 篇的区别:你补充“不自驾”,会影响接下来的回答,但普通聊天通常不会因此当场更新模型参数。
不过,你在聊天界面里还能翻到最初的要求,不代表软件在每一次回答时,都把整段历史原封不动地提供给模型。
保存着聊天记录,和本次把哪些内容交给模型参考,是两件事。
上下文窗口,能放下多少材料?
继续用刚才的比喻:桌面有大小,不能把所有材料无限摊开。
模型一次能够处理的上下文也有容量限制,通常叫作上下文窗口。
这个容量一般按词元(Token)计算。词元是模型处理文字的小单位,不一定恰好是一个字;所以不能直接把窗口大小当成汉字数。
旅行对话越聊越长,要求、候选行程和修改记录都会增加。其他提供给模型的说明和资料,也会占用空间;还需要为接下来生成的回答留出空间。具体计算规则因模型和服务而异。
窗口更大,意味着一次能容纳更多信息。但它并不等于“从此永久记住所有聊天”。
桌面扩大了,可以摊开的材料更多;已经收在柜子里的旧资料,仍然要拿出来,才能在这次办事时参考。
这里的“桌面”和“柜子”只是帮助理解的比喻,不是模型里的真实结构。
聊得太长,前面的内容可能怎样处理?
软件或应用在处理长对话时,可以采用不同办法。
一种是只保留选定的内容,例如最近的对话,把部分旧内容移出本次上下文。这时,最初的旅行要求可能还保存在聊天记录里,却没有一起交给模型。
另一种是把前面的交流整理成摘要,再带着摘要继续。
摘要可以省掉重复讨论,留下关键要求和已经确定的结果。但整理得不好,也可能漏掉细节。
比如,一份用于讲解的摘要写成:
用户想安排两天短途旅行,喜欢轻松一点的行程,正在选择住宿。
这句话保留了大方向,却丢掉了“不自驾”“每天最多两个景点”和“周日六点前回家”。
“喜欢轻松”也不能代替“最多两个景点”。它们对行程的限制并不相同。
如果后续只提供这份摘要,没有原来的具体要求,也没有重新查到那些内容,模型就缺少了重要依据。
不同软件处理长对话的方式不一样,有的还会提示容量限制或要求另开对话。不能只凭一次遗漏,就断定它一定截掉了旧消息,或者摘要一定出了错。
要求还在,也可能没有用好
还有一种情况:三条旅行要求都在当前上下文里,模型仍然安排错了。
前面的注意力篇讲过,信息可以通过计算联系起来。但能够参考,不保证每条要求都被正确理解和遵守。
它可能只顾着补上新景点,没把“每天最多两个”一起考虑;也可能把前面讨论过、后来放弃的方案混进来。
有关长上下文的研究,也在特定模型和任务中观察到:相关信息放在不同位置,回答表现会有差别。有时放在长文本中间的信息更容易被漏掉。
这是研究中的观察,不是说所有模型都固定“忘中间”,也不能据此判断某次旅行回答究竟在哪一步出了错。
所以,这两类问题要分开看:重要信息没有被提供,以及信息被提供了,却没有被用好。
换一个更大的窗口,可能缓解前一种问题,但不能保证后一种问题自动消失。即使对话很短,也可能理解错或漏掉要求。
产品记忆和外部资料,又是什么?
你可能还会问:有的软件能记住我的偏好,下次新开聊天也知道我不自驾,这和上下文有什么关系?
这属于软件提供的记忆功能。它可以保存一些信息,供以后聊天时使用。保存什么、什么时候调用、能否查看和修改,都要看具体产品及设置。
在旅行例子里,如果你长期偏好公共交通,保存这个偏好可能有帮助。但“这次周日六点前回家”是本次行程的要求,不能自动当成以后每次旅行的固定规则。
还有一种办法:把确认好的行程和要求保存成文档,下次让 AI 读取,或从里面查找相关内容。
这属于外部资料。文件保存下来了,不等于模型已经永久学会了其中的内容;要在后续任务中使用,仍需要有办法读取并提供相关信息。
三者可以这样区分:
| 说的是哪件事 | 在旅行例子里是什么 |
|---|---|
| 当前上下文 | 这次回答时,模型可以参考的要求、对话和行程内容 |
| 产品记忆 | 软件保存并在后续聊天中调用的偏好或其他信息 |
| 外部资料 | 单独保存的行程文档,需要时再读取或查找 |
对话内容、保存的记忆和外部资料,经选择或整理后成为本次可以参考的信息 · 点击放大
教学示意:展示信息保存与本次使用的关系,不是模型内部结构。记忆和文件需要被调用,具体方式因软件而异。
这些办法可以配合。关键是:保存的信息,是否在需要时被提供给模型;提供以后,是否被正确使用。
重要要求,整理成一份简短说明
回到开头,怎样减少那种“刚说过又漏了”的情况?
不必每次都把整段聊天复制一遍。可以在多轮修改后,把仍然有效的要求和当前进度整理清楚。
假设你们已经选好了目的地,住宿还没定,可以这样接着说:
我们继续安排这次两天短途旅行。
必须保留的要求:不自驾;每天最多两个景点;周日晚上六点前回到家。
当前进度:目的地已确定,住宿还没定。前面放弃的目的地不用再考虑。
下一步只比较住宿位置,先不重新安排景点。
也可以让 AI 先整理这份说明,但要看一遍,确认没有把重要要求漏掉,也没有把旧方案当成已经确定的决定。
需要换一个聊天继续时,把这份说明和必要资料一起提供,比只说“接着上次的来”更清楚。最终行程仍要对照三条要求检查,交通时刻等信息也要核对实际资料。
这些做法能帮助保留任务信息,但不保证回答每次都正确。
下一篇,我们就接着看:提示词怎样写,才能把任务、材料和要求交代清楚,让 AI 更容易做对?
配图说明:封面由 AI 生成,是整理旅行信息的视觉隐喻;正文图为程序绘制的教学示意。旅行对话、错误行程、摘要与任务说明均为假设例子,不是用户经历或模型实测。本文解释通用概念,不对应某款软件的固定功能或处理流程。