Context Engineering(上下文工程)是 AI Agent 成功的关键吗?

前段时间 OpenAI 的前研究员 Andrej Karpathy 提出一个新的名词:Context Engineering。他将 LLM 比作计算机的处理器(CPU),而其上下文窗口则相当于内存(RAM)。最近看到一篇发表在 langchain 博客里面的文章:Context Engineering(链接见文末),让我对这个概念的理解更加深刻。

上下文工程(Context Engineering)是构建和优化大型语言模型(LLM)驱动的 AI 智能体的一门关键技术。它被定义为"在智能体运行轨迹的每一步中,以恰到好处的信息填充上下文窗口的艺术与科学"。

上下文工程的重要性在于:

  • 提升推理能力:通过提供最相关、最简洁的信息,智能体能够更准确地理解任务、进行有效推理并生成高质量的响应。
  • 提高运行效率:优化上下文的使用可以减少不必要的计算,从而加速智能体的响应时间,并降低资源消耗。
  • 增强智能体鲁棒性:有效的上下文管理有助于避免信息过载或错误信息引起的故障,使智能体在复杂多变的环境中保持稳定表现。
  • 实现复杂任务:对于需要长期记忆、多步骤规划或与外部工具交互的复杂任务,上下文工程是确保智能体能够有效执行这些任务的基础。

上下文工程是"填充上下文窗口的艺术和科学,在代理轨迹的每一步都填充正确的信息"

Andrej Karpathy x.com/karpathy/st...

错误的 LLM 上下文对 Agent 的影响

当 LLM 的上下文管理不当时,可能会对 AI Agent 产生以下四种严重影响:

上下文中毒(Context Poisoning)

指当幻觉或其他错误信息进入 LLM 的上下文并被反复引用时。例如,一个 Agent 在执行任务时产生错误信息,这些错误信息被模型"记住"并持续影响后续的判断和决策,导致 Agent 固执于不可能或不相关的目标。

上下文干扰(Context Distraction)

发生在上下文过长,导致 LLM 过度关注上下文中的冗余信息,而忽略了其在训练中学到的核心知识。这使得 Agent 倾向于重复历史动作而非生成新的、更优的计划。对于上下文窗口较小的模型,这种干扰效应会更早出现。

上下文混乱(Context Confusion)

当上下文中的冗余内容被 LLM 用于生成低质量响应时。即使提供了大量工具描述,模型也可能因信息过载而性能下降,甚至尝试使用不相关的工具。LLM 会关注上下文中的所有内容,即使是无关信息,这会降低响应的准确性。

上下文冲突(Context Clash)

指上下文中新获取的信息或工具与现有信息发生直接冲突。例如,在多轮对话中分阶段提供信息,可能导致模型在早期轮次做出错误假设并过分依赖这些错误答案,从而显著降低最终性能。这种内部矛盾会使 Agent 的推理过程脱轨。

这些失败模式对 AI Agent 的影响尤为显著,因为 Agent 通常在需要收集多源信息、进行顺序工具调用、多轮推理和积累大量历史的复杂场景中运行,这些场景极易导致上下文膨胀,从而放大上述问题。

上下文工程策略

为了应对上下文管理不当的问题,文章中将上下文工程策略分为写入、选择、压缩和隔离四类。

1. 写入上下文(Write Context)

此策略旨在将信息保存于上下文窗口之外,以备未来使用。这包括两种主要形式:

  • 草稿本(Scratchpads) :用于存储会话内部的临时信息。这可以是在一个单一的交互过程中,智能体为了完成当前任务而需要临时记录的数据。
  • 记忆(Memories) :用于跨多个会话持久化信息。这些记忆可以是智能体自动生成或从过去的交互中综合提炼出来的,用于保留长期知识或个性化设置。

2. 选择上下文(Select Context)

此策略专注于将相关信息提取到当前的上下文窗口中。这涉及从以下来源进行选择:

  • 草稿本和记忆的检索:根据当前任务或用户查询,从已存储的草稿本或各种类型的记忆(如事件记忆、程序记忆、语义记忆)中检索最相关的信息。
  • 检索增强生成(RAG) :尤其在代码智能体中,RAG 被广泛应用于从工具描述和知识库中获取信息,确保智能体能够访问到其执行任务所需的外部知识。

3. 压缩上下文(Compressing Context)

此策略通过保留必要的 token 来优化上下文窗口的使用效率。它主要包含:

  • 上下文摘要(Context Summarization) :将冗长的智能体交互或工具输出浓缩成更简洁的形式,减少不必要的细节,突出关键信息。
  • 上下文修剪(Context Trimming) :通过过滤或剪枝技术(通常基于启发式规则),从上下文中移除不相关或冗余的 token。

4. 隔离上下文(Isolating Context)

此策略通过分离上下文来帮助智能体更有效地执行任务。这可以通过以下方式实现:

  • 多智能体架构(Multi-agent Architecture) :将任务分解给多个子智能体,每个子智能体处理其特定任务并拥有独立的上下文,避免不同任务的上下文相互干扰。
  • 环境(Environments) :使用沙箱等环境来隔离包含大量 token 的对象或状态,例如在执行复杂计算或访问敏感数据时,将这些操作限制在特定的、受控的环境中。

实践建议

虽然 Langchain 的博客中未详细展开,但上下文工程实践中建议:

  • 动态加载工具:根据任务需求动态加载和卸载工具,避免一次性加载过多工具导致上下文混乱。
  • 上下文隔离(Context Quarantines) :创建独立的上下文区域,用于处理特定类型的信息或执行特定子任务,防止信息交叉污染。
  • 监控与评估:建立完善的监控机制,追踪 LLM 的 token 使用情况、响应时间和成本,并对 Agent 的决策过程进行记录和评估,以便及时发现和解决上下文问题。
  • 逐步优化与场景化设计:针对最耗费 token 的部分进行优化,然后逐步优化关键信息的选择,最后考虑复杂的架构调整。同时,根据具体应用场景(如客服、营销、代码生成等)设计定制化的上下文管理策略。

总结

上下文工程(Context Engineering)是构建高效、智能、鲁棒 AI 智能体的核心要素。通过巧妙地写入、选择、压缩和隔离上下文,并充分理解上下文管理不当的潜在风险,我们可以最大限度地发挥 LLM 的潜力,使其在各种任务中表现出色。

对于 AI 智能体的开发者而言,掌握这些上下文工程技术是构建 AI Agent 的关键。

参考文献

相关推荐
用户3521802454751 小时前
MCP极简入门:node+idea运行简单的MCP服务和MCP客户端
node.js·ai编程
得帆云低代码2 小时前
什么是AI网关?AI网关如何为企业私有化部署筑防
openai
每天开心3 小时前
一文教你掌握事件机制
前端·javascript·ai编程
Georgewu3 小时前
【AI大模型入门指南】机器学习入门详解
aigc·openai
每天开心4 小时前
深入理解 CSS 选择器:从基础到高级
css·html·ai编程
kingchen6 小时前
稳定的Claude Code渠道,白嫖100刀
ai编程
量子位6 小时前
“英伟达显卡就是一坨 ”!博主 6000 字檄文怒批:烧接口、缺单元、驱动变砖还威胁媒体
ai编程
运器1236 小时前
【一起来学AI大模型】算法核心:数组/哈希表/树/排序/动态规划(LeetCode精练)
开发语言·人工智能·python·算法·ai·散列表·ai编程
量子位6 小时前
谁是余家辉?“年薪 1 亿美元”AI 研究员,中科大少年班天才,吴永辉的嫡系弟子
aigc·ai编程