
超越提示词:深入理解 AI 应用成功的关键--上下文工程 原创
核心观点: 大多数 AI 智能体的失败,其根源不在于模型本身的能力不足,而在于“上下文工程”(Context Engineering)的缺失。
“上下文工程”这个概念近期在 AI 大模型领域迅速升温,它究竟是新瓶装旧酒,还是真正揭示了构建强大AI应用的核心秘诀?它与我们熟知的提示工程(Prompt Engineering)和检索增强生成(RAG)有何不同?
本文将深入探讨上下文工程的“是什么”、“为什么”以及“如何做”,为你揭示其在构建鲁棒、可扩展的AI应用中的关键作用。
下文详细剖析之。
一、什么是上下文工程?
要理解上下文工程,首先要明白什么是“上下文”。
1、上下文的真正含义
上下文不是简单的历史聊天记录。它是提供给大语言模型(LLM)用于完成下一步任务的全部信息集合。我们可以将其分为三类:
- 指导性上下文 (Guiding Context):告诉模型“做什么”和“怎么做”。这部分是提示工程的核心优化对象。
a.系统提示词 (System Prompt): 定义模型的角色和行为准则。
b.任务描述 (Task Description): 明确当前需要完成的任务。
c.少量样本示例 (Few-shot Examples): 提供范例,指导模型输出风格。
d.输出格式定义 (Output Schema): 规定模型必须遵循的输出格式,如JSON。
- 信息性上下文 (Informational Context):告诉模型“需要知道什么”。这部分为模型提供解决问题所需的事实和知识。
a.RAG: 从外部知识库(比如:文档、数据库)中检索相关信息。
b.记忆 (Memory): 包括当前对话的短期记忆和跨对话的长期记忆(比如:用户偏好)。
c.状态/草稿纸 (State / Scratchpad): 记录模型在任务过程中的中间思考和计划。
- 行动性上下文 (Actionable Context):告诉模型“能做什么”和“做了之后的结果”。这部分赋予模型与外部世界交互的能力。
a.工具定义 (Tool Definition): 描述模型可以使用的工具(API、函数等)。
b.工具调用记录 (Tool Traces): 记录模型调用了哪些工具以及返回了什么结果。
2、上下文工程的定义
基于以上分类,我们可以这样定义上下文工程:
上下文工程是一门系统性学科,专注于设计、构建并维护一个动态系统。该系统能在 AI 智能体执行任务的每一步,为其智能地组装出最优的上下文组合,从而确保任务能够被可靠、高效地完成。
一个绝佳的类比是,如果 LLM 是计算机的 CPU,那么上下文窗口(Context Window)就是内存(RAM)。上下文工程就是这个系统中的“内存管理器”。它的任务不是简单地把信息塞满内存,而是通过精密的调度,决定在每个时刻加载什么、丢弃什么,以保证 CPU 高效运转,最终产出正确结果。
3、与提示工程、RAG 的区别
- 提示词工程 (Prompt Engineering):是上下文工程的子集,专注于优化“指导性上下文”,即如何下达清晰的指令。
- RAG (Retrieval-Augmented Generation):是实现上下文工程的关键技术手段之一,主要负责动态填充“信息性上下文”。
因此,上下文工程是一个更宏大、更系统的概念,它统筹管理所有类型的上下文,目标是构建一个最高效的信息供给系统。
二、为什么我们需要上下文工程?
当 AI 系统的表现不佳时,我们往往会怪罪于模型本身。但大多数情况下,问题出在上下文的供给上。
1、示例1:缺失上下文的代价
假设 AI 智能体收到邮件:“Hi, 明天有空聚一下吗?”
- 上下文贫乏的 AI:"感谢您的消息。我明天有空。请问您希望约在什么时间?" (无效回复,未推进任务)
- 上下文丰富的 AI:在回复前,它的上下文工程系统会自动组装信息:
- 信息性上下文:检索日历发现明天已满;识别发件人 Jim 是重要伙伴;分析历史邮件确定应使用非正式语气。
- 行动性上下文:知道自己有
send_calendar_invite
这个工具。 - 最终回复:"Hi Jim! 我明天日程完全满了。周四上午有空,你看方便吗?我发了一个暂定邀请,如果时间合适请确认。" (高效、智能)
这里的“魔力”并非来自更聪明的模型,而是来自一个能够为任务动态组装恰当上下文的系统。
2、示例2:上下文退化的挑战
既然上下文如此重要,是不是把它全部塞给模型就行了?答案是否定的。对于长期、复杂的任务(比如:编程),简单的信息累加会导致“上下文退化”:
图片
第一、性能下降: 无关紧要的旧信息会干扰当前任务,造成“上下文干扰”。
第二、成本与延迟激增: 上下文越长,API 调用成本越高,响应越慢。
第三、最终崩溃: 当信息量超过模型的上下文窗口上限时,系统将直接报错或因信息截断而出错。
结论: 上下文是一种需要被主动管理的、有限的资源。简单的缺失或无脑的堆砌都无法构建出强大的 AI 智能体应用。因此,我们需要一套系统性的方法论——上下文工程。
三、如何实践上下文工程?
上下文工程的实践核心在于对上下文进行智能的写入(Write)、选取(Select)、压缩(Compress)和隔离(Isolate)。
1. 写入 (Write): 将有价值的信息持久化,超越单次对话的限制。
- 会话内写入:将中间思考和计划写入“草稿纸”,供当前任务使用。
- 持久化写入:将用户偏好、关键事实等存入外部记忆系统(比如:向量数据库),实现跨会话的“学习”和“成长”。
2. 选取 (Select): 在每次调用 LLM 前,从所有可用信息中,动态拉取与当前子任务最相关的信息。
- 确定性选取:根据预设规则加载固定上下文(比如:启动时加载项目配置文件)。
- 检索式选取:通过相似度搜索从知识库、记忆中拉取最相关的信息(RAG 的核心)。
3. 压缩 (Compress): 在信息进入上下文窗口前,对其进行“降噪”,用更少的 Token 承载最核心的信号。
- 自动总结:当上下文过长时,自动总结历史对话,只保留关键部分。
- 专用压缩模型:使用一个专门微调过的“压缩 LLM ”来对上下文进行提炼。
- 修剪策略:例如,直接截断最早的历史记录。
4. 隔离 (Isolate): 在系统架构层面设置信息边界,防止信息污染和干扰。
- 多智能体架构:这是最经典的隔离策略。让多个“专家”子智能体并行处理各自领域的信息,然后只将最关键的结论“压缩”并上报给主智能体。这极大地减轻了主智能体的认知负担,提高了信息密度,避免了长上下文带来的各种问题。
- 工具调用:将复杂的计算或操作隔离在沙盒环境中执行,只将最终结果返回到上下文中。
四、上下文工程总结
上下文工程标志着 AI 智能体应用开发的范式转变。我们的重心正从“寻找那句完美的提示词”,转向“如何设计一个能够为模型在每一步都动态组装出完美上下文的、健壮可靠的系统”。
理解并熟练运用写入、选取、压缩、隔离这四大实践,将是区分一个“有趣的演示”和一个“可靠的、可规模化的应用”的关键。归根结底,所有努力都指向同一个目标:在模型做出决策前,为它准备好一份恰到好处的上下文。这,就是上下文工程的禅意所在。
好了,这就是我今天想分享的内容。
本文转载自玄姐聊AGI 作者:玄姐
