上下文工程
- 智能体需要上下文(例如,指令、外部知识、工具反馈)来执行任务。
上下文工程是一门艺术和科学,它在代理轨迹的每一步中,用最恰当的信息填充上下文窗口。
- 常见策略:
- 写入上下文 - 将其保存在上下文窗口之外,以帮助代理执行任务。
- 选择上下文 - 将其拉入上下文窗口,以帮助代理执行任务。
- 压缩上下文 - 只保留执行任务所需的令牌。
- 隔离上下文 - 将其拆分以帮助代理执行任务。
LangGraph 旨在支持这些策略。
上下文工程定义
https://x.com/tobi/status/1935533422589399127
https://x.com/karpathy/status/1937902205765607626
Harrison Chase The rise of “context engineering”
定义
“上下文工程是‘……为下一步用最恰当的信息填充上下文窗口的精妙艺术和科学。’”
类比
Karpathy:LLM 是一种新型操作系统
LLM 是 CPU
上下文窗口是 RAM 或“工作内存”,其处理上下文的能力有限
管理什么信息适合 RAM 类似于上面提到的“上下文工程”
上下文类型
一个涵盖几种不同类型上下文的伞形学科:
指令 – 提示、记忆、少样本示例、工具描述等
知识 – 事实、记忆等
工具 – 工具调用反馈
为什么这对智能体来说更难
长期运行的任务和累积工具调用反馈
智能体通常会使用大量令牌!
Drew Breunig 很好地罗列了更长上下文的导致的失败问题:
- 上下文中毒(Context Poisoning):幻觉内容添加到上下文
- 上下文干扰(Context Distraction):上下文信息过多导致淹没模型训练内容
- 上下文混淆(Context Confusion):多余的上下文影响响应时
= 上下文冲突(Context Clash):上下文的某些部分不一致
上下文工程在构建智能体时至关重要!
Cognition Cognition | Don’t Build Multi-Agents
Context Engineering is effectively the #1 job of engineers building AI agents.
上下文工程实际上是构建 AI 代理的工程师的头号任务。
方法
- 上下文写入意味着将其保存在上下文窗口之外,以帮助代理执行任务。
- 上下文选择意味着将其拉入上下文窗口,以帮助代理执行任务。
- 上下文压缩涉及只保留执行任务所需的token。
- 上下文隔离涉及将上下文拆分以帮助代理执行任务。
写入
- 上下文写入意味着将其保存在上下文窗口之外,以帮助代理执行任务。
- 当人类解决任务时,我们会做笔记并记住未来的相关任务。
- 笔记 → 暂存区
- 记住 → 记忆
暂存区
- 在代理执行任务时保留信息
- Anthropic 的 multi-agent researcher
LeadResearcher 首先思考方案并将其计划方案保存到记忆中以保留上下文,因为如果上下文窗口超过 200,000 个令牌,它将被截断,并且保留计划很重要。
使用运行时状态 state 对象或文件。
记忆
选择
- 上下文选择指的是将其拉入上下文窗口以帮助代理执行任务。
暂存区
- 工具调用
- 从状态读取
记忆
- 少样本示例(情景记忆 (episodic memories))用于所需行为的示例
- 指令(程序记忆 ( procedural memories) )用于引导行为
- 事实(语义记忆 (semantic memories)
- 指令 → 规则文件 / CLAUDE.md
- 事实 → 集合
工具
- 基于工具描述的 RAG:最近的论文表明这可以提高3倍的选择效率。
知识
- RAG 是一个大话题
- 代码智能体一些大型 RAG 应用程序
https://x.com/_mohansolo/status/1899630246862966837
压缩
- 上下文压缩涉及只保留执行任务所需的token。
总结
- Claude Code “自动压缩” Anthropic Manage costs effectively
- 已完成的工作区 Anthropic AI: How we built our multi-agent research system
将上下文传递给线性子代理 Cognition | Don’t Build Multi-Agents
修剪
- 启发式:最近的消息
- 学习
Provence: efficient and robust context pruning for retrieval-augmented generation](https://arxiv.org/abs/2501.16214)
隔离
- 上下文隔离指的是将其拆分以帮助代理执行任务。
多智能体
- Swarm “关注点分离”原则,每个智能体都有自己的上下文
- Anthropic AI: How we built our multi-agent research system
[Subagents operate] in parallel with their own context windows, exploring different aspects of the question simultaneously.
[子智能体]在各自的上下文窗口中并行运行,,同时探索问题的不同方面。
环境
huggingface Open-source DeepResearch – Freeing our search agents
状态 State
上下文工程 + LangGraph
Tracing + Eval (链路追踪和评估)
写入
暂存区
- 检查点机制(Checkpointing)以在会话中保留智能体状态
记忆
- 长期记忆以在多个会话中保留上下文
选择
暂存区
- 在任何节点中检索状态 State
记忆
- 在任何节点中检索长期记忆
- deeplearningai_ Long-Term Agentic Memory with LangGraph
- LangChain Academy Building Ambient Agents with LangGraph
工具
知识
压缩
总结 + 修剪
- 总结、修剪消息历史:https://langchain-ai.github.io/langgraph/how-tos/memory/add-memory/#manage-short-term-memory
- 低级框架,提供了在节点内定义逻辑的灵活性
隔离
多智能体
- langgraph-swarm-py
- LangChain Conceptual Guide: Multi Agent Architectures
- LangChain Multi-agent swarms with LangGraph
- LangChain Hierarchical multi-agent systems with LangGraph
环境
状态
状态对象(State object): Overview Define graph schema
总结
- 上下文写入意味着将其保存在上下文窗口之外,以帮助代理执行任务。
- 上下文选择意味着将其拉入上下文窗口,以帮助代理执行任务。
- 上下文压缩涉及只保留执行任务所需的令牌。
- 上下文隔离涉及将其拆分以帮助代理执行任务。