上下文工程是一个比Prompt工程更广泛的概念,它涵盖了多轮对话中所有信息的组织和管理,而不仅仅是单次请求的提示词设计。
三者的核心区别
| 维度 | Prompt工程 | 普通上下文 | 上下文工程 |
|---|---|---|---|
| 范围 | 单次请求的输入设计 | 多轮对话的原始历史记录 | 整个对话生命周期 |
| 核心任务 | 设计System Prompt和User Message | 自动记录所有对话内容 | 主动管理、筛选、压缩、组织上下文 |
| 技术手段 | 提示词编写技巧 | 简单的历史记录拼接 | 记忆系统、向量检索、摘要压缩、优先级排序 |
| 目标 | 让模型理解单次任务 | 保持对话连贯性 | 优化长期记忆和推理能力 |
| 复杂度 | 相对简单 | 被动记录 | 复杂系统设计 |
具体解释
1. Prompt工程(单次优化)
本质:设计单次请求的输入格式,让模型更好地理解当前任务。
示例:
- System Prompt:"你是一个专业的翻译助手,将中文翻译成英文"
- User Message:"请翻译:今天天气真好"
特点:只关注当前这一轮对话的输入设计。
2. 普通上下文(被动记录)
本质:简单地将所有历史对话拼接起来,作为下一轮请求的输入。
示例:
用户:你好
AI:你好,有什么可以帮您?
用户:我想了解北京的天气
AI:北京今天晴,25°C
用户:那上海呢?
问题:随着对话轮次增加,上下文会越来越长,导致:
- 计算成本增加
- 模型可能遗忘早期重要信息
- 无关信息干扰模型判断
3. 上下文工程(主动管理)
本质:对多轮对话进行智能管理,包括:
核心技术:
- 记忆系统:将重要信息存入长期记忆,需要时提取
- 摘要压缩:将多轮对话压缩成关键要点
- 向量检索:根据当前问题检索相关历史信息
- 优先级排序:决定哪些信息应该保留在上下文窗口
示例场景:
用户:我想去北京旅游,有什么推荐?
AI:推荐故宫、长城、颐和园
用户:故宫门票多少钱?
AI:60元
用户:那长城呢?
AI:八达岭长城门票40元
用户:好的,我打算去故宫和长城,帮我规划一下路线
上下文工程处理:
- 提取关键信息:"用户想去北京旅游"、"推荐故宫和长城"、"故宫60元"、"长城40元"
- 压缩成摘要:"用户计划去北京旅游,选择故宫和长城,已了解门票价格"
- 当前请求时,将摘要+当前问题一起发送给模型
总结
Prompt工程 是"怎么写好当前这一句话",普通上下文 是"把所有历史对话都记下来",而上下文工程是"如何智能地记住、忘记、提取和利用历史信息"。
在实际应用中,上下文工程是构建长期对话AI助手的关键技术,它让AI能够:
- 记住用户偏好
- 保持对话一致性
- 避免上下文窗口爆炸
- 在长对话中保持良好表现