上下文工程:AI 智能体架构落地的关键新技术 原创 精华

发布于 2025-7-10 09:49
浏览
0收藏

继 Vibe Coding(氛围编程) 火了之后,Andrej Karpathy 又带火了一个词:Context Engineering(上下文工程)。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

那么,上下文工程(Context Engineering)和提示词工程(Prompt Engineering)又有什么关联和区别?

提示词工程是通过巧妙设计指令(比如:“你是 X 领域专家,按 Z 方式做 Y”),让大模型精准理解任务。适合创意任务或一次性对话,使用对象是普通用户。

上下文工程则更深入,是构建大模型的“心智世界”,提供丰富背景,让大模型全面理解需求,使用对象是开发者,如下图所示包括:大模型能看到什么(文档、RAG、历史对话、示例、摘要)、怎么看(结构化还是杂乱的)、何时看(动态注入、静态固定、基于记忆)。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

在上下文工程只你要考虑的是 tokens,不只是指令:系统提示词、记忆槽、工具输出、历史窗口,都在其范畴内。

总之,上下文工程是 AI 智能体架构落地的关键新技术,下文详细剖析之。

一、AI 智能体架构中的上下文工程剖析

AI 智能体需要上下文来执行任务。上下文工程是一门艺术和科学,旨在在 AI 智能体的每一步中,通过上下文工程策略:写(Write)、选(Select)、压缩(Compress)和隔离(Isolate)将上下文窗口填充到刚刚好的信息量。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

1、什么是上下文工程?

正如 Andrej Karpathy 所说,大语言模型(LLM)就像一种新的操作系统。LLM 就像 CPU,而它的上下文窗口就像 RAM,作为大模型的工作记忆。就像  RAM 一样,LLM 的上下文窗口也有容量限制,无法处理各种来源的上下文。就像操作系统会管理哪些内容可以放入 CPU 的 RAM 中一样,我们可以将“上下文工程”视为类似的角色。Karpathy 很好地总结了这一点:

[上下文工程是]“……将上下文窗口填充到下一步所需信息的微妙艺术和科学。”

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

在构建 LLM 应用时,我们需要管理哪些类型的上下文?上下文工程是一个涵盖几种不同上下文类型的总称:

  • 指令:提示词、记忆、少量样本、工具描述等;
  • 知识:事实、记忆等;
  • 工具:工具调用的反馈。

2、AI 智能体架构中的上下文工程

今年,随着 LLM 在推理和工具调用方面变得更好,AI 智能体的热度急剧上升。AI 智能体会交替调用LLM 和工具,通常用于长期任务。它们利用工具反馈来决定下一步。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

然而,长期任务和工具调用的累积反馈意味着 AI 智能体经常使用大量的标记(tokens)。这可能会引发许多问题:它可能会超出上下文窗口的大小,增加成本/延迟,或者降低 AI 智能体的性能。上下文过长可能导致性能问题的几种具体方式,包括:

  • 上下文污染(Context Poisoning):当幻觉内容进入上下文时;
  • 上下文干扰(Context Distraction):当上下文压倒了训练内容时;
  • 上下文混淆(Context Confusion):当多余的上下文影响响应时;
  • 上下文冲突(Context Clash):当上下文中的部分内容相互矛盾时;

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

工具调用的上下文会在多个 AI 智能体回合中累积。鉴于此,上下文工程的重要性如下:

“上下文工程”……实际上是构建 AI 智能体的第一要务

Anthropic 也明确指出:

AI 智能体经常进行跨越数百个回合的对话,需要谨慎的上下文管理策略。

那么,在 AI 智能体企业级落地中是如何应对这一挑战的呢?我们将常见的 AI智能体上下文工程策略分为四类:写、选、压缩和隔离,下文继续剖析。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

3、上下文工程的四种策略剖析

3.1、写上下文(Write Context)

写上下文意味着将信息保存在上下文窗口之外,以帮助 AI 智能体执行任务,分为:便签处理和记忆处理两种方式。

第一、便签(Scratchpads)

当人类解决问题时,我们会做笔记并记住事情,以便用于未来的相关任务。AI 智能体也在获得这些能力!通过“便签”做笔记是一种在执行任务时持久化信息的方法。其想法是将信息保存在上下文窗口之外,以便 AI 智能体可以使用。Anthropic 的多智能体研究员举了一个清晰的例子:

