第1章 什么是上下文——AI的'工作记忆' / Chapter 1: What is Context — The AI's Working Memory
第 1 章 什么是上下文——AI 的"工作记忆" / Chapter 1: What is Context — The AI's Working Memory
1.1 一个让 AI 困惑的问题
请你想象一个实验。把你关进一间安静的白色房间,房间里什么都没有——没有窗户,没有日历,没有照片,没有人和你说话。一盏灯永远亮着,桌上放着一支笔和一张白纸。然后有人从门缝里塞进一张纸条,上面只写了三个字:
> "写首诗。"
你会怎么反应?你可能会问:"写什么主题?""给谁写?""用什么语言?""要古体诗还是现代诗?"
这三个字对于一个普通人来说,几乎是不可能完成的任务——不是因为你不会写诗,而是因为你缺少做决定所需要的全部信息。你不知道写给谁、不知道在什么场合、不知道作者是谁、不知道读者期待什么。你唯一拥有的,是一支笔和一张白纸。
这正是当下一个人工智能模型在"裸奔"时所面对的局面。一个没有任何上下文(Context)的 AI 模型,就像被关进白色房间的你——它拥有强大的语言能力,却不知道该把这种能力用在哪里。没有上下文,再大的模型也写不出一行像样的回答。
那么,"上下文"到底是什么?它从哪里来?它为什么如此重要?这一章,我们将一起回答这些最基础、却最容易被忽略的问题。我们将先给出上下文的正式定义,再拆解它的四种来源,然后通过一个童话故事展示 AI 如何在上下文中"寻找线索",最后亲手设计一张"故事上下文卡片",把今天学到的内容变成可操作的工具。
> A Question That Confuses AI > > Imagine being placed in a white room with nothing but a pen, a piece of paper, and a single instruction: "Write a poem." Without knowing the audience, the occasion, or the language, the task is nearly impossible. This is exactly the situation a "naked" AI model faces. Without context, even the most powerful language model cannot produce a meaningful response. This chapter explores what context is, where it comes from, and why it matters so much.
---
1.2 上下文的正式定义
在人工智能的工程实践中,上下文(Context) 有一个被广泛接受的严格定义:
> 上下文,是指模型在生成一次响应时所依据的全部可用信息。 > > *Context refers to all the information available to a model when it generates a single response.*
请注意,这个定义包含三个关键要素,每一个都不能省:
第一,"全部"。 上下文不是某个单独的提示词,而是模型在那一瞬间能"看见"的所有信息的总和。这些信息可能来自不同地方,有着不同的来源、不同的结构、不同的可信度。把它们拼在一起,才构成完整的上下文。
第二,"可用"。 这里的"可用"是工程师视角的判断。一段信息是否属于上下文,取决于它是否在那一刻被传递到了模型面前。如果一段历史对话已经超出了窗口(window)限制,即使它存在于数据库中,对当前的模型来说也是"不可用"的——它会被模型"忘记"。我们将在第 2 章详细讨论这个容量问题。
第三,"生成一次响应时"。 上下文是有边界的。每一次对话、每一次请求、每一次生成,都有自己独立的上下文边界。一个模型在回答"今天天气如何"时使用的上下文,与它在回答"写一首关于秋天的诗"时使用的上下文,是两套不同的信息组合。理解这一点非常重要——它意味着我们可以针对每一次生成,精确地设计它所看到的"世界"。
在学术文献中,英文术语 Model Context(模型上下文)通常被用来指代这个完整的信息集合。OpenAI、Anthropic、Google DeepMind 等公司在它们的官方文档里,也都遵循这一用法:上下文是模型推理(reasoning)赖以发生的基础资源(foundational resource)。
为了帮助你更直观地理解,我们可以把上下文想象成一张工作台(workbench)。想象你走进一个木匠的工作室,里面摆着各种工具和材料——锯子、刨子、尺子、木板、图纸。木匠要做一张桌子,他需要把做桌子用得到的工具和材料都搬到工作台上。工作台上摆什么,决定了木匠能做出什么。上下文就是 AI 的工作台:台上摆什么,AI 就能做出什么;台上没有的,AI 怎么也想不出来。
> Three Key Elements of the Definition > > 1. "All" — context is the sum total of all information visible to the model. > 2. "Available" — whether information is in context depends on whether the model actually receives it. > 3. "For one response" — context is bounded; each generation has its own context window.
---
1.3 上下文的四种来源
一个完整的上下文到底由什么构成?根据信息的来源和功能,我们可以把上下文的组成部分划分为四个类别:系统提示(System Prompt)、用户输入(User Input)、历史对话(History)以及外部信息(External Information)。这四类信息在工程实践中通常会被拼接成一个连续的文本块,然后送进模型。下面我们逐一介绍。
1.3.1 系统提示(System Prompt)——AI 的"出厂设置"
系统提示是模型在一次会话开始前就被设定好的、描述自身角色与行为规范的文本。它是上下文中最稳定、最持久、最接近"底层设定"的那一部分。
举一个例子。如果你打开一个"小红帽"角色扮演应用,那么这个应用的系统提示可能是这样的:
> "你是一个温柔而勇敢的小女孩,名叫小红帽。你住在森林边的小木屋里,最爱穿一件红色带帽斗篷。你的奶奶住在森林深处。今天你要给奶奶送糕点。回答时请用孩子的口吻,保持简短。"
这一段文字不是用户写的,也不是历史对话里产生的,而是开发者预先写好、嵌在系统里的。它告诉模型:"在这一次会话中,你是谁,你应该怎么说话,你的世界里有哪些设定。"系统提示的质量,往往直接决定了整个 AI 应用的人格稳定性。
> System Prompt — The Factory Settings > > A System Prompt is pre-configured text that defines the model's role, personality, and behavioral rules for an entire session. It is the most stable part of context, set before any user interaction begins.
1.3.2 用户输入(User Input)——当下的"那一句话"
用户输入是用户在这一轮对话中刚刚发送的那条消息。它通常是最显眼、最直接、最受关注的部分,因为模型生成的下一段回答,就是对这条输入的直接回应。
然而,用户输入本身往往信息量极少。"写首诗"这三个字就是典型的用户输入——它是一颗种子,但缺少土壤。这就是为什么单靠用户输入远远不够,模型必须把它和上下文中的其他信息结合起来,才能产生有意义的回答。
> User Input — The Current Message > > The User Input is the message just sent by the user in the current turn. It is usually short and information-poor on its own, which is why it must be combined with other context components to produce a meaningful response.
1.3.3 历史对话(History)——之前的"记忆"
历史对话是本次会话中此前的所有轮次。它可能包括用户之前说过的话,也包括模型之前生成的回答。
历史对话的作用是维护连续性。当用户说"那再写一首吧",模型之所以知道"那"指的是哪一首诗,正是因为历史对话告诉它的。如果没有历史对话,每一次对话都会从零开始——这正是早期的某些聊天机器人显得"健忘"的原因。
需要注意的是,历史对话并不是无限累积的。一个会话的上下文窗口是有限的,当历史对话变得太长时,最早的对话会被"挤"出窗口。我们将在第 2 章详细讨论这个容量管理的问题。
> History — The Memory of Past Turns > > History includes all previous turns in the current session, both user messages and assistant responses. It provides conversational continuity, allowing the model to understand references like "that one" or "as you said before." History is bounded by the context window and may be truncated when the window fills up.
1.3.4 外部信息(External Information)——查来的"资料"
外部信息是模型从外部数据源动态检索或传入的内容。它可能是一段从维基百科查到的资料、一段从公司数据库读取的订单信息、一段从向量数据库中检索到的相关文档,也可能是实时联网搜索得到的结果。
在 2024 年之后兴起的 RAG(Retrieval-Augmented Generation,检索增强生成) 架构中,外部信息扮演了核心角色。RAG 的基本思想是:当用户提出问题时,系统先在一个大型知识库中检索相关文档,然后把这些文档作为"参考资料"塞进上下文,再让模型基于这些资料生成回答。这样一来,模型就可以回答它训练时从未见过的事实。
> External Information — The Retrieved Material > > External Information is content dynamically pulled from outside the model — databases, documents, web search results, or vector stores. In RAG (Retrieval-Augmented Generation) systems, this component is the dominant source of factual grounding.
1.3.5 四种来源的汇聚过程
为了让你更清楚地看到这四种信息如何共同构成完整的上下文,请看下面的流程图:
```mermaid flowchart LR SP[System Prompt<br/>系统提示] UI[User Input<br/>用户输入] HIS[History<br/>历史对话] EXT[External Information<br/>外部信息] CTX[Complete Context<br/>完整上下文] MODEL[AI Model<br/>模型推理] OUT[Response<br/>生成回答]
SP --> CTX UI --> CTX HIS --> CTX EXT --> CTX CTX --> MODEL MODEL --> OUT ```
> 图 1.1:四种上下文来源汇聚为完整上下文。 系统提示、用户输入、历史对话、外部信息四股信息流被拼接成一段连续的文本(即"完整上下文"),送入模型进行推理,最终产生回答。
1.3.6 一张对比表
为了方便你以后查阅和复习,我们用一张表格来总结这四种来源的差异:
| 来源 (Source) | 谁提供 (Provider) | 何时确定 (When) | 典型例子 (Example) | 稳定性 (Stability) | |---|---|---|---|---| | 系统提示 System Prompt | 开发者 / 系统 | 会话开始前 | "你是一个耐心的数学老师" | 高 (High) | | 用户输入 User Input | 用户 | 每一轮当下 | "帮我算一下 23×17" | 低 (Low) | | 历史对话 History | 用户 + 模型 | 累积产生 | "你刚才说过的那个公式" | 中 (Medium) | | 外部信息 External | 系统检索 | 每次请求 | 一段产品说明书 | 中 (Medium) |
> Table 1.1: Comparison of the Four Context Sources
记住这张表。在后面的章节里,我们会反复回到这四种来源上,做更精细的工程设计。
---
1.4 上下文与短时记忆:人类认知的镜像
理解了上下文的正式定义之后,你可能会问:这个概念对人类来说陌生吗? 答案是一点也不陌生。人类大脑里有一个非常类似的结构,它叫做短时记忆(Short-Term Memory),也叫工作记忆(Working Memory)。
在认知心理学中,短时记忆是指人类在执行某个认知任务时,保持并操作少量信息的记忆系统。它的几个特征,恰好与 AI 的上下文高度吻合:
特征一:容量有限。 经典的"魔术数字七"(The Magical Number Seven)由心理学家乔治·米勒(George Miller)于 1956 年提出,认为人类的短时记忆容量大约是 $7 \pm 2$ 个组块(chunk)。也就是说,你很难同时在脑中清晰保持 9 个不相关的事实。AI 模型的上下文窗口虽然以"token"为单位衡量(token 可以粗略理解为一个词或半个汉字),但它同样有上限——目前主流的模型上限从几千到几百万个 token 不等。一旦超过这个上限,最早的信息就会被丢弃。
特征二:易被覆盖。 短时记忆很容易被新信息"挤掉"。你在聚会上认识了一堆新朋友,几个小时后你还记得几个名字?同样,当一段新对话进入上下文窗口,模型可能因为容量限制而"忘掉"更早的内容。
特征三:需要管理。 正因为短时记忆有这些限制,人类发展出了一整套策略来管理它——比如记笔记、列清单、画思维导图。AI 工程师也发展出了类似的策略,比如摘要压缩(summarization)、滑动窗口(sliding window)、优先级排序(prioritization)。这些策略的目标都是同一个:让最重要、最相关的信息留在上下文里。
特征四:内容可主动调取。 短时记忆的内容并不是被动堆积的——你可以主动把某件事"放进"工作记忆并保持专注。同样,工程师可以通过提示工程(Prompt Engineering)把关键信息"显式"塞进上下文,确保模型"看见"它。
我们可以用一个简化的公式来描述这个类比:
$$\text{Context}_{\text{AI}} \approx \text{Working Memory}_{\text{human}}$$
> 注意: 这是一个类比(analogy),不是等同(equivalence)。AI 的上下文与人脑的短时记忆在底层机制上完全不同——一个是数学矩阵运算,一个是神经元放电。但这个类比在工程上极为有用,因为它帮助我们借用人脑的工作经验来设计 AI 系统。
正因为这个类比如此有效,本书的英文标题里才用了 Working Memory 这个词来翻译"上下文"——我们希望读者从一开始就建立正确的直觉:上下文不是装饰,而是 AI 思考时唯一能依赖的"工作台"。
> Context and Short-Term Memory: A Human Mirror > > Human short-term memory and AI context share four key features: limited capacity, susceptibility to being overwritten, need for active management, and the ability to be deliberately populated. The analogy $\text{Context}_{\text{AI}} \approx \text{Working Memory}_{\text{human}}$ is not literally true at the mechanism level, but it is highly useful for engineering design.
---
1.5 核心命题:无上下文即无智能
到这里,我们已经可以把一个核心命题明确地提出来——这是贯穿全书的基本观点之一:
> 无上下文,即无智能。 > > *No context, no intelligence.*
这句话听起来有些绝对,但它表达的是一条工程真理:模型展现出的"智能"程度,并不仅仅取决于它内部的参数,而取决于它所看到的上下文。一个拥有 700 亿参数却只看到三个字"写首诗"的模型,表现出来的"智能",很可能不如一个拥有 70 亿参数却看到了精心设计上下文的模型。
这背后的原理叫做上下文条件作用(context co