高级提示词技巧
课程简介
少样本提示、思维链、结构化输出、条件逻辑等高级方法。
🎬 本课程视频:Prompt Engineering — 提示词工程
高级提示词技巧
一、少样本学习(Few-Shot Learning)
1.1 什么少样本学习?
少样本学习是在提示词中提供若干输入-输出示例,让模型从示例中学习任务的模式和风格,然后处理新的输入。
1.2 示例的选择策略
覆盖策略:示例应该覆盖输入空间的典型变化。如果任务是情感分类,示例应该包括正面、负面和中性三种。
示例:
输入:这部电影太精彩了,我看了三遍。 → 正面
输入:一般般,没什么特别的。 → 中性
输入:浪费时间,完全不推荐。 → 负面
新的输入:画质很好但剧情空洞。
输出:
难度递增策略:从简单到困难排列示例,让模型从易到难学习。
边界案例策略:包含一些边界案例,帮助模型处理模糊情况。
1.3 少样本 vs 微调
| 维度 | 少样本学习 | 微调 |
|---|---|---|
| 需要的数据量 | 2-10 个示例 | 500-10000+ 条 |
| 准备时间 | 分钟级 | 天级 |
| 灵活性 | 高(可以随时换任务) | 低(一个模型一个任务) |
| Token 成本 | 每次调用包含示例 | 一次训练后无额外成本 |
| 效果上限 | 中等(受上下文窗口限制) | 高(深度适应任务) |
二、思维链(Chain-of-Thought, CoT)
2.1 核心思想
思维链是目前最有影响力的高级提示技巧。它的核心思想是:引导模型在给出最终答案之前,展示中间推理步骤。
2.2 为什么思维链有效?
传统提示词要求模型直接给出答案。对于简单问题,这不是问题。但对于需要多步推理的问题,直接给出答案的跳过了推理过程,错误率会显著上升。
思维链通过让模型「把思考过程写下来」,实现了两个关键效果:
1. 推理显式化:每一步推理都可见,便于检查和纠错
2. 计算外化:利用模型的文本生成能力进行符号化推理,而非依赖其隐含的推理能力
2.3 思维链的实现方式
零样本思维链(Zero-shot CoT):只需要在提示词最后加上「请逐步思考」。
问题:一个苹果 3 元,一个橙子 4 元,小明买了 5 个苹果和 3 个橙子,一共花了多少钱?
请逐步思考。
推理过程:
1. 苹果的总价:5 × 3 = 15 元
2. 橙子的总价:3 × 4 = 12 元
3. 总共:15 + 12 = 27 元
答案:27 元。
少样本思维链(Few-shot CoT):提供包含推理过程的示例。
示例:
Q:小明有 10 颗糖,给了小红 3 颗,又从小花的 5 颗糖中拿了 2 颗,小明现在有几颗糖?
A:小明原本有 10 颗。给了小红 3 颗,还剩 10 - 3 = 7 颗。从小花那里拿了 2 颗,7 + 2 = 9 颗。答案是 9。
Q:图书馆有 120 本书,周一借出 25 本,周二还回 12 本,周三借出 18 本,现在图书馆有多少本书?
A:
2.4 思维链的变体
结构化思维链:要求模型按固定模板输出推理过程。
推理步骤:
1. 已知条件:[列出已知信息]
2. 目标:[明确需要求解什么]
3. 第一步计算:[第一步的计算过程和结果]
4. 第二步计算:[第二步的计算过程和结果]
5. 检查:[验证结果是否合理]
6. 最终答案:[最终结果]
多路径思维链:生成多个不同的推理路径,选择多数一致的结论。
2.5 思维链的适用场景
- 数学问题:正确率提升 50-100%
- 逻辑推理:正确率显著提升
- 复杂决策:产出质量更高、更可解释
- 不适合:简单事实查询、创意写作(可能抑制创造力)
三、结构化输出
3.1 为什么需要结构化输出?
LLM 的默认输出是自然语言文本。但在很多工程场景中,我们需要的是可以被程序直接解析的结构化数据。
3.2 JSON 模式约束
请从以下文本中提取信息,按 JSON 格式输出。
文本:「2024 年第三季度,特斯拉实现营收 251.8 亿美元,净利润 21.8 亿美元。」
输出格式:
{
"company": "公司名称",
"period": "时间期间",
"metrics": [
{"name": "指标名称", "value": 数值, "unit": "单位"}
]
}
3.3 制表符分隔输出
请以表格形式输出,每列用制表符分隔。
产品名称 销售额 增长率
iPhone 500亿 8%
Mac 100亿 -2%
iPad 80亿 5%
3.4 输出格式约束的技巧
- 显式指定 Schema:在提示词中写出完整的输出结构
- 提供示例:给出一个完整的输出示例
- 指定枚举值:对于受限的字段,列出允许的值
- 设置默认值:要求缺失字段使用 null 或空字符串
四、条件逻辑
4.1 条件路由
根据输入的内容,选择不同的处理路径。
判断用户输入的类型:
1. 如果用户的问题是「技术咨询」,调用技术知识库回答
2. 如果用户的问题是「售后服务」,调用售后流程回答
3. 如果用户的问题是「产品介绍」,生成产品介绍
4. 如果无法分类,请求用户澄清
请先输出分类结果,再按分类处理。
4.2 分支提示词
IF 条件 A THEN 执行分支 A
IF 条件 B THEN 执行分支 B
IF 两者都满足 THEN 优先执行分支 A
五、提示词组合技巧
5.1 角色 + 任务 + 格式
最常用的提示词结构:先定义角色,再说明任务,最后约束输出格式。
你是一位数据科学家。请分析以下数据集,找出三个最有意义的趋势。
输出格式:以 Markdown 列表形式,每个趋势包含「趋势描述」和「数据支持」两个子项。
5.2 链式提示
多个提示词串联,前一步输出作为后一步输入。每一步可以加入新的约束。
5.3 对比提示
要求模型从正反两个方面分析问题。
请分别从支持方和反对方的角度,分析以下议题:远程办公是否应该成为常态?
支持方观点:
反对方观点:
最后给出你的综合分析。
六、常见陷阱与解决方案
6.1 过度拟合示例
问题:提供的示例太少或太类似,模型输出的风格和模式被锁死
解决:提供多样化的示例,覆盖不同的输入变体
6.2 模型偷懒
问题:模型使用「等」、「类似」、「等等」来省略内容,而不是完整输出
解决:明确要求「不省略任何内容,完整输出全部项目」
6.3 角色矛盾
问题:在同一个对话中给模型分配了冲突的角色
解决:保持角色一致,或者在不同步骤中明确切换角色
七、总结
高级提示词技巧包括少样本学习、思维链、结构化输出和条件逻辑。少样本学习通过示例引导模型行为;思维链通过展示推理步骤提升复杂推理的准确性;结构化输出确保模型输出可以被程序消费;条件逻辑实现根据输入动态选择处理路径。这些技巧各有适用场景,组合使用可以实现更强大、更可控的 LLM 应用。
五、思维链(Chain of Thought)
5.1 什么是思维链
思维链(CoT)是一种让 LLM “展示推理过程”的技术。不是让模型直接输出答案,而是先输出一步步的推理过程,再给出最终答案。
5.2 思维链的效果
在数学推理、逻辑推理、复杂问答等任务中,思维链能显著提升准确率。例如:
问题:小明有 3 个苹果,小红有 5 个苹果,他们一共有多少个苹果?
错误的思维链:
3 + 5 = 9
答案:9
正确的思维链:
小明有 3 个苹果,小红有 5 个苹果。
要求苹果总数。
总数 = 小明的苹果 + 小红的苹果 = 3 + 5 = 8
答案:8
5.3 零样本思维链
只需要在提示词末尾加上“请逐步思考”或“Let's think step by step”,就能触发思维链效果。这是最简单有效的提示词技巧之一。
六、结构化输出
6.1 什么是结构化输出
要求 LLM 按照特定的格式(JSON、XML、Markdown table 等)输出结果。结构化输出让 LLM 的输出可以直接被程序解析和使用。
6.2 结构化输出的实现
请分析以下客户反馈,并以 JSON 格式输出:
反馈:{customer_feedback}
输出格式:
{
"sentiment": "positive|negative|neutral",
"category": "产品|服务|价格|其他",
"key_points": ["点1", "点2"],
"priority": 1-5
}
七、总结
高级提示词技巧让我们能够挖掘 LLM 的更深层能力。
关键要点回顾:
- 少样本提示通过示例指导模型
- 思维链让模型展示推理过程
- 结构化输出让结果可直接程序解析
- 综合使用各种技巧效果更好
五、思维链(Chain of Thought)
5.1 什么是思维链
思维链(CoT)是一种让 LLM “展示推理过程”的技术。不是让模型直接输出答案,而是先输出一步步的推理过程,再给出最终答案。
5.2 思维链的效果
在数学推理、逻辑推理、复杂问答等任务中,思维链能显著提升准确率。例如:
问题:小明有 3 个苹果,小红有 5 个苹果,他们一共有多少个苹果?
错误的思维链:
3 + 5 = 9
答案:9
正确的思维链:
小明有 3 个苹果,小红有 5 个苹果。
要求苹果总数。
总数 = 小明的苹果 + 小红的苹果 = 3 + 5 = 8
答案:8
5.3 零样本思维链
只需要在提示词末尾加上“请逐步思考”或“Let's think step by step”,就能触发思维链效果。这是最简单有效的提示词技巧之一。
六、结构化输出
6.1 什么是结构化输出
要求 LLM 按照特定的格式(JSON、XML、Markdown table 等)输出结果。结构化输出让 LLM 的输出可以直接被程序解析和使用。
6.2 结构化输出的实现
请分析以下客户反馈,并以 JSON 格式输出:
反馈:{customer_feedback}
输出格式:
{
"sentiment": "positive|negative|neutral",
"category": "产品|服务|价格|其他",
"key_points": ["点1", "点2"],
"priority": 1-5
}
七、总结
高级提示词技巧让我们能够挖掘 LLM 的更深层能力。
关键要点回顾:
- 少样本提示通过示例指导模型
- 思维链让模型展示推理过程
- 结构化输出让结果可直接程序解析
- 综合使用各种技巧效果更好
【深度技巧补充】我们再来聊聊思维链的一些进阶用法。除了基本的“Let's think step by step”之外,还有几种更强大的思维链变体:
1. 自洽性思维链(Self-Consistency CoT):多次运行思维链,取最一致的答案。假设一个问题可能有不同的推理路径,LLM 每次可能走不同的路径。通过多次采样并取多数答案,可以显著提升结果的可靠性。研究表明 Self-Consistency 可以将数学推理的准确率提升 10-20 个百分点。
2. 思维树(Tree of Thoughts):不是线性推理,而是分支推理。在每一步生成多个可能的推理方向,然后评估每个方向的可行性,选择最优方向继续探索。如果一条路径走不通,还可以回溯到之前的决策点换一条路径。
3. 主动提示(Active Prompt):让 LLM 自己决定在推理过程中需要哪些信息。模型不是被动地按固定步骤推理,而是主动提出“我需要知道 X 才能继续推理”,然后在获得相关信息后继续。
少样本提示的选择策略也很关键。不是随便选例子,而是遵循以下原则:例子的多样性——覆盖不同类型的输入;例子的难度递进——从简单到复杂;例子的边界覆盖——包含边缘情况和典型错误示例。好的少样本选择可以让模型更快地理解任务模式。
五、思维链(Chain of Thought)
5.1 什么是思维链
思维链(CoT)是一种让 LLM “展示推理过程”的技术。不是让模型直接输出答案,而是先输出一步步的推理过程,再给出最终答案。
5.2 思维链的效果
在数学推理、逻辑推理、复杂问答等任务中,思维链能显著提升准确率。例如:
问题:小明有 3 个苹果,小红有 5 个苹果,他们一共有多少个苹果?
错误的思维链:
3 + 5 = 9
答案:9
正确的思维链:
小明有 3 个苹果,小红有 5 个苹果。
要求苹果总数。
总数 = 小明的苹果 + 小红的苹果 = 3 + 5 = 8
答案:8
5.3 零样本思维链
只需要在提示词末尾加上“请逐步思考”或“Let's think step by step”,就能触发思维链效果。这是最简单有效的提示词技巧之一。
六、结构化输出
6.1 什么是结构化输出
要求 LLM 按照特定的格式(JSON、XML、Markdown table 等)输出结果。结构化输出让 LLM 的输出可以直接被程序解析和使用。
6.2 结构化输出的实现
请分析以下客户反馈,并以 JSON 格式输出:
反馈:{customer_feedback}
输出格式:
{
"sentiment": "positive|negative|neutral",
"category": "产品|服务|价格|其他",
"key_points": ["点1", "点2"],
"priority": 1-5
}
七、总结
高级提示词技巧让我们能够挖掘 LLM 的更深层能力。
关键要点回顾:
- 少样本提示通过示例指导模型
- 思维链让模型展示推理过程
- 结构化输出让结果可直接程序解析
- 综合使用各种技巧效果更好
【深度技巧补充】我们再来聊聊思维链的一些进阶用法。除了基本的“Let's think step by step”之外,还有几种更强大的思维链变体:
1. 自洽性思维链(Self-Consistency CoT):多次运行思维链,取最一致的答案。假设一个问题可能有不同的推理路径,LLM 每次可能走不同的路径。通过多次采样并取多数答案,可以显著提升结果的可靠性。研究表明 Self-Consistency 可以将数学推理的准确率提升 10-20 个百分点。
2. 思维树(Tree of Thoughts):不是线性推理,而是分支推理。在每一步生成多个可能的推理方向,然后评估每个方向的可行性,选择最优方向继续探索。如果一条路径走不通,还可以回溯到之前的决策点换一条路径。
3. 主动提示(Active Prompt):让 LLM 自己决定在推理过程中需要哪些信息。模型不是被动地按固定步骤推理,而是主动提出“我需要知道 X 才能继续推理”,然后在获得相关信息后继续。
少样本提示的选择策略也很关键。不是随便选例子,而是遵循以下原则:例子的多样性——覆盖不同类型的输入;例子的难度递进——从简单到复杂;例子的边界覆盖——包含边缘情况和典型错误示例。好的少样本选择可以让模型更快地理解任务模式。
延伸阅读
- 📺 B 站播放列表:Prompt Engineering — 提示词工程
- 📚 更多学习资源,请访问 deeplearning.ai 官网