外观
智能体的上下文工程(Context Engineering)
Context Engineering for Agents
简而言之,上下文工程(context engineering)是一门艺术,也是一门科学:在正确的时间,以正确的格式,把正确的信息传递给你的 LLM。
以下是 Andrej Karpathy 关于上下文工程的一段话……

要理解上下文工程,首先要弄清楚「上下文」(context)本身的含义。
如今的智能体(Agent),早已演变成远不止聊天机器人的存在。
下图总结了一个智能体要正常运作所需要的 6 种上下文类型,分别是:

- 指令
- 示例
- 知识
- 记忆
- 工具
- 护栏
这说明,仅仅对智能体进行「提示」(prompt)是不够的。
你必须对输入(也就是上下文)进行工程化处理。
不妨这样理解:

- 如果说 LLM 是 CPU,
- 那么上下文窗口(context window)就是 RAM。
你实际上是在用最合适的指令,为你的 AI「编程」这块「RAM」。
我们该如何做到这一点?
上下文工程可以拆解为 4 个基本阶段:

- 书写上下文
- 选择上下文
- 压缩上下文
- 隔离上下文
接下来,我们逐一来理解这几个阶段……
1)书写上下文(Writing Context)
书写上下文,指的是把信息保存到上下文窗口之外,从而帮助智能体完成任务。

你可以把它写入以下几种地方:
- 长期记忆(跨会话持续保存)
- 短期记忆(仅在单次会话内保存)
- 一个状态对象(state object)
2)读取上下文(Read Context)
读取上下文,指的是把信息拉取进上下文窗口,从而帮助智能体完成任务。

这些上下文信息可以从以下来源中拉取:
- 某个工具(tool)
- 记忆
- 知识库(文档、向量数据库)
3)压缩上下文(Compressing Context)
压缩上下文,指的是只保留完成任务所必需的 token。

检索得到的上下文中,可能含有重复或冗余的信息(例如多轮工具调用产生的内容),这会带来额外的 token 消耗,增加成本。
上下文摘要(summarization)在这里能派上用场。
4)隔离上下文(Isolating Context)
隔离上下文,指的是把上下文拆分开来,从而帮助智能体完成任务。

常见的做法包括:
- 使用多个智能体(或子智能体),每个都拥有各自独立的上下文
- 使用沙箱(sandbox)环境来存储和执行代码
- 以及使用一个状态对象
所以从本质上说,当你在搭建一套上下文工程工作流时,你其实是在设计一条「上下文」流水线,好让 LLM 能够在正确的时间、以正确的格式,看到正确的信息。
这正是上下文工程运作的方式!