大家好,我是视觉君。

大家用大语言模型 (LLM) 时候肯定都遇到过一个问题。就是当我们给模型输入很长的信息时,它的表现就会下降。

模型可能会忘记你最初的要求,或者在回答里出现事实错误。这个问题很普遍,技术上我们叫它“上下文腐烂” (Context Rot)。

为什么会这样呢?我们又该怎么解决这个问题?

最近,全球知名的 AI 开发框架 LangChain 给出了答案。他们开源了一个项目,叫 how_to_fix_your_context https://github.com/langchain-ai/how_to_fix_your_context。这个项目专门用来演示如何解决上下文太长的问题。

今天,我们就来学习一下 LangChain 提供的这 6 个实用技巧。

为什么长上下文会“腐烂”?

在学习解决方案之前,我们先要明白问题出在哪里。LangChain 的项目总结了四个主要原因。

  1. 上下文中毒 (Context Poisoning)
    一个错误的信息或者幻觉,可能会在长对话中被反复引用。这就像一颗老鼠屎坏了一锅汤。最终,整个对话的质量都会被污染。

  2. 上下文分心 (Context Distraction)
    如果上下文信息积累得太多,模型可能会“分心”。它会更关注历史对话的细枝末节,反而忽略了当前最重要的任务。

  3. 上下文混淆 (Context Confusion)
    上下文中包含了太多无关或者多余的内容。这会让模型感到“困惑”。模型会觉得它必须使用所有可用的信息,结果反而影响了回答的质量。

  4. 上下文冲突 (Context Clash)
    上下文中包含了相互矛盾的信息。这会导致模型的推理能力下降,逻辑开始混乱。

LangChain 的 6 个修复技巧

为了解决上面这些问题,LangChain 提出了“上下文工程” (Context Engineering) 的概念。他们用一个叫 LangGraph 的工具,实现了 6 个核心技巧。

LangGraph 是一个用于构建 AI 应用的底层编排框架。它很灵活,可以让你把复杂的流程拆解成一个个节点和边,非常适合实现这些精细的上下文控制策略。

下面,我们来看看这 6 个技巧。

技巧一:RAG (检索增强生成)

RAG 的全称是 Retrieval-Augmented Generation。

这个技巧大家可能比较熟悉。它的核心思想很简单。就是我们不把全部信息都丢给模型,只给它当前问题最相关的信息。

具体做法是:

  1. 先把你的知识库(比如一堆 PDF 文件)进行切分。

  2. 然后,把切分后的文本块转换成向量,存入向量数据库。

  3. 当用户提问时,系统会先根据问题去数据库里搜索最相关的几个文本块。

  4. 最后,把这些文本块和用户的问题一起,作为上下文提供给模型。

这样一来,模型看到的上下文就既简短又精确。

技巧二:工具筛选 (Tool Loadout)

这个技巧的核心是,只给模型当前任务所需要的工具。

很多 AI 应用会给模型提供各种工具,比如计算器、搜索引擎、代码解释器等等。如果把所有工具的说明都放进上下文,会占用大量空间,也可能让模型“挑花眼”。

“工具筛选”的做法是:

  1. 建立一个工具注册表,里面存放所有可用的工具和它们的详细描述。

  2. 当用户提出需求时,系统会先对需求进行分析。

  3. 然后,通过语义搜索,从注册表里匹配出最相关的几个工具。

  4. 最后,只把这几个被选中的工具的定义和用法放进上下文。

这样,模型就能更准确地选择和使用工具,避免了上下文混淆。

技巧三:上下文隔离 (Context Quarantine)

这个技巧听起来很专业,但原理不复杂。它的核心是把不同的任务,交给不同的“专家”智能体 (Agent) 处理。

每个专家智能体都有自己独立的、隔离的上下文窗口。

具体做法是:

  1. 创建一个“主管” (Supervisor) 智能体。

  2. 主管负责接收所有任务,并根据任务类型,把它分发给对应的专家。

  3. 比如,计算任务交给“数学家”智能体,联网搜索任务交给“研究员”智能体。

  4. 每个专家在自己独立的上下文中完成工作,互不干扰。

这种方式可以有效避免不同任务之间的信息冲突和干扰,特别适合构建复杂的多智能体系统。

技巧四:上下文剪枝 (Context Pruning)

这个技巧是在 RAG 的基础上做的优化。它的核心是在将检索到的信息交给主模型之前,先进行一次“剪枝”。

“剪枝”就是把信息中不相关或者不重要的部分直接去掉。

具体做法是:

  1. 和 RAG 一样,先检索出相关文档。

  2. 然后,使用一个更小、更快的模型(比如 GPT-4o-mini),让它读一遍这些文档。

  3. 这个小模型的任务是,根据用户的原始问题,只从文档中提取最核心、最相关的信息。

  4. 最后,只把这些被“修剪”过的精华内容,交给更强大的主模型去生成最终答案。

这个方法能极大地压缩上下文长度,节省成本,同时保证答案的质量。

技巧五:上下文总结 (Context Summarization)

这个技巧和“剪枝”很相似,但侧重点不同。

“剪枝”是直接删除无关内容。而“总结”是把所有检索到的内容,用更简洁的语言重新归纳一遍,生成一个摘要。

它适用于这样一种情况:检索到的信息全都是相关的,但表述非常啰嗦。

具体做法是:

  1. 在 RAG 检索到信息后,启动一个总结模型(同样可以是小模型)。

  2. 这个模型会阅读全部内容,并生成一个全面但简洁的摘要。

  3. 项目的目标是,在保留所有关键信息的前提下,将内容长度减少 50% 到 70%。

通过“总结”,我们可以在不丢失信息的情况下,有效降低 Token 消耗。

技巧六:上下文卸载 (Context Offloading)

这个技巧是把信息存储在模型的上下文窗口之外。你可以把它想象成给模型一个外部的“记事本”或者“草稿纸”。

模型不再需要把所有的东西都记在自己的“脑子”(即上下文窗口)里。

具体做法是,为模型提供可以读写的外部存储工具。

  • 模型可以在处理复杂任务时,随时把中间步骤、思考过程或者临时发现写入这个“记事本”。

  • 当需要时,再从“记事本”里把信息读出来。

这种方法让模型有了管理长期记忆的能力。它可以跨越多轮对话,甚至跨越不同的会话来积累和使用知识。

总结

“上下文工程” 是 AI Agent 应用开发中一个重要的内容。

LangChain 这次提供的 6 个技巧非常系统和实用。它们覆盖了从信息预处理、工具使用、多智能体协作到外部记忆管理的多个方面。如果你有使用过 Cursor、Calude Code 等这些 AI 编程工具,也能感受到这些技巧的存在。


附:

1️⃣ 大模型入门学习路线图
2️⃣ 大模型方向必读书籍PDF版
3️⃣ 大模型面试题库
4️⃣ 大模型项目源码
5️⃣ 超详细海量大模型LLM实战项目
6️⃣ Langchain/RAG/Agent学习教程
7️⃣ LLM大模型系统0到1入门学习教程
8️⃣ 吴恩达最新大模型视频+课件

➤ 取:公·Z·号【小灰熊大模型】发送数字【1】领取~

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