Prompt Engineering vs Context Engineering
很多人学到 Prompt Engineering 之后,会自然追问一句:那 Context Engineering 又是什么,它和 Prompt 到底差在哪里?
这篇笔记就是专门用来回答这个问题的。
1. 先看一句最简定义
Prompt Engineering:优化“怎么问”Context Engineering:优化“给模型什么信息去回答”
这两个方向紧密相关,但关注层级不一样。
2. 一个直观类比
假设你在给一个新同事 分配工作。
2.1 Prompt Engineering 像什么
像你写任务单时,尽量把话说清楚:
- 任务目标是什么
- 需要几个步骤
- 输出格式是什么
- 语气和风格如何
也就是“这件事你要怎么说”。
2.2 Context Engineering 像什么
像你在任务开始前,把这位同事完成工作所需的资料都准备好:
- 需求背景
- 历史讨论记录
- 相关文档
- 当前进度
- 工具权限
- 参考案例
也就是“这件事你要给他哪些材料和环境”。
3. 二者分别解决什么问题
3.1 Prompt Engineering 解决的问题
- 指令不清 楚
- 风格不稳定
- 输出格式不统一
- 任务边界模糊
- 模型不知道该按什么方式回答
3.2 Context Engineering 解决的问题
- 模型缺少必要信息
- 历史对话太长太乱
- 外部知识没有正确注入
- 工具结果没有被有效利用
- 长任务缺少状态延续
- 上下文里噪音太多
4. 典型关注点对比
| 维度 | Prompt Engineering | Context Engineering |
|---|---|---|
| 核心问题 | 怎么写 prompt | 怎么组织模型输入环境 |
| 关注对象 | 指令、示例、格式 | 历史、知识、工具、状态、记忆 |
| 典型技术 | Few-shot、CoT、Role Prompting | RAG、摘要、裁剪、记忆、状态管理 |
| 主要目标 | 让模型按预期回答 | 让模型拿到足够且相关的信息 |
| 常见失败原因 | 指令模糊、格式不清 | 信息缺失、噪音过多、顺序混乱 |
| 典型场景 | 单轮任务、输出控制 | 长任务、多轮对话、Agent 系统 |
5. 一个例子看差别
假设任务是“分析会议纪要并输出行动项”。
5.1 只做 Prompt Engineering
你可能会写:
请阅读下面的会议纪要,提取出待办事项,并按负责人、截止时间、优先级整理成表格。
这已经是一个不错的 prompt 了。
5.2 再加入 Context Engineering
你会额外组织这些信息:
系统规则:
你是项目管理助理,输出要准确、简洁。
当前任务:
从会议纪要中提取行动项。
用户偏好:
- 输出中文
- 优先使用 Markdown 表格
背景信息:
- 项目处于 beta 发布前一周
- 当前重点是修复高优先级 bug 和补文档
历史确认事项:
- 张三负责客户端
- 李四负责服务端
输入材料:
[会议纪要全文]
输出要求:
- 字段包括:事项、负责人、截止时间、优先级、备注
- 如果负责人不明确,标注“待确认”
区别在于,后者不是只优化了一句话,而是把整个输入环境搭好了。
6. 两者不是二选一,而是递进关系
实际系统里,通常不是“只做 Prompt”或者“只做 Context”,而是二者组合。
典型顺序往往是:
- 先用 Prompt Engineering 把任务说明写清楚
- 再用 Context Engineering 把真正有用的信息装配进去
可以理解成:
- Prompt 决定“模型怎么被要求工作”
- Context 决定“模型拿着什么材料工作”
7. 各自最常见的方法
7.1 Prompt Engineering 常见方法
Zero-shotFew-shotChain-of-ThoughtRole PromptingInstruction PromptingStructured Output
7.2 Context Engineering 常见方法
历史裁剪历史摘要RAG 检索增强工具结果注入状态维护长期记忆上下文优先级设计动态上下文装配
8. 学习顺序建议
如果你正在系统学习,我会建议按这个顺序来:
- 先学
Prompt Engineering - 再学
Structured Output - 再学
Few-shot和CoT - 然后开始学
Context Engineering - 接着学习
RAG、状态管理和工具调用 - 最后再进入 Agent 或复杂工作流设计
原因很简单:
- Prompt 是基础
- Context 是放大器
- Workflow 和 Agent 是更高层的系统设计
9. 一个常见误解
很多人会以为只要 prompt 写得够厉害,模型就一定会表现很好。
但在复杂场景里,更常见的现实是:
- prompt 已经不差了
- 问题出在模型没拿到该拿到的信息
- 或者拿到了太多无关信息
也就是说,很多“模型不聪明”的问题,本质上其实是“上下文没工程化好”。
10. 一张速记表
如果你只想快速记住区别,可以直接记下面这张表。
| 问题 | 更偏向哪个方向 |
|---|---|
| 这句话该怎么写得更清楚? | Prompt Engineering |
| 要不要给模型几个示例? | Prompt Engineering |
| 输出该怎么约束成 JSON? | Prompt Engineering |
| 哪些历史消息该保留? | Context Engineering |
| 要不要去知识库检索文档? | Context Engineering |
| 工具返回结果该怎么注入? | Context Engineering |
| 长任务如何保持连续性? | Context Engineering |
11. 一句话总结
Prompt Engineering 是把“话说对”,Context Engineering 是把“资料给对”。
前者让模型更知道“该怎么答”,后者让模型更有条件“答得好”。