如何修复上下文,缓解与避免上下文失败


作为我们之前文章《长上下文如何失败》的后续,这篇将介绍我们可以如何缓解甚至完全避免这些失败。

但在开始之前,让我们快速回顾一下

★ 长上下文常见的失败方式:

1. 上下文污染(Context Poisoning): 当幻觉或其他错误被加入上下文中,并被反复引用。

2. 上下文干扰(Context Distraction): 当上下文过长,导致模型过度依赖上下文,而忽视了训练中学到的知识。

3. 上下文混淆(Context Confusion): 当上下文中包含冗余信息,模型因此生成质量较低的回应。

4. 上下文冲突(Context Clash): 当新信息或工具与原有 prompt 中的信息发生冲突。

这一切都是信息管理问题。上下文中的每一项信息都会影响模型输出。正如老编程格言所说:“Garbage in, garbage out”。幸运的是,我们有很多方法可以应对这些问题。

★ 上下文管理策略

- RAG:选择性地添加相关信息以提高 LLM 的回答质量

- 工具加载(Tool Loadout):只添加任务相关的工具定义到上下文

- 上下文隔离(Context Quarantine):将不同上下文隔离在独立线程中使用

- 上下文剪枝(Context Pruning):移除不相关或无用的信息

- 上下文摘要(Context Summarization):将累积的上下文压缩为摘要

- 上下文卸载(Context Offloading):将信息存储在 LLM 上下文之外的工具中

★ RAG(检索增强生成)

RAG 是指选择性地将相关信息加入上下文,以帮助 LLM 更好地生成回答。

虽然随着模型上下文窗口越来越大(如 Llama 4 Scout 的 1000 万 token),很多人觉得“把所有信息全塞进去”就够了,但如果像杂物抽屉那样使用上下文,杂物也会污染模型生成。

要想了解更多,作者推荐了一个新的课程:I don’t use RAG. I just retrieve documents.

★ 工具加载(Tool Loadout)

工具加载指的是为任务选择合适的工具描述加入上下文。

术语“loadout”来自游戏世界,指的是你选择的技能、武器和装备组合。

这项技术可以结合 RAG。例如,Tiantian Gan 和 Qiyao Sun 在其论文 RAG MCP 中展示了如何通过向量数据库检索相关工具描述。

- 研究发现,当工具数量超过 30 时描述会重叠,产生混淆;

- 超过 100 个工具几乎必然导致模型失败;

- 使用 RAG 技术将工具数控制在 30 以内,可将工具选择准确率提升 3 倍。

对于小模型问题更早就会暴露,例如论文 Less is More 指出:LLaMA 3.1 8b 给 46 个工具会失败,而给 19 个工具则表现良好。问题是混淆,而不是上下文长度限制。

即使动态工具选择方法未提升模型准确率,它带来的电量节省(18%)和速度提升(77%)也是值得的。

★ 上下文隔离(Context Quarantine)

这是指将不同任务拆分为独立线程,每个线程使用独立上下文。

例如 Anthropic 的多智能体研究系统就是用多个子智能体并行运行,彼此隔离、分别检索,最后由主智能体整合输出。

他们在评估中发现:

~ 使用多智能体时,相比单一 Claude Opus 4,回答准确率提升了 90.2%;

- 多智能体系统能将一个复杂任务拆分成多个子任务并行完成;

- 不同子智能体可使用不同的工具集,解决加载冲突问题。

★ 上下文剪枝(Context Pruning)

随着任务进行,智能体会累积大量上下文,可能需要清理。

作者推荐了一款轻量剪枝工具:Provence,其模型大小仅 1.75GB,调用简单,能将不相关信息剔除 95%,效果优秀。

剪枝更有效的方式是将上下文结构化成字典或模块,方便根据规则进行删减。

★ 上下文摘要(Context Summarization)

即便上下文足够长,过长的历史也会使模型过度依赖记忆,而非推理。

例如 Gemini 2.5 Pro 支持超过 100 万 token 的上下文,但一旦超出 10 万 tokens,模型就会偏向重复历史行为,而非生成新计划。

总结步骤可由独立 LLM 实现,并可积累评估数据,以持续优化摘要质量。

★ 上下文卸载(Context Offloading)

即将笔记或中间推理步骤移出上下文,存放于外部工具中,例如 Anthropic 的 “think tool”(更贴切应叫 “scratchpad”)。

用途包括:

1. 工具调用后中间结果分析;

2. 严格政策/合规规则场景;

3. 多步决策路径,每步都可能受前一步影响。

研究显示,在这些场景中,配合领域定制 prompt,可提升性能最多达 54%。

★ 总结

构建智能体最困难的部分通常就是上下文管理。