主研究员首先思考方法,并将其计划保存到内存中以持久化上下文,因为如果上下文窗口超过200,000个标记,它将被截断,而保留计划非常重要。

便签(可以理解为短期记忆)可以通过几种不同的方式实现。它可以是一个工具调用,简单地将信息写入文件。它也可以是运行时状态对象中的一个字段,在会话期间持久化。无论哪种情况,便签都允许智能代理保存有用的信息,以帮助它们完成任务。

第二、记忆(Memories)

便签有助于 AI 智能体在给定会话(或线程)内解决任务,但有时 AI 智能体从多个会话中记住事情也会受益!可以引入了在每个 AI 智能体回合后进行反思并重用这些自动生成的记忆的方法。生成式 AI 智能体会定期从过去的 AI 智能体反馈中合成记忆。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

这些概念已经被 ChatGPT、Cursor 和 Windsurf 等流行产品采用,它们都有机制根据用户与 AI 智能体的互动自动生成长期记忆,这些记忆可以在会话之间持久化。

3.2、选上下文(Select Context)

选上下文意味着将上下文拉入上下文窗口,以帮助 AI 智能体执行任务,分为:便签处理、记忆处理、工具处理、知识处理四种方式。

第一、便签(Scratchpads)

从便签中选择上下文的机制取决于便签的实现方式。如果是工具,则 AI 智能体可以通过工具调用来读取它。如果是 AI 智能体的运行时状态的一部分,则开发人员可以选择在每一步将状态的哪些部分暴露给 AI 智能体。这为在后续回合中将便签上下文暴露给 LLM 提供了细粒度的控制。

第二、记忆(Memories)

如果 AI 智能体能够保存记忆,它们也需要能够选择与它们正在执行的任务相关的记忆。这可能有几个原因。AI 智能体可能会选择少量样本(情景记忆 episodic memories)作为期望行为的示例,指令(程序记忆 procedural memories)来引导行为,或者事实(语义记忆  semantic memories)作为任务相关的上下文。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

一个挑战是确保选择了相关记忆。一些流行的 AI 智能体简单地使用一组狭窄的文件,这些文件总是被拉入上下文。比如:许多代码 AI 智能体使用特定文件来保存指令(“程序”记忆),或者在某些情况下,示例(“情景”记忆)。Claude Code 使用 CLAUDE.md。Cursor 和 Windsurf 使用规则文件。

但是,如果 AI 智能体存储了大量事实和/或关系(比如:语义记忆),选择就更难了。ChatGPT 是一个很好的例子,它存储并从大量用户特定的记忆中选择。嵌入和/或知识图谱通常用于记忆索引,以协助选择。然而,记忆选择仍然是一个挑战。在 AIEngineer 世界博览会上,Simon Willison 分享了一个选择失败的例子:ChatGPT 从记忆中获取了他的位置,并意外地将其注入到请求的图像中。这种意外或不期望的记忆检索可能会让一些用户觉得上下文窗口“不再属于他们”!

第三、工具(Tools)

AI 智能体使用工具,但如果提供过多工具,它们可能会不堪重负。这通常是因为工具描述重叠,导致大模型对使用哪个工具感到困惑。一种方法《​​​RAG-MCP 新架构设计解决大模型提示词膨胀的工具选择问题​​》是将 RAG (检索增强生成)应用于工具描述,以便只为任务获取最相关的工具。一些最近的论文表明,这可以将工具选择的准确性提高3倍。

第四、知识(Knowledge)

RAG 是一个丰富的话题,它可能是一个核心的上下文工程挑战。代码 AI 智能体是大规模生产中 RAG 的最佳例子之一。Windsurf 的 Varun 很好地捕捉了其中的一些挑战:

