Prompt设计技巧
Few-shot和Chain-of-Thought是提升大模型能力的核心技巧,可以显著改善模型的推理和任务完成能力。
共 3 篇文章·阅读时间:约30分钟
01Few-shot提示
Few-shot提示通过在Prompt中提供少量示例,帮助模型理解任务模式和期望输出。
Few-shot原理
大语言模型具有强大的上下文学习能力,通过观察示例就能理解任务要求,无需参数更新。
示例结构
示例1: 输入:苹果 输出:水果 示例2: 输入:胡萝卜 输出:蔬菜 示例3: 输入:玫瑰 输出:
模型会基于示例推断:玫瑰应该输出"花"或"植物"
Few-shot技巧
示例多样性
提供涵盖不同情况和边界条件的示例。
避免所有示例都过于相似。
格式一致性
保持示例的输入输出格式一致。
模型会模仿格式生成答案。
标签空间
确保示例覆盖所有可能的标签/类别。
特别是分类任务。
示例数量
通常2-5个示例效果较好。
过多示例会增加token消耗。
02Chain-of-Thought
Chain-of-Thought(思维链)通过让模型展示推理过程,显著提升复杂推理任务的表现。
CoT原理
思维链的核心思想是"像人类一样思考"。在给出最终答案前,先展示推理步骤。
为什么CoT有效?
- 中间步骤缓存:每一步的推理结果可以复用
- 注意力分配:将模型注意力引向关键信息
- 计算延长:增加"思考"时间
- 可解释性:输出包含推理过程,更易理解
CoT示例
问题:小明有5个苹果,小红给了他又3个苹果,他吃掉了2个,还剩多少?
普通回答:6个
CoT回答:
1. 小明开始有5个苹果
2. 小红给了他3个,所以5+3=8个
3. 他吃掉了2个,所以8-2=6个
因此,小明还剩6个苹果。
CoT适用场景
- 数学推理(尤其是多步骤计算)
- 逻辑推理
- 代码生成和调试
- 需要分析的问题
03Zero-shot CoT
Zero-shot CoT通过特定的触发语句,无需示例即可激活模型的推理能力。
Zero-shot CoT原理
只需在问题后添加"Let's think step by step"这样的触发语,模型就会自动进行多步推理。
Zero-shot CoT示例
问题:小明有100元,他买了3本每本25元的书,还剩多少? Let's think step by step. [模型输出推理过程...]
对比与选择
| 特性 | Few-shot CoT | Zero-shot CoT |
|---|---|---|
| 示例需求 | 需要多个示例 | 无需示例 |
| Token消耗 | 较高 | 较低 |
| 效果 | 通常更好 | 稍弱但足够好 |
| 适用场景 | 复杂、特定格式要求 | 快速原型、简单任务 |
最佳实践
- 简单任务:直接提问,或使用Zero-shot CoT
- 复杂任务:Few-shot CoT提供具体示例
- 格式重要:Few-shot CoT确保输出格式正确
- 迭代优化:先Zero-shot快速验证,再优化为Few-shot