ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

《Agent开发工程师成长指南》- 第3章 第1节:什么是Context Window?——为什么AI能记住这么多内容?

《Agent开发工程师成长指南》- 第3章 第1节:什么是Context Window?——为什么AI能记住这么多内容? 第一卷大模型 基础篇第3章 模型能力认知第1节什么是Context Window——为什么AI能记住这么多内容《Agent开发工程师成长指南》系列教程引言在前面的第2章我们学习了Transformer ↓ Attention ↓ Token ↓ Embedding ↓ Position Encoding ↓ Scaling Law ↓ Emergent Ability ↓ Reasoning ↓ Agent我们已经知道大模型是Agent的“大脑”。但是一个非常现实的问题马上出现了如果AI只是一个模型它为什么能够记住我们刚刚说过的话例如你和ChatGPT连续聊天用户 我正在开发一个销售Agent。AI好的我可以帮助你设计销售Agent。过了一会儿用户 那这个Agent应该接入哪些系统AI能够理解“这个Agent”指的就是前面说的销售Agent再继续用户 那它的Tool应该怎么设计AI仍然能够理解上下文。于是很多人会产生一个问题AI是不是把我们之前说过的所有内容都记住了答案是不完全是。这里面涉及一个非常重要的概念Context Window中文通常叫上下文窗口它是理解现代大模型工作方式以及理解Agent为什么会“失忆”的基础。一、什么是Context先不要理解Context Window。我们先理解Context是什么简单来说Context 模型当前能够看到并用于生成回答的信息例如用户输入我叫张三。然后我是一名Java工程师。再然后我正在开发一个AI Agent。当AI回答最后一个问题时它可能同时看到我叫张三 我是一名Java工程师 我正在开发一个AI Agent 当前问题这些内容共同构成Context二、Context不等于Memory这是理解大模型最容易出现的误区。很多人认为Context Memory实际上并不是。可以简单理解Context “现在桌面上摆着的资料”而Memory “长期保存的资料库”例如你告诉Agent我的公司叫ABC科技。如果这个信息只是存在当前对话中它属于Context如果系统把它保存到数据库User Profile下次聊天再取出来才更接近Memory因此Context解决模型现在能看到什么而Memory解决过去的信息如何长期保存和再次使用三、什么是Context Window理解Context以后Context Window就很好理解了。可以把它理解为模型一次能够处理的最大上下文容量。例如一个模型支持128K Context意思并不是AI永久记住128K Token而是一次请求中模型最多可以处理大约128K Token范围内的上下文。这里的关键词是一次请求四、Context Window是用Token计算的Context Window通常不是按照字数计算。而是Token例如128K Tokens就是128 × 1024级别的Token容量。为什么使用Token因为大模型真正处理的不是汉字 英文单词 句子而是Token序列。第2章我们已经学习过文本 ↓ Tokenizer ↓ Token ↓ Embedding ↓ Transformer因此Context Window实际上可以理解为模型一次能够处理的Token数量上限五、为什么不同语言占用的Token数量不同例如Hello world和你好世界经过Tokenizer之后Token数量可能并不相同。同样Python代码JSONMarkdown中文英文Token效率都可能不同。因此不要简单把128K Token理解成128K个汉字。六、Context Window里面到底装了什么这是Agent开发工程师必须理解的问题。一次Agent调用模型Context通常不仅仅是用户问题还可能包括System PromptConversation HistoryRAG检索结果Tool定义Tool执行结果Memory当前用户输入甚至图片文件代码等等。所以Agent真正消耗的Context往往远远大于用户看到的那句话。七、为什么Context Window越来越大早期大模型2K后来4K 8K 32K再后来128K 200K 1MContext Window不断扩大。原因很简单AI需要处理越来越复杂的任务。例如传统聊天一句问题 一段回答可能几千Token就够了。但是企业Agent用户需求 系统指令 历史对话 企业知识 数据库结果 Tool Schema Tool Result 代码 文件可能很快达到几十万Token八、Context Window越大越好吗答案不一定。这是非常重要的一点。很多人看到1M Context第一反应那岂不是比128K强很多从容量角度当然更大。但从实际效果看Context越大 ≠ 模型一定能够同样有效地利用所有信息原因是Context里面的信息越来越多以后模型需要寻找相关信息忽略无关信息建立信息关系保持注意力这些都会变得更加困难。九、长Context会带来什么问题例如Context里面有100条信息真正重要的只有第37条模型需要从100条信息中 找到第37条如果变成10000条甚至100000条问题就复杂得多。这就是所谓Long Context Challenge十、为什么会出现“Lost in the Middle”这是长Context研究中非常经典的现象。假设Context开始有一个重要信息AContext中间BContext结尾C一些研究发现模型对开头和结尾的信息利用效果通常可能好于中间区域于是真正重要的信息如果被埋在超长Context中间模型未必能够稳定找到。这就是常说的Lost in the Middle十一、Context Window与Attention有什么关系第2章我们学习了Attention让模型关注不同Token之间的关系。现在Context变长以后Token数量 ↑模型需要处理的Token之间关系也会变得更加复杂。简单理解短Context ↓ 注意力范围较小而长Context ↓ 需要处理更多信息关系因此Context Window扩展不仅是“装更多Token”还涉及Attention效率计算成本显存KV Cache等大量工程问题。十二、KV Cache为什么和Context有关这是Agent工程中非常重要的概念。模型第一次处理历史Context会进行大量计算。在生成后续Token的时候模型不希望每次都重新计算全部历史信息。因此会使用KV Cache简单理解历史Token ↓ Key / Value ↓ 缓存 ↓ 后续生成继续使用这样可以减少重复计算。十三、Context越长成本也可能越高企业Agent开发必须考虑Token成本。例如一个Agent每次请求都携带100K Token如果每天10000次调用那么Context成本就非常可观。而且Prompt Token Output Token都可能产生费用。因此Context Engineering已经成为Agent工程的重要组成部分。十四、什么是Context Engineering以前我们经常说Prompt Engineering关注怎么写Prompt而Agent时代进一步出现Context Engineering关注的是到底应该把什么信息在什么时间以什么形式放进Context例如不要把整个企业知识库全部塞进去而应该用户问题 ↓ 检索 ↓ 筛选 ↓ 排序 ↓ 只把最相关内容放进Context十五、RAG为什么能够解决Context问题假设企业有100万份文档我们不可能全部放进Context因为Context爆炸RAG的思想就是用户问题 ↓ 检索知识库 ↓ 找到相关内容 ↓ Top K ↓ 放入Context ↓ LLM所以RAG实际上是在帮助模型管理Context。十六、Agent为什么特别依赖Context普通聊天用户 ↓ 问题 ↓ LLM ↓ 答案Agent用户目标 ↓ Agent ↓ 历史Context ↓ Memory ↓ RAG ↓ Tool ↓ Tool Result ↓ Reasoning ↓ 下一步ActionAgent每执行一步都会产生新的信息。于是Context 不断增长例如用户目标 任务计划 Tool 1结果 Tool 2结果 Tool 3结果 中间推理 错误信息 重新规划如果不进行管理很快就会Context爆炸十七、为什么Agent最终一定需要Context管理假设一个Agent连续执行Tool 1Tool 2Tool 3Tool 4Tool 5每一步都会产生输入 输出 状态 错误 中间结果如果全部保留Context 越来越长最终可能出现Token超限或者模型注意力下降或者成本上升因此企业Agent通常需要Context CompressionContext SummarizationMemoryRetrievalTool Result Filtering等机制。十八、Context管理的核心方法可以总结成六种1 压缩100K Token ↓ 20K Token保留重要信息。2 摘要把100轮对话变成一份摘要3 检索需要的时候从Memory中取出来而不是一直放在Context中。4 裁剪删除过期信息无关信息5 分层例如System ContextTask ContextTool ContextMemory Context6 状态化把Agent状态存储到外部State Store而不是全部依赖Context。十九、Context Window不是“AI记忆力”这是本节最重要的认知之一。我们可以把Context Window理解成AI当前的工作台。而Memory更像AI的长期档案库。因此Context 工作记忆Memory 长期记忆当然这只是工程上的类比。模型内部的实际机制比人类记忆复杂得多。二十、为什么Context最终会成为Agent工程的核心因为Agent不是简单回答一个问题而是持续完成一个任务例如帮我分析公司销售情况 找出问题 制定改进方案 生成PPT 然后发给老板。Agent可能执行查询数据库 ↓ 分析数据 ↓ 检索历史报告 ↓ 调用Python ↓ 生成图表 ↓ 生成PPT ↓ 发送邮件整个过程中Context就是连接所有步骤的信息中枢。二十一、Context Engineering将成为Agent工程核心能力未来Agent开发工程师需要考虑的已经不是Prompt写得好不好而是模型现在应该看到什么例如用户问题我要分析本月销售情况应该提供销售数据历史销售报告公司指标定义不应该提供无关HR文档无关产品文档几年前的无关销售数据这就是Context Selection二十二、从Prompt Engineering走向Context Engineering未来Agent系统Prompt Engineering解决如何告诉模型做什么而Context Engineering解决应该给模型看什么最终Prompt Context Memory RAG Tools Workflow共同决定Agent效果二十三、Context Window与第2章知识的联系现在我们可以把第2章和第3章连接起来。第2章学习Transformer ↓ Attention ↓ Token ↓ Position Encoding ↓ Scaling Law ↓ Emergent Ability第3章开始Context ↓ Memory ↓ Hallucination ↓ Reasoning ↓ Multimodal也就是说第2章解决“模型是什么、为什么强”。而第3章开始解决“模型到底能做到什么以及为什么会出现这些问题”。二十四、给Agent开发工程师的一个重要启示当一个Agent回答错误时不要第一时间认为模型不行也不要第一时间修改Prompt先问模型看到了什么也就是检查Context。例如System Prompt是否正确历史对话是否污染RAG是否召回错误内容Tool Result是否过长Memory是否注入了错误信息Context是否已经过载这套思维方式就是从Prompt Engineer走向Agent Engineer的重要一步。面试题问题1什么是Context Window参考答案Context Window是模型一次请求能够处理的最大上下文Token容量。它决定了模型在当前请求中能够看到多少信息。问题2Context和Memory有什么区别参考答案Context是模型当前请求能够直接看到的信息而Memory通常用于长期保存和再次检索历史信息。Context更像工作记忆Memory更像长期信息存储。问题3Context Window越大是不是一定越好参考答案不是。更大的Context可以容纳更多信息但也可能带来注意力分散、长Context信息利用效率下降、计算成本增加、延迟增加和KV Cache显存压力等问题。问题4什么是Lost in the Middle参考答案Lost in the Middle是长Context场景中的一种典型现象即重要信息位于超长上下文中间区域时模型对这些信息的利用效果可能下降。问题5RAG为什么能够帮助解决Context问题参考答案RAG不会把整个知识库全部放入Context而是根据用户问题检索相关内容只把高相关信息放入Context从而降低Token消耗并提高信息相关性。问题6为什么Agent比普通聊天更加依赖Context参考答案因为Agent需要持续执行任务每一步都会产生新的计划、Tool调用结果、状态和中间信息。这些信息需要在后续决策中继续使用因此Agent需要持续管理和更新Context。问题7什么是Context Engineering参考答案Context Engineering是围绕“应该给模型提供什么信息、什么时候提供、以什么形式提供”进行系统设计包括Context选择、检索、压缩、摘要、裁剪、Memory和State管理等。本节小结本节我们学习了✅ 什么是Context✅ 什么是Context Window✅ Context Window为什么使用Token计算✅ Context与Memory的区别✅ Context Window为什么越来越大✅ 为什么Context越大不一定越好✅ 什么是Long Context✅ 什么是Lost in the Middle✅ KV Cache与Context有什么关系✅ RAG如何帮助管理Context✅ Agent为什么高度依赖Context✅ 什么是Context Engineering最终可以用一句话理解Context Window决定模型“现在能看到多少”Memory决定系统“过去能保存多少”。而对于Agent来说Prompt Context Memory RAG Tools Workflow共同构成了Agent的工作环境。所以大模型的能力决定Agent“能不能做”而Context Engineering决定Agent“能不能持续做好”。这也是为什么Prompt Engineering正在逐渐走向Context Engineering而Context管理也将成为未来企业级Agent开发中非常重要的核心能力。第3章学习路线接下来我们继续解决一个非常有趣的问题既然Context Window这么大为什么AI还是会忘记我们刚刚说过的话下一节《第3章 第2节GPT为什么会遗忘——Context明明还在AI为什么还是“记不住”》
返回列表