索引代码≠上下文检索……[我们正在做索引和嵌入搜索……[通过] AST 解析代码并在语义上有意义的边界进行分块……随着代码库规模的增大,嵌入搜索作为检索启发式方法变得不可靠……我们必须依赖于多种技术的组合,比如:grep/文件搜索、基于知识图谱的检索,以及……一个重新排序步骤,其中[上下文]按相关性顺序排列。

在 LangGraph AI 智能体的每个节点(步骤)中,你可以获取状态。这让你可以精细控制在 AI 智能体的每一步中向 LLM 展示哪些上下文。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

此外,LangGraph 的长期记忆在每个节点中都是可访问的,并支持各种类型的检索(比如:获取文件以及基于嵌入的对记忆集合的检索)。

3.3、压缩上下文(Compressing Context)

压缩上下文涉及仅保留执行任务所需的 tokens,分为:上下文摘要、上下文修剪两种方式。

第一、上下文摘要(Context Summarization)

AI 智能体的交互可能跨越数百个回合,并使用 token 密集型的工具调用。摘要是管理这些挑战的一种常见方法。如果你使用过 Claude Code,你已经看到了它的实际应用。Claude Code 在你超过上下文窗口的95%后运行“自动压缩”,它将总结用户与 AI 智能体的完整轨迹。这种跨越 AI 智能体轨迹的压缩可以使用递归或分层总结等各种策略。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

摘要是 AI 智能体设计的一个关键技术。它可以用于后处理某些工具调用(比如:token 密集型搜索工具)。作为第二个例子:在 AI 智能体与 AI 智能体的边界进行总结,以减少知识传递期间的 tokens。如果需要捕获特定事件或决策,摘要可能会是一个挑战。可以使用了一个微调模型来完成这一步,这突显了这一步骤可能需要多少工作。

第二、上下文修剪(Context Trimming)

与摘要通常使用 LLM 提炼最相关的上下文片段不同,修剪通常可以过滤或者可以使用硬编码的启发式方法,比如:从列表中移除较旧的消息,上下文修剪往往使用规则,相对比较简单和好落地。

3.4、隔离上下文(Isolating Context)

隔离上下文涉及将其拆分,以帮助 AI 智能体执行任务,分为:多 AI 智能体、使用环境隔离上下文、状态等三种方式。

第一、多 AI 智能体(Multi-agent)

隔离上下文的最流行方法之一是将其拆分到子 AI 智能体中。OpenAI Swarm 库的一个动机是分离关注点,一个 AI 智能体团队可以处理特定的子任务。每个 AI 智能体都有特定的工具集、指令和自己的上下文窗口。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

Anthropic 的多智能体研究员为这种方法提供了依据:具有隔离上下文的多个 AI 智能体通常优于单个 AI 智能体,主要是因为每个子 AI 智能体的上下文窗口可以分配给更狭窄的子任务。正如博客所说:

[子 AI 智能体]并行运行,每个 AI 智能体都有自己的上下文窗口,同时探索问题的不同方面。

然而,多 AI 智能体的挑战包括 token 使用(比如:Anthropic 报告的比聊天多15倍的 tokens)、需要精心的提示词工程来规划子 AI 智能体的工作,以及子 AI 智能体的协调。

第二、使用环境隔离上下文(Context Isolation with Environments)

HuggingFace 的深度研究者展示了另一个有趣的上下文隔离例子。大多数 AI 智能体使用工具调用 API,这些 API 返回 JSON 对象(工具参数),可以传递给工具(比如:搜索 API)以获取工具反馈(比如:搜索结果)。HuggingFace 使用了一个 CodeAgent,它输出包含所需工具调用的内容。然后代码在沙箱中运行。从工具调用中选择的上下文(比如:返回值)然后被传递回 LLM。

上下文工程:AI 智能体架构落地的关键新技术-AI.x社区

沙箱可以将上下文从 LLM 中隔离出来。这允许上下文在环境中被隔离。Hugging Face 指出,这是一种隔离 token 密集型对象的好方法:

[代码 AI 智能体允许]更好地处理状态……需要稍后使用这个图像/音频/其他吗?没问题,只需将其作为变量分配到你的状态中,你就可以[稍后使用它]。

第三、状态(State)

值得注意的是,AI 智能体的运行时状态对象(State Object)也可以是一个很好的上下文隔离方式。它可以起到沙箱的作用。状态对象可以设计成具有可以写入上下文的字段的模式。模式的一个字段(例如,消息)可以在 AI 智能体的每个回合中暴露给 LLM,但模式可以将其他字段中的信息隔离起来,以便更有选择性地使用。

上下文工程正在成为一种 AI 智能体构建者应该努力掌握的关键技术。在这里,我们涵盖了一些在当今许多流行 AI 智能体中看到的常见模式:

  • 写上下文:将上下文保存在上下文窗口之外,以帮助 AI 智能体执行任务。
  • 选上下文:将上下文拉入上下文窗口,以帮助 AI 智能体执行任务。
  • 压缩上下文:仅保留执行任务所需的 tokens。
  • 隔离上下文:将其拆分,以帮助 AI 智能体执行任务。


本文转载自​玄姐聊AGI​  作者:玄姐

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
相关推荐