01 · 介绍
什么是上下文
当模型回答问题时,它会读取一整段很长的文本,然后续写下去。这段文本就是上下文。它按顺序包含以下内容:
- 系统指令(它是谁、规则是什么、输出格式如何)。
- 到目前为止的对话,双方的每一条消息。
- 附件和工具结果:你添加的文件、它抓取的网页、搜索结果。
- 你最新的一条消息。
这段文本有最大容量,即上下文窗口,以词元(token)为单位计量。当今的模型可以容纳几十万个词元,大约相当于几百页。超出窗口的内容对模型来说就不存在。
这解释了大多数“AI 忘了”的抱怨:要么那条信息从来没有进入上下文,要么它已经被挤出了窗口。
02 · 适合什么场景
上下文何时会成为问题
- 聊天越来越长,速度变慢、费用变高,还会前后矛盾:上下文窗口正在被填满。
- 大型 PDF“没有被正确读取”:要么内容放不下,要么关键部分位于中间。
- 智能体在任务进行到一半时丢失了思路:工具返回的结果堆积过多。
- 同一个问题在不同聊天中得到不同答案:问题在于上下文不同,而不是模型本身。
03 · 配置
有意识地管理上下文
- 把重要的内容放在最前面和最后面。 模型对上下文的开头和结尾关注最多。
- 指令只在系统提示词里写一次,不要零散地穿插在聊天过程中。
- 继续之前先做摘要。 讨论很长之后,先请模型给出摘要,再开启新对话,把摘要粘贴进去。
- 附加文件,不要直接粘贴长篇材料;让工具自动分块处理。对于非常长的材料,使用知识库,使只有相关页面进入上下文。
- 精简智能体中的工具输出:在进入下一步之前,只保留需要的字段,丢弃其余内容。
04 · 使用说明
日常习惯
- 一个话题一个对话。换话题就新开对话。
- 提出复杂问题之前,先把它所依赖的两三个事实贴出来,即使之前已经说过。
- 让模型说明它目前对任务了解什么;它的回答能显示其上下文中有哪些内容。
- 在自动化流程中,偶尔记录一次完整的提示词并通读,你会发现过时的指令和重复的文本。
- 对每次调用都会重复的部分,使用模型提供方的提示词缓存;这样更便宜,也更快。
05 · 注意事项
常见陷阱
- 更大的窗口并非没有代价:窗口中的每个 token 都会在每一轮对话中被计费,而且窗口塞得越满,回答质量反而越差,而不是越好。
- “它读完了整篇文档”通常意味着它只是粗略浏览。可以针对某个具体章节提问来验证。
- 附件内容(如网页或邮件)中隐藏的指令,和其他内容一样会进入上下文。应明确告诉模型,把附件当作数据来处理。
- 不同模型的上下文窗口大小不同,一个能放下的提示词,在另一个模型上可能放不下。
06 · 资源
下一步去哪里
上下文是桌面的大小;记忆是你放在抽屉里的东西;知识库则是档案柜。
我的笔记
登录后可以在这本手册上记私人笔记。登录
