上下文工程的兴起:为什么它是 AI 工程师最重要的技能
LangChain 创始人 Harrison Chase 发表文章《The rise of "context engineering"》,提出上下文工程(context engineering)正在成为 AI 工程师最重要的技能。文章将上下文工程定义为:构建动态系统,以正确的格式提供正确的信息和工具,使 LLM 能够合理地完成任务。大多数时候,当 Agent 表现不可靠时,根本原因是没有向模型传达适当的上下文、指令和工具。
什么是上下文工程
Harrison Chase 给出的定义建立在 Tobi Lutke、Ankur Goyal 和 Walden Yan 等人近期观点的基础上:
上下文工程是构建动态系统,以正确的格式提供正确的信息和工具,使 LLM 能够合理地完成任务。
让我们拆解这个定义:
1. 它是一个系统
复杂 Agent 的上下文可能来自多个来源:应用开发者、用户、之前的交互、工具调用、其他外部数据。将这些整合在一起涉及一个复杂的系统。
2. 它是动态的
许多上下文是动态传入的。因此,构建最终提示词的逻辑也需要是动态的——它不仅仅是一个静态提示词。
3. 你需要正确的信息
Agent 系统表现不佳的一个常见原因是它们根本没有正确的信息。这可能是因为:
- 检索系统没有返回相关文档
- 工具没有暴露必要的功能
- 历史上下文没有正确传递
- 系统提示词没有包含关键指令
4. 你需要正确的格式
即使有了正确的信息,如果格式不对,LLM 也可能无法有效使用。这包括:
- 信息的组织方式
- 指令的清晰程度
- 工具描述的准确性
- 输出格式的规范
为什么上下文工程变得重要
LLM 应用的演进
LLM 应用正在从单一提示词演进到更复杂、动态的 Agent 系统:
- 第一代:静态提示词 + 单次 LLM 调用
- 第二代:提示词模板 + 检索增强生成(RAG)
- 第三代:多步骤 Agent + 工具调用 + 动态上下文
随着应用变得更复杂,上下文工程的重要性也在增加。
模型能力 vs 上下文质量
Harrison Chase 指出,大多数时候 Agent 表现不可靠,不是因为模型能力不足,而是因为上下文没有正确传达。这意味着:
- 更好的模型不一定能解决上下文问题
- 改进上下文通常比换模型更有效
- 上下文工程是可以学习和系统化的技能
- 上下文质量是 Agent 性能的主要瓶颈
上下文工程的核心组件
1. 系统提示词
系统提示词定义了 Agent 的角色、目标、约束和行为准则。好的系统提示词应该:
- 清晰定义 Agent 的角色和能力边界
- 明确任务目标和成功标准
- 列出必须遵守的约束和规则
- 提供输出格式的规范
- 包含处理异常情况的指导
2. 检索系统
检索系统负责从外部数据源获取相关信息。关键设计决策包括:
- 选择合适的检索方法(关键词、语义、混合)
- 设计文档分块策略
- 优化检索结果的排序和过滤
- 处理多轮对话中的上下文检索
- 管理检索结果的时效性
3. 工具定义
工具是 Agent 与外部世界交互的接口。好的工具定义应该:
- 清晰描述工具的功能和用途
- 准确定义输入参数的类型和含义
- 说明工具的局限性和边界情况
- 提供使用示例
- 处理工具调用失败的情况
4. 对话历史管理
对话历史是多轮对话中上下文的重要组成部分。关键问题包括:
- 保留多少历史记录
- 如何压缩和摘要历史
- 如何处理长对话中的上下文窗口限制
- 如何区分重要信息和噪声
- 如何管理用户隐私和敏感信息
5. 动态上下文构建
最终的提示词是动态构建的,整合了所有上下文来源。这需要:
- 优先级排序:哪些上下文最重要
- 上下文窗口管理:在有限的窗口内容纳最多信息
- 条件逻辑:根据情况包含或排除某些上下文
- 格式标准化:确保所有上下文格式一致
- 错误处理:处理上下文来源不可用的情况
上下文工程的最佳实践
1. 从简单开始,逐步复杂化
不要一开始就设计最复杂的上下文系统。从简单的静态提示词开始,验证基本功能,然后逐步添加检索、工具、动态上下文等组件。
2. 测量和迭代
上下文工程是一个迭代过程。你需要:
- 定义衡量 Agent 性能的指标
- 收集失败案例和边缘情况
- 分析失败的根本原因
- 针对性地改进上下文
- 验证改进效果
3. 使用可观测性工具
LangSmith 等可观测性工具对上下文工程至关重要:
- 查看最终发送给 LLM 的完整提示词
- 追踪上下文的来源和构建过程
- 识别哪些上下文对输出影响最大
- 比较不同上下文配置的效果
- 调试上下文相关的失败
4. 建立上下文测试套件
像测试代码一样测试上下文:
- 定义代表性的测试用例
- 自动化运行测试并评估结果
- 在更改上下文时进行回归测试
- 建立性能基准和目标
- 持续监控生产环境中的性能
5. 文档化上下文设计决策
上下文设计决策应该被文档化:
- 为什么选择这种检索策略
- 为什么包含这些工具
- 为什么这样组织提示词
- 已知的局限性和边缘情况
- 未来的改进方向
上下文工程 vs 提示词工程
| 维度 | 提示词工程 | 上下文工程 |
|---|---|---|
| 范围 | 单一提示词 | 整个上下文系统 |
| 动态性 | 主要是静态的 | 高度动态的 |
| 组件 | 提示词文本 | 提示词、检索、工具、历史、动态构建 |
| 复杂度 | 较低 | 较高 |
| 适用场景 | 简单 LLM 应用 | 复杂 Agent 系统 |
| 技能要求 | 文案和沟通能力 | 系统设计和工程能力 |
提示词工程是上下文工程的一个子集。随着 LLM 应用变得更复杂,上下文工程正在取代提示词工程成为核心技能。
总结
上下文工程是 AI 工程领域正在兴起的核心技能。它不仅仅是写好提示词,而是构建完整的动态系统,确保 LLM 在正确的时间获得正确的信息和工具。Harrison Chase 指出,大多数 Agent 性能问题的根本原因不是模型能力不足,而是上下文没有正确传达。随着 LLM 应用从单一提示词演进到复杂 Agent 系统,上下文工程将成为 AI 工程师最重要的技能。掌握上下文工程需要系统设计能力、迭代优化方法和可观测性工具的支持。
来源:https://www.langchain.com/blog/the-rise-of-context-engineering