上下文窗口指模型在一次请求中能够同时处理的 token 数量上限,涵盖系统提示、历史对话、本次输入以及模型生成的输出。它决定了单次能塞进多长的材料,也决定了多轮对话能记住多久。具体数值随模型不同而不同,且厂商会调整,应以官方模型文档为准。

谁在占用这个额度

一次请求里,下面这些全部计入同一个窗口:

  1. 系统提示词
  2. 之前所有轮次的对话历史
  3. 这一次的输入内容
  4. 模型即将生成的输出

第 2 项是长对话变慢变贵的主要原因:每多聊一轮,之前的内容都会被重新发送一次。

常见误解

  • 上下文窗口 ≠ 记忆。 模型没有跨请求的记忆,所谓「记得刚才说过的话」,是因为客户端把历史一起发过去了。窗口一满,最早的部分就会被裁掉。
  • 窗口大不等于效果好。 塞满窗口通常会稀释关键信息,也会显著推高成本。给足必要材料比给全部材料更有效。
  • 输出长度受同一个额度约束。 输入占太多,留给输出的就少,表现为回答被截断。
  • 不要记住具体数字。 各家模型的窗口大小在不断变化,需要时查官方模型文档,不要照抄文章里写死的数值。

实际怎么处理

长文档场景的常见做法是先检索再生成——用向量检索找出真正相关的片段,只把这些片段放进窗口,而不是把整份文档塞进去。

多轮对话则需要在客户端做历史裁剪:保留系统提示与最近若干轮,丢弃或摘要更早的内容。相关的成本影响见 Token