微信扫码
添加专属顾问
掌握6种上下文处理技巧,让大语言模型输出更精准高效。 核心内容: 1. 6种解决上下文失效的实用策略 2. 常见上下文失效问题的类型分析 3. RAG与工具装载等技术的实际应用场景
TL;DR 本文讲述了6种上下文处理方式,可以缓解或避免上下文失效的情况:
上下文管理策略
以下原文,Enjoy!
缓解与避免上下文失效
继我们之前的文章长上下文是如何失效的?之后,让我们来详细探讨一下如何缓解或完全避免这些失效情况。
但在开始之前,让我们简要回顾一下长上下文可能失效的几种方式:
这里的核心是信息管理。上下文中的一切都会影响响应。我们又回到了那句古老的编程格言:“Garbage in, garbage out(垃圾进,垃圾出。)”幸运的是,我们有很多选项来处理上述问题。
检索增强生成(RAG)是一种选择性地添加相关信息以帮助 LLM 生成更好响应的行为。
关于 RAG 的文章已经铺天盖地,我们今天不打算深入探讨,只想说:它依然很有生命力。
每当有模型提高其上下文窗口的上限时,新一轮“RAG已死”的辩论就会随之而来。最近一次重大事件是 Llama 4 Scout 带着一个一千万token的窗口问世。面对如此大的窗口,你真的会忍不住想:“管他呢,全扔进去就行了”,然后收工。
但是,正如我们上次所讨论的:如果你把上下文当作一个杂物抽屉,那么里面的杂物就会影响你的响应。
工具装载(Tool Loadout)指的是只选择相关的工具定义添加到你的上下文中的行为。
“Loadout”(装载)是一个游戏术语,指的是你在进入一个关卡、一场比赛或一轮游戏前所选择的技能、武器和装备的特定组合。通常,你的“装载”是根据具体情境量身定制的——比如你的角色、关卡、团队其他成员的配置以及你自己的技能。
在这里,我们借用这个术语来描述为特定任务选择最相关工具的过程。
也许最简单的工具选择方法就是对你的工具描述应用 RAG。这正是 Tiantian Gan 和 Qiyao Sun 在他们的论文"RAG MCP[1]"中所做的。通过将工具描述存储在向量数据库中,他们能够根据输入提示选择最相关的工具。
在提示 DeepSeek-v3 时,该团队发现,当你有超过30个工具时,选择正确的工具变得至关重要。超过30个,工具的描述开始重叠,造成混淆。当工具数量超过100个时,模型几乎肯定无法通过他们的测试。使用 RAG 技术来选择少于30个工具,可以显著缩短提示长度,并使工具选择的准确性提高多达3倍。
对于较小的模型,问题在远未达到30个工具时就开始出现了。我们上一篇文章中提到的一篇论文《少即是多(Less is More)[2]》,证明了 Llama 3.1 8b 在给定46个工具时在一个基准测试中失败了,但在只给定19个工具时却成功了。问题在于上下文混淆,而不是上下文窗口的限制。
为了解决这个问题,《少即是多》背后的团队开发了一种使用 LLM 驱动的工具推荐器来动态选择工具的方法。他们提示 LLM 去推理“它‘认为’回答用户查询所需的工具数量和类型”。然后对这个输出进行语义搜索(同样是工具 RAG),以确定最终的工具装载。他们在伯克利函数调用排行榜(Berkeley Function Calling Leaderboard)上测试了这种方法,发现 Llama 3.1 8b 的性能提高了44%。
《少即是多》论文还指出了上下文更小带来的另外两个好处:降低功耗和提高速度,这在边缘设备(即在你的手机或个人电脑上运行 LLM,而不是在专用服务器上)上运行时是至关重要的指标。即使他们的动态工具选择方法未能改善模型的结果,所节省的功耗和提升的速度也值得付出努力,分别节省了18%和77%。
值得庆幸的是,大多数智能体的应用范围较小,只需要少数几个精心挑选的工具。但如果功能广度或集成数量需要扩展,请务必考虑你的工具装载。
上下文隔离(Context Quarantine)是将上下文隔离到各自专用线程中的行为,每个线程由一个或多个 LLM 单独使用。
当我们的上下文不太长且不包含无关内容时,我们会得到更好的结果。实现这一点的一种方法是将我们的任务分解为更小的、隔离的工作——每个工作都有自己的上下文。
这种策略有许多例子[3],但对这一策略的一个易于理解的阐述来自 Anthropic 的一篇详细介绍其多智能体研究系统的博客文章。他们写道:
搜索的本质是压缩:从庞大的语料库中提炼出洞见。子智能体通过在各自的上下文窗口中并行操作来促进压缩,它们同时探索问题的不同方面,然后将最重要的词元(token)浓缩给主研究智能体。每个子智能体还提供了关注点分离——独特的工具、提示和探索轨迹——这减少了路径依赖,并实现了彻底、独立的调查。
研究任务本身就很适合这种设计模式。当给定一个问题时,可以识别出几个子问题或探索领域,并使用多个智能体分别进行提示。这不仅加快了信息收集和提炼的速度(如果有足够的计算资源),而且还使每个上下文不会累积过多信息或与给定提示无关的信息,从而提供更高质量的结果:
我们的内部评估表明,多智能体研究系统在涉及同时进行多个独立方向探索的广度优先查询中表现尤为出色。我们发现,一个以 Claude Opus 4 为主智能体、Claude Sonnet 4 为子智能体的多智能体系统,在我们的内部研究评估中,其性能比单一智能体的 Claude Opus 4 高出90.2%。例如,当被要求找出信息技术标准普尔500指数中所有公司的董事会成员时,多智能体系统通过将任务分解给子智能体找到了正确答案,而单一智能体系统则因缓慢的顺序搜索而未能找到答案。
这种方法也有助于工具装载,因为智能体设计师可以创建几种具有各自专用工具装载和如何使用每种工具的指令的智能体原型。
因此,对于智能体构建者来说,挑战在于找到可以将孤立任务分拆到独立线程中的机会。需要多个智能体之间共享上下文的问题不太适合这种策略。
如果你的智能体所处的领域适合并行化,请务必阅读 Anthropic 的整篇文章。它非常出色。
上下文修剪(Context Pruning)是从上下文中移除不相关或不需要的信息的行为。
智能体在调用工具和组合文档时会累积上下文。有时,值得停下来评估一下已经组合了哪些内容,并移除其中的无用部分。你可以将这项任务交给你的主 LLM,或者设计一个单独的由 LLM 驱动的工具来审查和编辑上下文。或者你也可以选择更适合修剪任务的专用工具。
上下文修剪有其(相对)悠久的历史,因为在 ChatGPT 出现之前,上下文长度在自然语言处理(NLP)领域是一个更麻烦的瓶颈。一种基于这段历史的当前修剪方法是 Provence[4],一个“用于问答的高效且稳健的上下文修剪器”。
Provence 速度快、准确、易于使用且相对较小——只有 1.75 GB。你可以用几行代码来调用它,就像这样:
from transformers import AutoModel
provence = AutoModel.from_pretrained("naver/provence-reranker-debertav3-v1", trust_remote_code=True)
# 读入加州阿拉米达维基百科条目的 markdown 版本
with open('alameda_wiki.md', 'r', encoding='utf-8') as f:
alameda_wiki = f.read()
# 根据一个问题来修剪文章
question = 'What are my options for leaving Alameda?'
provence_output = provence.process(question, alameda_wiki)Provence 对这篇文章进行了编辑,削减了95%的内容,只给我留下了这个相关的子集[5]。它做得非常完美。
人们可以使用 Provence 或类似的功能来削减文档或整个上下文。此外,这种模式也为维护一个结构化的上下文版本(例如存储在字典或其他形式中)提供了强有力的论据,在每次调用 LLM 之前,可以从这个结构化的版本中编译出一个字符串。这种结构在进行修剪时会非常方便,可以确保主要指令和目标被保留,而文档或历史记录部分则可以被修剪或总结。
上下文摘要(Context Summarization)是将累积的上下文提炼成一个精简摘要的行为。
上下文摘要最初是作为处理较小上下文窗口的一种工具出现的。当你的聊天会话接近超出最大上下文长度时,系统会生成一个摘要,然后开始一个新的线程。聊天机器人用户在 ChatGPT 或 Claude 中手动完成此操作,要求机器人生成一个简短的回顾,然后将其粘贴到新的会话中。
然而,随着上下文窗口的增大,智能体构建者发现,摘要的好处不仅仅是保持在总上下文限制之内。随着上下文的增长,它会变得分散注意力,并导致模型减少对其在训练中学到的知识的依赖。我们称之为上下文干扰。玩宝可梦的 Gemini 智能体背后的团队发现,任何超过10万词元(token)的内容都会触发这种行为:
虽然 Gemini 2.5 Pro 支持超过一百万词元的上下文,但如何为智能体有效利用它,提出了一个新的研究前沿。在这种智能体设置中,观察到当上下文显著增长超过10万词元时,智能体表现出倾向于重复其庞大历史中的行为,而不是综合出新的计划。这种现象虽然只是坊间传闻,但突显了用于检索的长上下文与用于多步生成式推理的长上下文之间的重要区别。
对你的上下文进行摘要很容易做到,但要为任何给定的智能体做到完美却很难。知道应该保留哪些信息,并向一个由 LLM 驱动的压缩步骤详细说明这一点,对智能体构建者至关重要。将此功能作为一个独立的、由 LLM 驱动的阶段或应用来分离是值得的,这可以让你收集评估数据,从而直接为优化此任务提供信息和支持。
上下文卸载(Context Offloading)是将信息存储在 LLM 上下文之外的行为,通常通过一个存储和管理数据的工具来实现。
这可能是我最喜欢的策略,只因为它简单到你不敢相信它会奏效。
同样,Anthropic 对这项技术有一篇很好的文章[6],详细介绍了他们的“思考(think)”工具,这基本上就是一个草稿板:
通过“思考”工具,我们让 Claude 能够在得出最终答案的过程中,增加一个额外的思考步骤——并为其配备一个指定的空间……这在执行长链条的工具调用或与用户的长多步对话中特别有帮助。
我非常欣赏 Anthropic 发表的研究和其他文章,但我不太喜欢这个工具的名字。如果这个工具叫做“草稿板(scratchpad)”,你会立刻知道它的功能。它是一个让模型可以写下笔记的地方,这些笔记不会干扰其上下文,但又可供日后参考。“思考(think)”这个名字与“扩展思考(extended thinking)”相冲突,并且不必要地将模型拟人化……但扯远了。
拥有一个记录笔记和进展的空间是有效的。Anthropic 的研究表明,将“思考”工具与特定领域的提示(在智能体中你无论如何都会这样做)相结合,可以带来显著的收益,对于专业化智能体,其基准测试性能提升高达54%。
Anthropic 确定了三种上下文卸载模式有用的场景:
1. 工具输出分析。当 Claude 在行动前需要仔细处理先前工具调用的输出,并且可能需要回溯其方法时; 2. 策略密集型环境。当 Claude 需要遵循详细的指导方针并验证合规性时;以及 3. 顺序决策。当每个行动都建立在前一个行动的基础上,且错误代价高昂时(常见于多步领域)。
上下文管理通常是构建智能体最困难的部分。正如 Karpathy 所说,智能体设计师的工作就是“恰到好处地填充上下文窗口(如下图)”,巧妙地部署工具、信息和进行定期的上下文维护。
以上所有策略的关键洞见在于上下文并非没有代价。上下文中的每一个词元(token)都会影响模型的行为,无论好坏。现代 LLM 巨大的上下文窗口是一项强大的能力,但这并不能成为在信息管理上敷衍了事的借口。
当你构建下一个智能体或优化现有智能体时,问问自己:这个上下文中的所有内容是否都物有所值?如果不是,你现在有六种方法来修复它。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-01
一文了解|SkillScan 智能体技能安全扫描最佳实践
2026-07-01
协作的逆向演进:从 Agent 逻辑重构团队管理
2026-07-01
港科大郭毅可谈Agentic AI时代的核心命题:人机共生,人不可能退场
2026-07-01
Sonnet 5终于来了,然而Opus 4.8现在有点尴尬
2026-07-01
AI可观测性:Prompt、Tool Call、Trace、Token全链路追踪
2026-07-01
AI Infra 全景图:Agent Framework、调度、编排、沙箱、记忆管理、Tracing 分层拆解
2026-07-01
Claude Science发布:60+科学数据库一个对话搞定
2026-07-01
AI 的向量空间里藏着心理学,这是一场嵌入模型的情绪对决
2026-04-15
2026-04-07
2026-04-07
2026-04-24
2026-04-17
2026-04-05
2026-04-02
2026-04-05
2026-04-14
2026-04-24
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。