智能体的上下文工程
正如操作系统管理 CPU 的内存,上下文工程是填充 LLM 上下文窗口这块“数字RAM”的艺术与科学。
LLM 如 CPU
模型的推理核心
上下文窗口如 RAM
有限的工作记忆
挑战:当“内存”溢出
过长的上下文会稀释关键信息,导致智能体性能下降。这就是我们需要上下文工程的原因。
上下文中毒
错误的幻觉信息污染了上下文,导致后续决策基于错误的前提。
上下文分心
大量无关信息淹没了模型的注意力,使其偏离了核心任务指令。
上下文混淆
冗余或模糊的上下文影响了响应的精确性,导致输出模棱两可。
上下文冲突
上下文中存在相互矛盾的信息,使模型难以抉择和生成一致的回答。
解决方案:上下文工程四大支柱
通过系统化的策略,我们可以精巧地管理上下文,让智能体在每个决策步骤都拥有最恰当的信息。
写入 Write
将上下文“存档”
将信息保存到上下文窗口之外,以备后续使用,避免当前窗口拥挤。
暂存器 (Scratchpads)
在单次任务会话中记录中间思考、计划或结果,就像人的草稿纸。
LLM Context
会话内状态/文件
长期记忆 (Memories)
跨越多个会话,沉淀和反思经验,形成持久的知识,如 ChatGPT 的记忆功能。
LLM Context
跨会话记忆库
选择 Select
精准“调取”信息
在需要时,从外部存储中检索最相关的信息,注入到当前上下文窗口。
按需检索
通过 RAG 等技术,从海量知识库、记忆库或工具集中,根据当前任务语义,精确匹配并提取所需上下文。
从知识库/记忆检索相关事实
从工具库检索适用工具
记忆类型
不同类型的记忆服务于不同目的。
类型 | 存储内容 | 智能体示例 |
---|---|---|
语义记忆 | 事实 | 关于用户的偏好信息 |
情景记忆 | 经验 | 过去成功的操作序列 |
程序记忆 | 指令 | 核心系统提示或行为准则 |
压缩 Compress
精炼上下文“Token”
保留任务所需的核心信息,去除冗余,以更少的 Token 承载等效信息量。
上下文总结
使用 LLM 自身的能力,将冗长的对话历史或工具返回结果总结成简短的摘要。
长篇对话历史...工具输出...冗余信息...
摘要: 完成了用户认证,获取了文件列表。
上下文修剪
通过硬编码规则或训练模型,直接删除不相关或过时的信息,如删除旧的对话消息。
保留信息1
保留信息2
待修剪信息
隔离 Isolate
拆分上下文“空间”
将复杂的任务分解,让不同的上下文在独立的环境中处理,防止交叉干扰。
多智能体协作
将一个大任务分解为多个子任务,分配给拥有独立上下文窗口的专家智能体并行处理。
中央规划器
子智能体 A
(独立上下文)
(独立上下文)
子智能体 B
(独立上下文)
(独立上下文)
环境/沙箱隔离
将代码执行或重量级对象(如图像)置于沙箱环境中,仅将关键结果传回 LLM,保持主上下文轻量。
LLM Agent
沙箱环境
(执行代码/存对象)
(执行代码/存对象)