呼和浩特市网站建设_网站建设公司_后端工程师_seo优化
2026/1/16 20:30:31 网站建设 项目流程

本文详细介绍大模型Agent架构中的上下文压缩技术,分析了上下文压缩的必要性及5种实用方案。包括三种无损压缩方法(省略重复参数、延迟展示长文、分段读取)和两种有损压缩方法(就地压缩、LLM+Prompt压缩)。文章强调应根据实际需求选择合适的压缩策略,优先考虑无损方案,确保Agent在有限上下文窗口下高效稳定运行。


从本文开始,我将陆续介绍关于Agent架构设计的一系列实践。不只是代码以及技术设计层面的实战,还有更高层面的抽象总结。有兴趣的读者可以实操后拿去做面试题或者面试答案。以我多次面试别人以及被面试的经验来看,如果系统掌握这些实践,拿个大厂P7(或对应)职级应该不是问题。Boss直聘、脉脉上大量关于Agent开发的职位,例如:Agent开发工程师、AI工程开发、大模型应用平台开发等。

当然,我个人也不提倡因为需要面试而“背”答案,只背答案而不去实操,面试的时候也容易漏洞百出。

本系列实践主要用于构建完全自主规划的Agent,类似Manus,而非基于workflow的Agent,至于二者区别,本系列实践中也将有专门论述。

本系列实践的相关内容

  1. 架构选项讨论,自主型的Agent vs. Workflow型的Agent;
  2. 架构详细设计,从多智能体到智能体工具交互协议;
  3. 上下文工程,上下文压缩的几种方案(本文);
  4. 上下文工程,Agent运行过程中错误处理的几种方案;
  5. 其他主题,如有兴趣,可以评论区或私信交流。

ps. 欢迎订阅本公众号,以便于接收后续更新.


上下文压缩的几种方案

  1. 为什么要做上下文压缩?

