☰
为什么聊久了 AI 就忘事?上下文窗口 Context Window 详解
2026/9/29 4:32:08 网站建设 项目流程

为什么聊久了 AI 就忘事?上下文窗口 Context Window 详解

导语:你跟 AI 聊到第 50 轮,它突然不认得开头说过的话——这不是它记性差,是上下文窗口(Context Window)到顶了。本文讲清它是什么、为什么有限、以及怎么用代码看清它的边界。

一、背景 / 为什么需要它

做对话产品时最常见的投诉:“AI 前面明明答应过,后面全忘了。“很多人第一反应是骂模型笨。其实问题出在上下文窗口——它是模型"一次性能处理的文字量上限”,不是记忆,而是一个固定大小的"阅读框”。

你每次发的每句话、它回的每句话,都变成 Token 堆在一起送进模型。这个"能一起送进去的最大长度"就是上下文窗口。比如 8 万 Token 的窗口,差不多能塞下一篇中篇小说;但一旦超出,最早的内容就会被挤出去。

二、核心概念 / 原理

关键认知:上下文窗口不是记忆,是一个固定大小的阅读框。窗口越大,模型每算一步要同时比对的内容越多,算力和钱都往上飙。所以厂商不是不能做大,是在"够用"和"烧钱"之间找平衡——这就是为什么不同模型窗口差那么多。

更反直觉的一点是:AI 在两次请求之间,其实什么都不记得。你每次发消息,对模型都是一次全新开始;所谓"它记得对话",是聊天软件把历史记录又原样发回给它了。一旦软件不再发旧记录(开新会话、或超窗口被截断),它立刻变"初见"。

flowchart TD A["输入"] --> B["处理"] B --> C["输出"] C --> E["模型只读'框内'内容"] ``````mermaid graph LR A[新消息进入] --> B{窗口未满?}B -- 是 --> C[原样拼进上下文] B -- 否 --> D[挤出最老的 Token<br>或压缩成摘要] C --> E[模型只读"框内"内容] D --> E E --> F[框外内容=模型"忘"了]

把重要前提藏在开头然后指望它一直记得,是典型误区。正确做法是把关键约束写在最新一条消息里,或定期重述。

三、动手实操:用 tiktoken 看清窗口边界

3.1 环境与版本

  • Python 3.11
  • tiktoken >= 0.7(OpenAI 官方分词器,用来数 Token)
  • 以cl100k_base编码近似演示(不同模型编码不同,数量级一致)

3.2 关键代码

下面演示:一段长文本到底占多少 Token,以及"超出窗口会被截断"的模拟。

importtiktoken# 3.1 初始化编码器(cl100k_base 是 GPT-3.5/4 系常用编码)enc=tiktoken.get_encoding("cl100k_base")# 3.2 模拟一段"聊了很久"的对话历史history="用户:我叫小王,帮我记一下今天只干了三件事。\n"history+=("AI:好的,记下了。\n"*200)# 假装有 200 轮来回history+="用户:我刚说今天干了几件事?"# 3.3 数 Tokentokens=enc.encode(history)print("总 Token 数:",len(tokens))# 3.4 模拟 8 万 Token 窗口的截断行为WINDOW=80_000iflen(tokens)>WINDOW:kept=tokens[-WINDOW:]# 只保留最后 8 万,最早的被挤出print("超出窗口,保留最新 Token 数:",len(kept))else:kept=tokens# 3.5 看"框外"的内容是否还在decoded=enc.decode(kept)print("窗口内还能看到'小王'吗:","小王"indecoded)

预期结果:200 轮来回后总 Token 数远超 8 万;截断后保留的窗口里,开头的"小王/三件事"已被挤出,"小王" in decoded大概率为False——这就是"聊久了就忘事"的代码级证据。

四、常见坑 / 避坑清单

  1. 把上下文窗口当长期记忆:它只是临时阅读框,关会话即清空。真要长期记住用户,得上外部记忆(RAG、向量库、用户档案),别指望窗口。
  2. 重要前提写在开头:一旦对话变长被截断,开头约束最先丢。把关键规则写进系统提示词,并在最新消息里复重述。
  3. 盲目堆大窗口:窗口翻倍,推理的每一步注意力计算成本近似平方级上升,延迟和账单都会爆。够用就好,超出的用检索/摘要补。
  4. 以为"它忘"是模型丢数据:其实是客户端没把旧记录递回去(新会话、被截断)。排查"健忘"先看发送侧是否带了 history。

五、总结

  • 上下文窗口 = 一次性可读的最大 Token 数,是"阅读框"不是"记忆"。
  • 超限后最早内容被挤出或压缩,表现就是"聊久了忘事"。
  • 两次请求之间模型不记得任何事,记忆靠客户端回传 history。
  • 关键约束放系统提示词 + 最新消息复重述;长期记忆交给外部方案。

最后

以上就是本文的全部内容,希望对你有帮助。
AI 的上下文窗口和记忆机制这块,我会接着在 CSDN 专栏《AI基础知识分享》里拆。点个关注,新文不漏看。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询