Karpathy 曾说过,让 LLM “just pack the context window right”,就是智能体开发者的任务。

关键观点是:上下文不是免费的,每个 token 都会影响模型行为。

即便拥有更大的上下文窗口,也不是信息管理可以松懈的理由。构建或优化智能体时请问自己:

> 上下文中的每一项,是否都值得留下?

如果答案是否定的,那么你已经有了六种修复方法可用。

访问:www.dbreunig.com/2025/06/26/how-to-fix-your-context.html

 

转载自:黄建同学 微博


相關推薦

2025-06-11

,如果D = 4,PT可将同步开销减少87.5%。 为支持更长的上下文输入,我们设计了一种交错注意力架构,结合滑动窗口局部注意力层、旋转位置嵌入(RoPE)和无位置嵌入(NoPE)的全局注意力层。这种设置提高了长度泛化能力,减

2025-06-17

——即从庞大语料中提炼洞见。子智能体通过各自独立的上下文窗口并行运行,同时探索问题的不同方面,随后将最重要的信息压缩汇总给主导智能体。这种机制还实现了关注点分离——不同的工具、提示词和探索路径彼此独立

2021-12-20

防止自引用查找的不受控制的递归。当日志配置使用带有上下文查找的非默认模式布局(例如,$${ctx:loginId})时,控制线程上下文映射 (MDC) 输入数据的攻击者可以制作包含递归查找的恶意输入数据,导致 StackOverflowError 将终止进

2025-04-03

使用 CoT 来进行工具调用,而不依赖于 function tool。 关键上下文。即基于 IDE 的 PSI 接口丰富了语法分析计算与架构视图,提供系统的关键上下文。 同时,DevIns 能和 MCP 生态非常好的结合在一起,以便于更好地调用工具。 2

2025-07-25

在已有功能的增强或扩展上表现出色,能很好地理解上下文并延续逻辑 对于全新功能(无现成示例参考)的任务,需要更多上下文引导 始终保持与原项目一致的代码风格与架构模式,具备良好的工程一致性 Qwen-3 Cod

2025-06-17

当前是 MySQL 环境,根据历史路径生成定制命令,本质是上下文信息与模型推理的协同。 提问:AI 执行敏感操作时如何避免风险?是否有验证机制? 覃奕:安全是核心设计。多层防护包括:sudo 或系统文件修改命令需手动二次

2023-02-15

5个月了,期间发生不少事,一直没更新这个项目,不管如何,魔幻的2022年都过去了! 感谢大家这2年来的陪伴与支持,祝大家有情人终成眷属,情人节快乐!

2024-09-20

BRIEF 时,在日志中增加文件位置信息,以提供更详细的上下文。#39571 将会话变量 max_allowed_packet 的默认值调整为 16MB,提高数据传输限制。#38697 在单次请求中,若包含多个 SQL 语句,各语句间必须使用分号进行分隔,以增

2025-03-25

伪开放”的质疑——当核心基础设施由商业公司控制时,如何平衡社区利益与企业诉求?这或推动更严格的开源治理规范出台。 开发者关系管理升级 CEO亲自下场辩论反映技术公司愈发重视开发者心智争夺。预计将有更多厂商

2022-11-03

。如果问题不能完全解决,一个详细的消息可以提示用户如何调整 SQL,以避免引入非确定性问题。更多细节可以参考文档 [26] 。 维表增强 维表关联在流处理中被广泛使用,在 1.16 中我们为此加入了多项优化和增强:

2022-10-19

;2.3.8 已经发布。它包含一些新功能,但真正的目的是修复 CVE-2022-3515;这是一个整数溢出漏洞,可以通过例如恶意 S/MIME 附件远程利用来执行代码。值得注意的是,实际漏洞位于 libksba 库中,该库通常在 Linux 系统

2024-07-02

aleops.com 如果您希望深入了解我们的其他功能,或者讨论如何将 WhaleStudio 与你的业务流程相结合,我们非常愿意为你提供帮助。欢迎您首先试用白鲸调度系统(WhaleScheduler),开始您的大数据之旅。

2022-12-02

区 Go Workspace File(Go 工作区文件)操作 在 New(新建)上下文菜单中,您现在会找到 Go Workspace File(Go 工作区文件)操作。 选择时,根文件夹中将出现一个 go.work 文件。 现有 Go 模块将自动添加到 go.work 文件中。 使用 replace

2025-05-30

修复:修复可能的 NPE 问题 修复:修复 bot 对话共享上下文问题 修复:插件未将 key 加入参数中导致 API 鉴权失败 close #IC9SQH:插件的key没有被加入到参数中,导致api鉴权失败 修复:后台 AI 助手配置错误时聊天提示异常