Skip to content

智能体的上下文工程(Context Engineering)

Context Engineering for Agents

简而言之,上下文工程(context engineering)是一门艺术,也是一门科学:在正确的时间,以正确的格式,把正确的信息传递给你的 LLM。

以下是 Andrej Karpathy 关于上下文工程的一段话……

context engineering p150 1

要理解上下文工程,首先要弄清楚「上下文」(context)本身的含义。

如今的智能体(Agent),早已演变成远不止聊天机器人的存在。

下图总结了一个智能体要正常运作所需要的 6 种上下文类型,分别是:

context engineering p151 1

  • 指令
  • 示例
  • 知识
  • 记忆
  • 工具
  • 护栏

这说明,仅仅对智能体进行「提示」(prompt)是不够的。

你必须对输入(也就是上下文)进行工程化处理。

不妨这样理解:

context engineering p152 1

  • 如果说 LLM 是 CPU,
  • 那么上下文窗口(context window)就是 RAM。

你实际上是在用最合适的指令,为你的 AI「编程」这块「RAM」。

我们该如何做到这一点?

上下文工程可以拆解为 4 个基本阶段:

context engineering p153 1

  • 书写上下文
  • 选择上下文
  • 压缩上下文
  • 隔离上下文

接下来,我们逐一来理解这几个阶段……

1)书写上下文(Writing Context)

书写上下文,指的是把信息保存到上下文窗口之外,从而帮助智能体完成任务。

context engineering p154 1

你可以把它写入以下几种地方:

  • 长期记忆(跨会话持续保存)
  • 短期记忆(仅在单次会话内保存)
  • 一个状态对象(state object)

2)读取上下文(Read Context)

读取上下文,指的是把信息拉取进上下文窗口,从而帮助智能体完成任务。

context engineering p154 2

这些上下文信息可以从以下来源中拉取:

  • 某个工具(tool)
  • 记忆
  • 知识库(文档、向量数据库)

3)压缩上下文(Compressing Context)

压缩上下文,指的是只保留完成任务所必需的 token。

context engineering p155 1

检索得到的上下文中,可能含有重复或冗余的信息(例如多轮工具调用产生的内容),这会带来额外的 token 消耗,增加成本。

上下文摘要(summarization)在这里能派上用场。

4)隔离上下文(Isolating Context)

隔离上下文,指的是把上下文拆分开来,从而帮助智能体完成任务。

context engineering p155 2

常见的做法包括:

  • 使用多个智能体(或子智能体),每个都拥有各自独立的上下文
  • 使用沙箱(sandbox)环境来存储和执行代码
  • 以及使用一个状态对象

所以从本质上说,当你在搭建一套上下文工程工作流时,你其实是在设计一条「上下文」流水线,好让 LLM 能够在正确的时间、以正确的格式,看到正确的信息。

这正是上下文工程运作的方式!

本站内容仅供学习交流,版权归原作者所有。