Prompt 工程不是咒语,而是任务说明书
来源:一次关于提示词工程的讨论整理。
核心问题:如何用简单、可复用的结构说明什么是 Prompt 设计?
一句话理解
Prompt 设计的本质不是写一段“神奇咒语”,而是把任务的上下文、目标、边界、过程、格式和评估标准清楚地告诉模型。
也可以更工程化地说:
Prompt 是写给大模型看的任务说明书。
一个好的 Prompt 应该回答六个问题:
谁来做?
做什么?
基于什么背景?
怎么做?
输出成什么样?
如何判断好坏?1. 角色定义:缩小回答空间
角色定义不是简单地让模型“扮演某个人”,而是帮助模型缩小回答空间。
例如:
你是一名资深产品经理,擅长将模糊需求拆解成可执行的产品方案。这会影响模型后续的:
- 关注重点
- 语言风格
- 判断标准
- 输出结构
- 默认假设
不过角色不一定越复杂越好。比较好的角色定义通常包含:
- 专业身份
- 核心能力
- 当前任务中的职责
例如:
你是一名法律科技产品架构师,擅长把复杂政府表单流程抽象成可复用的 AI Workflow。
你的任务是分析下面的表单流程,并提炼出适合工程实现的结构化步骤。2. 任务目标:明确最终产物
差的目标:
帮我分析一下这个东西。好的目标:
请分析这份政府表单的填写流程,并输出:
1. 用户需要提供的信息
2. 每一步的判断条件
3. 可自动化处理的部分
4. 需要人工确认的风险点目标最好回答:
- 要解决什么问题?
- 最终产物是什么?
- 面向谁使用?
- 使用场景是什么?
3. 背景上下文:避免看似正确但不贴合场景
模型不是只靠指令工作,它很依赖上下文。
例如:
背景:
这个流程用于帮助普通用户申请某项政府服务。
用户不具备法律知识。
我们的系统希望尽量减少用户手动填写内容。背景可以包括:
- 用户是谁
- 使用场景是什么
- 当前已有信息
- 不能做什么
- 业务限制
- 技术限制
- 风险边界
如果没有背景,模型容易给出“抽象正确但落地错误”的答案。
4. 任务拆解:让模型产生可验证的中间结果
复杂任务不要只给最终目标,最好告诉模型先做什么、再做什么。
例如:
请按照以下步骤完成:
1. 先阅读原始材料,提取关键事实。
2. 再识别其中涉及的角色、条件、输入和输出。
3. 然后将流程拆解成步骤。
4. 最后输出一个适合工程实现的 workflow schema。这里的重点不是要求模型展示完整思考过程,而是让它输出可验证的中间结果。
更推荐说:
请展示分析依据、关键判断点和最终结论。而不是:
请展示你的完整推理过程。5. 约束条件:告诉模型不要做什么
Prompt 不只是告诉模型“做什么”,也要告诉它“不要做什么”。
例如:
要求:
- 不要编造原文中不存在的信息。
- 如果信息不足,请标记为「待确认」。
- 不要使用过于抽象的描述。
- 每个步骤都必须包含输入、处理逻辑和输出。常见约束包括:
- 禁止编造
- 不确定时如何处理
- 输出语言
- 输出长度
- 风格要求
- 是否允许假设
- 是否需要引用依据
- 是否需要风险提示
6. 输出格式:越结构化,越稳定
模型对格式的遵守能力,很大程度取决于你有没有给清楚结构。
例如:
## 流程名称
## 适用场景
## 用户输入
- 字段名:
- 字段类型:
- 是否必填:
- 说明:
## 流程步骤
1. 步骤名称:
- 输入:
- 判断条件:
- 操作:
- 输出:
- 风险点:
## 待确认问题如果是给程序消费,最好使用 JSON Schema 或 YAML。
7. 示例:让模型模仿粒度
示例很重要,因为模型会模仿你的样例。
如果希望输出稳定,可以给:
- 一个好样例
- 一个坏样例
- 一个边界情况样例
尤其是结构化抽取、评估、工作流拆解这类任务,示例经常比长篇规则更有效。
8. 结果评估:不要只相信 confidence
让模型输出 confidence 分数有帮助,但不要过度相信。
更好的方式是让它按具体标准自检:
## 自检
- 是否完整覆盖输入材料:是/否
- 是否存在未确认假设:是/否
- 是否有编造信息风险:低/中/高
- 工程实现清晰度评分:1-5
- 需要人工复核的地方:这比单纯输出:
confidence: 0.87更可解释,也更方便人工复核。
通用 Prompt 模板
你是【角色】,擅长【能力】。
背景:
【任务背景、使用场景、用户对象、限制条件】
目标:
请完成【具体任务】,最终输出【具体产物】。
请按照以下步骤处理:
1. 【步骤一】
2. 【步骤二】
3. 【步骤三】
要求:
- 【约束一】
- 【约束二】
- 如果信息不足,请标记为「待确认」,不要编造。
输出格式:
【给出具体结构】
示例:
【给出样例】
自检:
请在最后根据以下标准检查输出:
- 完整性:
- 准确性:
- 可执行性:
- 风险点:面试版总结
如果在面试里解释 Prompt 工程,可以这样说:
我理解 Prompt 设计不是简单向模型提问,而是把任务的角色、目标、背景、步骤、格式和评估标准清楚描述出来,让模型在明确边界内稳定地产生我们想要的结果。好的 Prompt 本质上是一份写给大模型的任务说明书,它的目标是减少歧义、控制输出边界,并提高结果的稳定性和可用性。