在上下文工程中,为什么要做压缩,这个问题的答案很明显:

  1. 大模型的上下文窗口有限,虽然近来新模型(Gemini 3 pro/kimi k2/minimax m2等)上来就是百万token,但是依然无法承载几百轮Agent Loop上下文的叠加,对于几万页的pdf更是无法处理;
  2. 假设,大模型的上下文窗口是无限的,根据注意力机制,上下文变长后,注意力将“涣散”,无法准确理解任务意图。在《上下文腐败:逐步增长的Tokens如何影响LLM的性能》(https://research.trychroma.com/context-rot)一文中,作者通过实验证明长下文会使LLM的性能严重衰减。

因而,要让Agent稳定可靠地运行下去,必须对上下文进行压缩。本文仅讨论5种工程方案。当然除了工程方案也有算法方案,不过算法方案对大部分人来说门槛过高。因而本文不做介绍。

  1. 上下文压缩的方案

上下文压缩方案从是否有损的角度看,分为有损以及无损两种。先来看一段原始上下文:

<操作> <第0轮> <执行ID>op00000</执行ID> <执行函数>create_todo_list</执行函数> <参数> { id: "todo001", "steps": [ "搜索最新的人工智能发展趋势", "整理搜索结果", "撰写总结报告" ] } </参数> <执行结果> { "status": "success", "message": "待办事项列表已创建,ID为 todo001" "steps": [ "搜索最新的人工智能发展趋势", "整理搜索结果", "撰写总结报告" ] } </执行结果> </第0轮> <第1轮> <执行ID>op12345</执行ID> <执行函数>search_with_google</执行函数> <参数> { "query": "最新的人工智能发展趋势", "num_results": 5 } </参数> <执行结果> { "results": [ { "title": "2024年人工智能发展趋势分析", "link": "https://example.com/ai-trends-2024", "snippet": "本文详细分析了2024年人工智能的发展趋势,包括生成式AI、AI伦理和可解释性等方面。" }, { "title": "人工智能的未来:2024及以后的展望", "link": "https://example.com/future-of-ai-2024", "snippet": "探讨了人工智能在各个行业中的应用前景以及未来的发展方向。" }, { "title": "2024年人工智能技术的十大趋势", "link": "https://example.com/top-ai-trends-2024", "snippet": "列出了2024年最重要的人工智能技术趋势,包括自动化、机器学习和深度学习的最新进展。" }, { "title": "人工智能在医疗领域的最新进展", "link": "https://example.com/ai-in-healthcare-2024", "snippet": "介绍了人工智能在医疗诊断、治疗和患者管理中的最新应用和发展。" }, { "title": "生成式AI的崛起及其影响", "link": "https://example.com/rise-of-generative-ai-2024", "snippet": "分析了生成式AI技术的发展及其在内容创作、设计和娱乐领域的影响。" } ] } </执行结果> </第1轮> <第2轮> <执行ID>op67890</执行ID> <执行函数>file_reader</执行函数> <参数> { "file_path": "ai_trends_summary.txt" } </参数> <执行结果> { "content": "2024年人工智能发展趋势总结:\n 1. 生成式AI技术的快速发展,推动内容创作和设计领域的创新。\n 2. AI伦理和可解释性成为关注焦点,推动行业规范和政策制定。\n 3. 人工智能在医疗、金融等关键行业的应用不断深化,提高效率和服务质量。\n 4. 自动化和机器学习技术的进步,促进各行业的数字化转型。 \n 5. 多模态AI的发展,使得AI系统能够处理和理解多种类型的数据,提高交互体验。 \n 6. 边缘AI的兴起,推动实时数据处理和智能设备的发展。" } </执行结果> </第2轮> </操作>

以上内容约4000个token。

我们来逐步分析以上内容如何压缩。首先,我们观察到第0轮:create\_todo\_list出入参有相同之处,可以省略。

2.1 无损压缩方案1:当出入参部分一致时,可以省略部分出参

create_todo_list,可以压缩为:

<第0轮> <执行ID>op00000</执行ID> <执行函数>create_todo_list</执行函数> <参数> { "id": "todo001", "steps": [ "搜索最新的人工智能发展趋势", "整理搜索结果", "撰写总结报告" ] } </参数> <执行结果> { "message": "待办事项列表已创建,ID为 todo001" } </执行结果> </第0轮>

对于todo list、plan相关的函数,可以使用类似压缩策略。

出入参压缩完成后,我们看search\_with\_google的压缩方案。这类长文的压缩方案,我们可以在第n+3轮调用时,进行省略,通过给LLM提供一个长文查阅的工具,以备不时之需。

2.2 无损压缩方案2:长文在第n+3轮调用时,进行省略

例如,在第1轮时,调用了search\_with\_google方法,在第4轮Agent Loop时,其相关上下文会被省略为:

<第1轮> <执行ID>op12345</执行ID> <执行函数>search_with_google</执行函数> <参数> { "query": "最新的人工智能发展趋势", "num_results": 5 } </参数> <执行结果> 执行结果被省略,如需要,请使用view_return_value(execution_id)查看结果 </执行结果> </第1轮>

这种方法,适用于search、file_reader等长文执行结果方法。

在长文压缩后,我们再看file_reader如何压缩与优化。file_reader主要作用是从文档中读取内容,使其对LLM可见,可是,一旦文档内容过长,上下文里面就“爆掉”,对此,我们的压缩方案是:分段读取,或就地压缩。

2.3 无损压缩方案3:长文分段读取

所谓长文分段读取,就是在file_reader中要求,读取必须提供begin_line,end_line序号,且要求一次最多不许超过n行,如下(注意参数部分):

<第2轮> <执行ID>op67890</执行ID> <执行函数>file_reader</执行函数> <参数> { "file_path": "ai_trends_summary.txt" "begin_line": 0 "end_line":5 "max_range":10 } </参数> <执行结果> { "content": "2024年人工智能发展趋势总结:\n 1. 生成式AI技术的快速发展,推动内容创作和设计领域的创新。\n 2. AI伦理和可解释性成为关注焦点,推动行业规范和政策制定。\n 3. 人工智能在医疗、金融等关键行业的应用不断深化,提高效率和服务质量。\n 4. 自动化和机器学习技术的进步,促进各行业的数字化转型。 \n 5. 多模态AI的发展,使得AI系统能够处理和理解多种类型的数据,提高交互体验。 \n 6. 边缘AI的兴起,推动实时数据处理和智能设备的发展。" } </执行结果> </第2轮>

注意,这种方法,只能让文本被正常读取,但不能彻底解决长文问题,甚至还可能引发多次读取的副作用。如果要彻底解决该问题,需要进行有损就地压缩。

2.4 有损压缩方案1:就地压缩长文

所谓就地压缩,就是不读取内容,而是直接让LLM尝试回答文章的问题。我们把file_reader换成ask_document:

<第2轮> <执行ID>op678900</执行ID> <执行函数>ask_document</执行函数> <参数> { "file_path": "ai_trends_summary.txt" "question": "提取文章的核心内容,不超过20字" } </参数> <执行结果> { "content": "2024年人工智能发展趋势总结:内容创新、边缘AI等" } </执行结果> </第2轮>

注意,这里只是提取了核心内容,更多文章细节可能丢失,因而称为“有损压缩”。

最后,我们讨论一种方法,堪称压缩的“大招”。就是做完以上压缩方案后,内容依然超长。此时就需要使用有损压缩的终极方案。

2.5 有损压缩的终极方案:通过LLM + 压缩口令Prompt进行压缩

方案分两步走:

  1. 检测Agent Loop上下文窗口,超过一定数量以后启动压缩,例如超过60000 token后,开始压缩;
  2. 将Agent Loop的上下文,以及压缩口令Prompt交给LLM启动压缩,压缩口令Prompt如下:
请将以下操作记录进行压缩,保留所有轮次(包括第0轮、第2-4轮)的关键信息, 如执行ID、执行函数、参数和执行结果的核心内容,但简化描述以减少冗余。 压缩后的输出应保持原始的XML格式结构, 包括使用相同的标签(如<操作>、<第X轮>、<执行ID>等), 并确保内容简洁明了。

使用这段口令,对原始上下文压缩后的结果为(from deepseek网页版):

<操作> <第0轮> <执行ID>op00000</执行ID> <执行函数>create_todo_list</执行函数> <参数>{"id": "todo001", "steps": ["搜索最新的人工智能发展趋势", "整理搜索结果", "撰写总结报告"]}</参数> <执行结果>{"status": "success", "message": "待办事项列表已创建"}</执行结果> </第0轮> <第1轮> <执行ID>op12345</执行ID> <执行函数>search_with_google</执行函数> <参数>{"query": "最新的人工智能发展趋势", "num_results": 5}</参数> <执行结果>{"results": [{"title": "2024年人工智能发展趋势分析"}, {"title": "人工智能的未来:2024及以后的展望"}, {"title": "2024年人工智能技术的十大趋势"}]}</执行结果> </第1轮> <第2轮> <执行ID>op67890</执行ID> <执行函数>file_reader</执行函数> <参数>{"file_path": "ai_trends_summary.txt"}</参数> <执行结果>{"content": "2024年AI趋势总结:生成式AI、AI伦理、医疗应用、自动化、多模态AI、边缘AI等关键发展。"}</执行结果> </第2轮> </操作>

只有1200 token,但是我们看到部分内容也丢失了。所以使用有损压缩,要充分考虑损失是否影响最终结果。


总结

本文讨论了在Agent架构设计中,具有代表性的5种上下文压缩方案,及其应用场景。在实践中,优先考虑使用无损压缩,再考虑有损压缩。

如何系统的学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

01.大模型风口已至:月薪30K+的AI岗正在批量诞生

2025年大模型应用呈现爆发式增长,根据工信部最新数据:

国内大模型相关岗位缺口达47万

初级工程师平均薪资28K(数据来源:BOSS直聘报告)

70%企业存在"能用模型不会调优"的痛点

真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!

02.大模型 AI 学习和面试资料

1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工

📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)





第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

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

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

立即咨询