前言
随着大语言模型(LLM)的普及,如何编写高质量的 Prompt 成为提升模型输出质量的关键。好的 Prompt 就像好的需求文档,能让 AI 准确理解你的意图并产出符合预期的结果。本文结合实际项目经验,系统总结 Prompt 调优的策略、技巧和框架,帮助你快速掌握与大模型高效沟通的方法。
核心调优策略
Prompt 调优可以从简单到复杂分为五个层次,建议按需递进使用:
| 层次 |
策略 |
适用场景 |
难度 |
| 基础 |
编写清晰的指令 |
所有场景 |
⭐ |
| 进阶 |
任务分解 |
复杂多步骤任务 |
⭐⭐ |
| 进阶 |
给予思考时间 |
逻辑推理、分析决策 |
⭐⭐ |
| 高级 |
外部工具增强 |
需要实时数据、专业领域知识 |
⭐⭐⭐ |
| 高级 |
额外推理输出 |
需要高准确度的结构化输出 |
⭐⭐⭐ |
策略一:编写清晰、具体的指令
适用场景:所有 Prompt 编写场景,是最基础也最重要的策略。
清晰的指令是高质量输出的基础。以下是几种常用方法:
1. 定义 System Prompt
System Prompt 用于设定 AI 助手的行为模式,包括角色设定、语言风格、任务模式和行为约束。
1
2
3
|
你是一位资深Python工程师,擅长代码审查和优化。
请用专业的技术语言,指出代码中的潜在问题并给出优化建议。
对于每个问题,需要说明:问题描述、影响范围、优化方案。
|
2. 提供具体的细节要求
在 Prompt 中添加背景信息和细节要求,让模型更准确地理解上下文:
1
2
3
4
5
6
|
背景:我正在开发一个高并发的电商订单系统
需求:设计一个分布式锁方案
要求:
1. 支持高并发场景(QPS > 10000)
2. 具备自动续期机制
3. 支持主从切换时的一致性保证
|
3. 角色扮演
赋予 AI 特定角色身份,可以更准确地模仿该角色的行为和对话方式:
1
2
|
你是一位拥有10年经验的产品经理,正在评审一个新功能的需求文档。
请从用户体验、技术可行性、商业价值三个维度进行评估。
|
4. 使用分隔符
使用分隔符可以清晰地区分指令、上下文和输入数据,避免模型混淆:
1
2
3
4
5
6
7
8
9
10
11
|
--- 指令 ---
请对以下代码进行Code Review
--- 代码 ---
def add(a, b):
return a + b
--- 要求 ---
1. 检查代码规范性
2. 指出潜在问题
3. 给出改进建议
|
5. 少样本学习(Few-shot Learning)
提供示例引导模型模仿特定的输出格式和风格:
1
2
3
4
5
6
7
8
9
10
11
|
示例1:
输入:用户说"我想订一张明天去北京的机票"
输出:{"intent": "book_flight", "destination": "北京", "date": "tomorrow"}
示例2:
输入:用户说"帮我查一下上海今天的天气"
输出:{"intent": "query_weather", "city": "上海", "date": "today"}
现在请处理:
输入:用户说"预订后天去杭州的高铁"
输出:
|
6. 指定输出约束
虽然让模型精确生成特定字数较难,但可以通过约束进行控制:
1
2
|
请用100字以内总结这篇文章的核心观点
请生成3-5个要点,每个要点不超过30字
|
策略二:将复杂任务分解为简单子任务
适用场景:当任务涉及多个步骤、多种能力,或输出需要对接下游系统时。
大模型在处理复杂任务时容易出现"幻觉"或遗漏,将任务拆解可以显著提升准确性。
意图理解与实体提取
当模型输出需要直接对接后端接口时,必须确保格式可解析:
1
2
3
4
5
6
7
8
9
|
请从用户输入中提取意图和实体,严格按照以下JSON格式输出:
{
"intent": "意图标识",
"entities": [
{"type": "实体类型", "value": "实体值"}
]
}
用户输入:帮我预订明天晚上7点的海底捞火锅,4个人
|
多步骤任务拆解
将一个复杂任务拆分为多个独立的子任务,逐步完成:
1
2
3
4
5
6
7
8
9
|
请按以下步骤完成竞品分析报告:
步骤1:列出3个主要竞品及其核心功能
步骤2:对比各竞品的定价策略
步骤3:分析各竞品的目标用户群体
步骤4:总结各竞品的优劣势
步骤5:给出我方产品的差异化建议
每步完成后输出"✓ 步骤X完成",全部完成后输出完整报告。
|
上下文总结
在长对话中,定期总结可以保持对话焦点、减少冗余:
1
2
3
4
|
请总结之前对话中的关键信息,包括:
1. 用户的核心需求
2. 已确认的信息
3. 待澄清的问题
|
策略三:给予模型思考时间
适用场景:逻辑推理、数学计算、方案评估等需要深度思考的场景。
在模型给出最终结论前,引导其进行自我探索和推理,即思维链(Chain of Thought):
1
2
3
4
5
6
7
8
9
|
请分析并评估以下Python代码的质量和功能。
在生成最终回答之前,请:
1. 先编写一份推荐的示例代码
2. 然后从代码结构、可读性、功能完整性三个维度进行评分(1-10分)
3. 最后给出详细的改进建议
待评估代码:
def calc(lst):
return sum(lst)/len(lst)
|
关键技巧:在 Prompt 中加入"请先思考"、“请展示推理过程"等语句,可以显著提升推理类任务的准确率。
策略四:使用外部工具增强模型能力
适用场景:需要实时数据、专业领域知识、或执行特定操作的场景。
Function Call
通过定义工具函数,让模型在需要时调用外部能力:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
{
"tools": [
{
"type": "function",
"function": {
"name": "search_product",
"description": "根据关键词搜索商品",
"parameters": {
"type": "object",
"properties": {
"keyword": {"type": "string"},
"category": {"type": "string"}
}
}
}
}
]
}
|
知识库检索(RAG)
将领域知识注入 Prompt,提升回答的准确性和专业性:
1
2
3
4
5
6
7
8
|
基于以下知识库内容回答用户问题:
--- 知识库 ---
产品A:支持7天无理由退货,质保期1年
产品B:支持15天无理由退货,质保期2年
--- 用户问题 ---
产品A的退货政策是什么?
|
策略五:通过推理输出提升准确度
适用场景:需要高准确度的结构化输出,如分类、判断、提取等任务。
核心思路是:让模型先解释原因,再给出结论。这样可以减少错误判断。
示例:偏好分类场景
在处理用户偏好时,要求模型先输出判断理由,再输出分类结果:
Prompt 设计:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
请分析用户的输入,判断是否包含可提取的偏好信息。
要求:
1. 先输出判断理由(reason字段)
2. 再输出分类结果
3. 仅提取正面或中性偏好,不支持"不喜欢"类否定表达
输出格式:
{
"reason": "判断理由",
"category": "分类标识",
"category_name": "分类名称",
"category_content": [...]
}
|
测试用例:
| 用户输入 |
期望输出要点 |
| “我喜欢吃辣和甜的东西” |
reason: 用户明确提到喜欢 → category: food_preference |
| “我不喜欢吃牛排” |
reason: 属于负面偏好,不提取 → category: 空 |
| “记住我喜欢去姥姥家” |
reason: 用户明确提到喜欢 → category: map_preference |
调优要点:通过 reason 字段强制模型"先想后答”,可以显著降低误判率。
常用 Prompt 框架
掌握了基础策略后,可以使用框架来组织更复杂的 Prompt。以下是三个主流框架的对比:
| 框架 |
组件数 |
特点 |
适用场景 |
| RACE |
4 |
简洁高效 |
快速任务、简单问答 |
| CO-STAR |
6 |
结构完整 |
复杂任务、多平台输出 |
| CRISPE |
6 |
增加人格和示例 |
需要特定风格的输出 |
RACE 框架(OpenAI 推荐)
RACE 是最简洁的框架,适合快速构建 Prompt:
| 组件 |
含义 |
填写要点 |
| Role |
角色 |
赋予 AI 专业身份 |
| Action |
行动 |
明确要执行的任务 |
| Context |
上下文 |
任务背景、相关信息 |
| Expectation |
期望 |
输出质量与格式要求 |
实战示例:
1
2
3
4
|
Role: 资深Python工程师
Action: 优化以下代码,提升执行效率并修复潜在bug
Context: 代码用于处理百万级用户数据
Expectation: 输出优化后代码+详细优化说明,标注关键改进点
|
CO-STAR 框架(新加坡 GovTech 获奖)
CO-STAR 结构完整、适用性广,特别适合需要精细化控制的场景:
| 组件 |
含义 |
填写要点 |
| Context |
上下文 |
任务背景、相关信息、AI 身份设定 |
| Objective |
目标 |
明确最终要达成的结果,用"完成/生成/分析"等动词 |
| Style |
风格 |
内容呈现形式(如学术论文、营销文案、技术文档) |
| Tone |
语气 |
表达情感色彩(正式/亲切/专业/幽默) |
| Audience |
受众 |
内容面向的人群(专家/新手/客户/学生) |
| Response Format |
响应格式 |
输出结构(表格/列表/段落/JSON) |
实战示例:
1
2
3
4
5
6
|
# Context: 我是一家初创电商公司的运营,正在策划双11促销活动
# Objective: 生成3套不同主题的促销方案,包含活动流程、预算分配和预期效果
# Style: 专业商业计划书风格,数据支撑充分
# Tone: 积极进取,兼具可行性与创新性
# Audience: 公司管理层和投资伙伴
# Response Format: 每套方案分3部分(主题/执行/效果),附预算表和KPI指标
|
CRISPE 框架
CRISPE 在 CO-STAR 基础上增加了 Persona(人格特质)和 Example(参考示例),进一步提升输出精准度:
| 组件 |
含义 |
填写要点 |
| Context |
上下文 |
任务背景、相关信息、AI 身份设定 |
| Role |
角色 |
赋予 AI 专业身份 |
| Intention |
意图 |
动词短语明确任务及达到的效果 |
| Style |
风格 |
内容呈现形式 |
| Persona |
人格 |
定义角色的性格特点(严谨务实/活泼易懂/专业权威) |
| Example |
示例 |
提供 1-2 个简短示例(Few-shot) |
实战示例:
1
2
3
4
5
6
7
8
9
10
11
12
|
【C - Context】
某咖啡店推出新品「冰萃椰香拿铁」,主打0糖0脂,面向18-30岁年轻消费者,用于小红书发布。
【R - Role】
资深小红书美食文案博主,擅长短句种草。
【I - Intention】
生成3条15字以内的宣传短文案,突出"0糖0脂+椰香"卖点。
【S - Style】
短句口号式,带1个表情符号。
【P - Persona】
活泼清新,贴近年轻人用语习惯。
【E - Example】
示例:冰萃椰香✨0糖0脂超清爽
|
如何选择框架?
1
2
3
4
5
6
7
8
9
10
11
|
简单任务(翻译、摘要、问答)
→ 使用 RACE
需要精细控制输出风格和内容
→ 使用 CO-STAR
需要 AI 模仿特定人格/风格
→ 使用 CRISPE
逻辑推理、数学计算
→ 单独使用思维链(CoT)
|
获奖级 Prompt 示例
以下是一个结构完整、可复用的 System Prompt + CO-STAR 组合示例,展示了如何构建一个生产级的 Prompt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
--- SYSTEM PROMPT START ---
你是资深政治竞选传播专家,拥有15年国际竞选经验,专注年轻选民(21-35岁)沟通策略。
必须遵守以下护栏规则:
1. 严格遵循CO-STAR框架生成内容,禁止遗漏任何组件
2. 语言必须符合新加坡政治规范,不使用负面攻击、极端表述
3. 每个平台文案风格必须差异化,适配平台用户行为习惯
4. 所有文案必须包含3个核心议题:住房、就业、数字服务
5. 完成后进行自我评估,确保符合所有要求
--- SYSTEM PROMPT END ---
--- CO-STAR PROMPT START ---
【C】Context: 新加坡某政党候选人参加2024年社区议会选举,目标选民为21-35岁年轻群体
【O】Objective: 为TikTok、LinkedIn、Instagram 3个平台生成竞选活动文案,每个平台3条,每条不超过150字
【S】Style:
- TikTok: 活泼、短视频脚本风格,含表情符号和话题标签
- LinkedIn: 专业、政策解读风格,数据支撑充分
- Instagram: 视觉化、图文结合风格,强调情感共鸣
【T】Tone: TikTok(活力四射)、LinkedIn(专业务实)、Instagram(温暖亲切)
【A】Audience: 21-35岁新加坡年轻选民,包括大学生、职场新人、自由职业者
【R】Response Format: 分3个平台,每个平台下分3条文案,每条配2个话题标签+1个发布建议
--- CO-STAR PROMPT END ---
--- 自我评估标准 ---
1. 是否覆盖3个核心议题(住房/就业/数字服务)
2. 是否符合各平台风格与语气要求
3. 是否控制在150字以内
4. 是否符合新加坡政治规范
5. 是否有吸引力和传播性
|
要点解析:
- 使用
--- XXX START/END --- 分隔符清晰划分不同部分
- System Prompt 中定义了明确的"护栏规则",防止模型越界
- 自我评估标准让模型在输出后进行自检,提升质量
总结
Prompt 调优是一个不断迭代的过程,核心要点如下:
| 要点 |
说明 |
| 明确目标 |
清楚知道你想要什么样的输出 |
| 结构化表达 |
使用框架组织 Prompt,确保信息完整 |
| 提供上下文 |
给予足够的背景信息和约束条件 |
| 善用示例 |
Few-shot 学习能显著提升输出质量 |
| 引导思考 |
让模型展示推理过程,获得更可靠的结论 |
| 持续优化 |
根据输出结果不断调整和改进 Prompt |
快速上手建议:
- 从 RACE 框架开始,快速构建基础 Prompt
- 效果不理想时,升级到 CO-STAR 或 CRISPE 框架
- 涉及逻辑推理时,加入思维链引导模型逐步思考
- 对接下游系统时,使用分隔符 + JSON 格式确保输出可解析
- 持续收集 bad case,针对性优化 Prompt
参考链接:
- OpenAI Prompt Engineering Guide
- Prompt Engineering 最佳实践