大模型开发者必学的6种上下文工程解决方案,解决多轮对话质量下降难题,附详细代码!
本文探讨了LLM应用中常见的上下文衰减问题,详细介绍了4种上下文失效模式及6种解决方案。基于LangGraph框架,文章通过RAG、工具配置、上下文隔离、修剪、摘要和卸载等技术,为开发者提供了修复模型在复杂场景下输出质量的完整指南,并附有详细代码示例与性能对比。
简介
本文探讨了LLM应用中常见的上下文衰减问题,详细介绍了4种上下文失效模式及6种解决方案。基于LangGraph框架,文章通过RAG、工具配置、上下文隔离、修剪、摘要和卸载等技术,为开发者提供了修复模型在复杂场景下输出质量的完整指南,并附有详细代码示例与性能对比。
在构建基于大模型的 AI 应用的过程中,多轮对话或输入内容过长往往会让模型的回答质量下降,这是开发者们普遍头疼的难题。
LangChain 团队提出了 6 种可行的解决方案,帮助模型在复杂场景下依然保持稳定而高质量的输出。这些方法基于 LangGraph 框架,涵盖信息检索、智能筛选、上下文隔离等关键技术点,并为每种思路配备了详细的代码示例与性能对比。
一、上下文衰减问题
Chroma 开发团队对 18 个模型做了上下文衰减评估,结果发现随着输入长度的增长,即使在非常简单的任务上模型的表现也会下降,这解释了为什么说:LLM 并不是平等的对待上下文窗口中的每个 Token。
上下文失效可以总结成这 4 种模型:
-
上下文污染 - 进入上下文的幻觉或错误被反复引用。
-
上下文分散 - 当上下文变得如此庞大,以至于模型更多地关注累积的历史而非训练内容。
-
上下文混乱 - 多余的内容影响响应质量,因为模型感觉有义务使用所有可用的上下文。
-
上下文冲突 - 累积上下文中的冲突信息降低推理能力。
上下文工程解决思路
Drew 总结出了 6 种上下文工程技术方案来帮助修复这些失败模式,包括:
-
RAG(检索增强生成)
-
工具配置
-
上下文隔离
-
上下文修剪
-
上下文摘要
-
上下文卸载
LangChain 团队基于 Drew 的思路,在一系列 Jupyter 笔记本中使用 LangGraph 实现了每种技术,如下所述。
二、快速开始
-
前提条件:Python 3.9 或更高版本,uv 包管理器
-
克隆仓库并激活虚拟环境:
git clone https://github.com/langchain-ai/how_to_fix_your_context
- 安装依赖
uv pip install -r requirements.txt
- 使用模型提供商设置环境变量
exportOPENAI_API_KEY="your-openai-api-key"
- RAG(检索增强生成)
笔记本:github.com/langchain-ai/how_to_fix_your_context/blob/main/notebooks/01-rag.ipynb
检索增强生成(RAG)是选择性地添加相关信息以帮助 LLM 生成更好响应的行为。
实现:使用 LangGraph 创建 RAG 代理,其检索工具基于 Lilian Weng 的博客文章构建。代理使用 Claude Sonnet 在回答问题前智能搜索相关上下文。
关键组件:
使用 RecursiveCharacterTextSplitter 进行文档加载和分块
使用 OpenAI 嵌入创建向量存储
带有工具调用条件边的 LangGraph StateGraph
指导代理在检索前明确研究范围的系统提示
性能:对于关于奖励破解类型的复杂查询,使用了 25k 个标记,由于标记密集的工具调用而驱动。
- 工具配置
笔记本:github.com/langchain-ai/how_to_fix_your_context/blob/main/notebooks/02-tool-loadout.ipynb
工具配置是选择只将相关的工具定义添加到你的上下文中的行为。
实现:通过在向量存储中索引所有 Python 数学库函数并根据用户查询动态选择相关工具来演示语义工具选择。
关键组件:
所有数学函数的 UUID 映射工具注册表
使用嵌入对工具描述进行向量存储索引
基于语义相似性搜索的动态工具绑定(限制 5 个工具)
扩展状态类来跟踪每次对话选择的工具
好处:避免重叠工具描述的上下文混乱,与加载所有可用工具相比提高工具选择准确性。
- 上下文隔离
笔记本:github.com/langchain-ai/how_to_fix_your_context/blob/main/notebooks/03-context-quarantine.ipynb
上下文隔离是将上下文隔离在各自专用线程中的行为,每个线程由一个或多个 LLM 单独使用。
实现:使用 LangGraph 监督器架构创建监督器多代理系统,具有拥有隔离上下文窗口的专业代理。
关键组件:
将任务路由到适当专家的监督器代理
具有加法/乘法工具和专注数学提示的数学专家代理
具有网络搜索能力和研究专注提示的研究专家代理
基于任务类型的清晰委托规则(研究 vs 计算)
好处:每个代理在自己的上下文窗口中操作,防止上下文冲突和分散注意力。监督器使用基于工具的切换为需要多种技能的复杂任务协调代理。
- 上下文修剪
笔记本:github.com/langchain-ai/how_to_fix_your_context/blob/main/notebooks/04-context-pruning.ipynb
上下文修剪是从上下文中删除不相关或不需要信息的行为。
实现:通过智能修剪步骤扩展 RAG 代理,在将检索到的文档传递给主 LLM 之前删除不相关内容。
关键组件:
指导较小 LLM 仅提取相关信息的工具修剪提示
GPT-4o-mini 作为修剪模型以降低成本
带有摘要字段的扩展状态类用于上下文压缩
基于原始用户请求的修剪以保持相关性
性能改进:与基本 RAG 相比,同一查询的标记使用量从 25k 减少到 11k,展示了在保持答案质量的同时显著的上下文压缩。
- 上下文摘要
笔记本:github.com/langchain-ai/how_to_fix_your_context/blob/main/notebooks/05-context-summarization.ipynb
上下文摘要是将累积的上下文浓缩成精简摘要的行为。
实现:通过添加摘要步骤构建 RAG 代理,压缩工具调用结果以减少上下文大小同时保留基本信息。
关键组件:
创建文档全面而简洁版本的工具摘要提示
GPT-4o-mini 作为摘要模型以提高成本效率
在消除冗余的同时保留所有关键信息的指导原则(50-70% 缩减目标)
带有摘要字段的扩展状态类用于跟踪压缩内容
方法:与删除不相关内容的修剪不同,摘要将所有信息压缩成更紧凑的格式,适用于所有检索内容都相关但冗长的情况。
- 上下文卸载
笔记本:github.com/langchain-ai/how_to_fix_your_context/blob/main/notebooks/06-context-offloading.ipynb
上下文卸载是将信息存储在 LLM 上下文之外的行为,通常通过存储和管理数据的工具实现。
实现:演示了两种上下文卸载方法——会话期间的临时暂存区存储和使用 LangGraph 存储接口的持久跨线程内存。
关键组件:
带有暂存区字段的扩展状态类用于临时存储
WriteToScratchpad 和 ReadFromScratchpad 工具用于记笔记
InMemoryStore 用于持久跨线程内存
维护有组织笔记并基于先前研究构建的研究工作流
两种存储模式:
-
会话暂存区:单个对话线程内的临时存储。
-
持久内存:使用命名空间键值对进行跨线程存储,在不同对话会话中持续存在。
好处:使代理能够维护研究计划、积累发现并跨多次交互访问先前工作,类似于 Anthropic 的多代理研究员和 ChatGPT 等产品实现内存的方式。
三、 AI大模型学习和面试资源
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
更多推荐
所有评论(0)