上下文管理

学习资料:7.1 从提示工程到上下文工程 - 从零开始学 Agent 上下文窗口管理(Context Window Management):核心概念、使用场景与实践说明 | Agent Wiki

上下文管理的内容

首先先明确一下上下文管理在做什么,以及上下文中都会有哪些内容。大语言模型的上下文是有限的,Agent不能把所有记忆,RAG检索到的东西都塞进去,会导致大语言模型输出的质量下降。喂给大语言模型的上下文中主要包含以下内容:1.System Prompt 2.User Input 3.对话记忆,也就是一轮轮的对话内容 4.RAG检索到的文档 5.工具调用结果 6.任务状态,还有一些别的,例如 Skill 和工具的描述.

上下文管理的方法

LLM 可能在实际工程中问题,如遗忘,重复,偏题。

大模型对上下文的敏感程度也不同,它对开头和结尾敏感,对中间则不敏感。

针对有限的上下文,我们需要对不同的部分规定限额。例如像下面这样。

上下文管理的具体手段

1.滑动窗口,最简单的方法,只保留最近N次对话。2.摘要压缩,当对话达到指定轮数时触发摘要压缩,将之前的历史压缩成要点 3.语义过滤,将当前用户输入和之前的历史做语义上的相似度匹配,挑选出最相关的N条放入。

面试题

一个客服 Agent 需要支持 100 轮以上的长对话,同时集成了 40 个工具。请设计窗口管理策略,说明如何处理对话历史膨胀和工具描述过载两个问题。

答案:对话历史膨胀的处理:设置滑动窗口,保留最近 5-10 轮的完整对话;超出窗口的历史按每 10 轮生成一次摘要,将摘要链条作为压缩历史保留;关键信息(如用户姓名、订单号、已确认的需求)提取到结构化的"会话状态"对象中,始终保留。

工具描述过载的处理:实施 Tool Loadout(动态工具加载),根据用户当前查询的意图分类,只加载相关的 5-10 个工具描述;研究显示,工具超过 30 个时模型的工具选择准确率会显著下降,动态加载可提升约 44% 的准确率。

预算分配建议:系统指令 10% + 会话状态 5% + 压缩历史摘要 10% + 最近对话 20% + 动态工具描述 15% + 知识检索 15% + 输出预留 25%

相关推荐
铭哥的编程日记10 小时前
从一道 LeetCode Hard 到吃透一类题:加权区间调度「排序 + 二分 + DP」
算法·leetcode·职场和发展
Navigator_Z11 小时前
LeetCode //C - 1248. Count Number of Nice Subarrays
c语言·算法·leetcode
wzdark12 小时前
多维数组在算法设计中的存储映射问题4
算法
Phil32312 小时前
多智能体不是越多越好:Google《Towards a Science of Scaling Agent Systems》论文深度解读
算法
6Hzlia12 小时前
【Classic 150 刷题计划】 LeetCode 26. 删除有序数组中的重复项 | C++ 快慢双指针经典模板
c++·算法·leetcode
huang57914713 小时前
基于滑动窗口的流式数据算法优化思路3
算法
Ulyanov13 小时前
AudioVision Pro:基于 PySide6 + sounddevice 的实时音频可视化播放器设计
python·算法·音视频
土司大王13 小时前
LeetCode hot100——74.搜索二维矩阵:Java 二分模板
java·算法·leetcode
tyler_download14 小时前
揉扁搓圆transformer架构:NAG优化器算法详解
深度学习·算法·transformer
weixin1997010801614 小时前
[特殊字符]《京东POP二手品类对接:B2C订单模型 vs 二手C2C属性的字段转换难题》(附Python源码)
前端·python·算法