跳到主要内容

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 EngineeringContext Engineering
核心问题怎么写 prompt怎么组织模型输入环境
关注对象指令、示例、格式历史、知识、工具、状态、记忆
典型技术Few-shot、CoT、Role PromptingRAG、摘要、裁剪、记忆、状态管理
主要目标让模型按预期回答让模型拿到足够且相关的信息
常见失败原因指令模糊、格式不清信息缺失、噪音过多、顺序混乱
典型场景单轮任务、输出控制长任务、多轮对话、Agent 系统

5. 一个例子看差别

假设任务是“分析会议纪要并输出行动项”。

5.1 只做 Prompt Engineering

你可能会写:

请阅读下面的会议纪要,提取出待办事项,并按负责人、截止时间、优先级整理成表格。

这已经是一个不错的 prompt 了。

5.2 再加入 Context Engineering

你会额外组织这些信息:

系统规则:
你是项目管理助理,输出要准确、简洁。

当前任务:
从会议纪要中提取行动项。

用户偏好:
- 输出中文
- 优先使用 Markdown 表格

背景信息:
- 项目处于 beta 发布前一周
- 当前重点是修复高优先级 bug 和补文档

历史确认事项:
- 张三负责客户端
- 李四负责服务端

输入材料:
[会议纪要全文]

输出要求:
- 字段包括:事项、负责人、截止时间、优先级、备注
- 如果负责人不明确,标注“待确认”

区别在于,后者不是只优化了一句话,而是把整个输入环境搭好了。

6. 两者不是二选一,而是递进关系

实际系统里,通常不是“只做 Prompt”或者“只做 Context”,而是二者组合。

典型顺序往往是:

  1. 先用 Prompt Engineering 把任务说明写清楚
  2. 再用 Context Engineering 把真正有用的信息装配进去

可以理解成:

  • Prompt 决定“模型怎么被要求工作”
  • Context 决定“模型拿着什么材料工作”

7. 各自最常见的方法

7.1 Prompt Engineering 常见方法

  • Zero-shot
  • Few-shot
  • Chain-of-Thought
  • Role Prompting
  • Instruction Prompting
  • Structured Output

7.2 Context Engineering 常见方法

  • 历史裁剪
  • 历史摘要
  • RAG 检索增强
  • 工具结果注入
  • 状态维护
  • 长期记忆
  • 上下文优先级设计
  • 动态上下文装配

8. 学习顺序建议

如果你正在系统学习,我会建议按这个顺序来:

  1. 先学 Prompt Engineering
  2. 再学 Structured Output
  3. 再学 Few-shotCoT
  4. 然后开始学 Context Engineering
  5. 接着学习 RAG、状态管理和工具调用
  6. 最后再进入 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 是把“资料给对”。

前者让模型更知道“该怎么答”,后者让模型更有条件“答得好”。