为什么?
因为上下文窗口装的不只是聊天记录,还有 system prompt、工具定义、模型的思考过程等等。
哈喽大家好,我是二哥呀。上期我们讲了 LLM 是没有记忆的,靠的是每次重新读一遍对话历史。今天接着讲它一次能读多少?
面试官问这道题,考察两个层面:第一,上下文窗口的本质和计量单位你清不清楚;第二,窗口满了会发生什么,你能不能说明白。
好,接下来给你满分回答,照着背就完事了。
上下文窗口,也就是 Context Window,是 LLM 一次能“看到”的全部文本容量,计量单位不是字数,是 token,也就是词元。
token 是什么?是模型处理文本的最小单位。按照 DeepSeek 官方给出的参考,1 个英文单词大约等于 1 个 Token;而 1 个汉字会对应 1 到 2 个 Token。
换句话说,LLM 会使用“分词器”(Tokenizer)把我们人输入的提示词拆分成一段段的 Token(可能是一个字、一个词语,甚至是一个标点符号或空格)。
各家模型的窗口大小也不一样。DeepSeek V4 是 1兆大小,也就是 100 万个 token,大约 75 万个汉字,能容纳一整部《红楼梦》。
对于现阶段的大模型来说,这已经是最大的上下文窗口。
但你要知道,这个窗口装的不只是聊天记录。
一个上下文窗口里至少容纳了五样东西。
- 第一,system prompt,告诉模型它是谁、该怎么回答;
- 第二,工具定义,接了 Function Calling 的话,每个工具的名称、描述、参数的 JSON Schema 都要塞进去;
- 第三,历史对话,你和模型之间每一轮的问答;
- 第四,你当前这一轮输入的内容;
- 第五,模型生成的回复本身,也在消耗窗口。
打个比方。上下文窗口就像考试时发给你的那张草稿纸。题目、公式、计算过程,你只能在这一张草稿纸上完成。
假如用完了,考试还没有结束,还有很多题目需要验草,怎么办?把最早写的擦掉,给新内容腾地方。
这就是为什么,如果一个 Agent 没有做好上下文窗口管理的话,聊到后面,你会发现它“忘记”了你中间讲的内容。不是它不够聪明,是那些内容被其他他认为更重要的内容挤出上下文窗口了。
面试官如果追问:“窗口是不是越大越好?”
不完全是。窗口越大,一次推理要算的量就越大,响应会变慢,API 费用也更贵。而且还有我们之前提到的“Lost in the Middle”,也就是U型记忆,模型对上下文窗口一开始和结尾的内容注意力最强,中间部分容易忽略。窗口大不代表利用率高,关键信息还是要放在开头或结尾,别在中间。
最后送大家一句口诀——五样共一窗,满了擦最早;要点放两头,中间最易忘。
这道题你学废了吗?下一期讲短期记忆和长期记忆——LLM 怎么“记住”跨对话的信息?点赞关注,我是二哥,下期见!

