Prompt设计的基本原则与技巧
提示词工程(Prompt Engineering)是与大语言模型交互的核心技术。 通过精心设计的提示词,我们能够引导模型生成更准确、更有用的输出。 本讲将介绍提示词设计的基本原则,以及三种关键技巧:Zero-shot、Few-shot和Chain-of-Thought。 掌握这些技巧,你将能够更好地发挥大语言模型的潜力,在实际应用中获得更好的效果。
提示词工程是设计和优化输入文本(提示词)以引导大语言模型产生期望输出的技术和实践。 它是连接用户意图与模型能力的桥梁,通过精心设计的提示词,我们能够:
一个完整、有效的提示词通常由四个核心元素组成。理解这些元素,能够帮助我们更系统地设计提示词。
明确告诉模型你希望它执行的任务或操作。指令应该清晰、具体、可执行。
示例:
"请将下面的文本翻译成英文"
"总结这篇文章的核心观点"
"分析这段代码的时间复杂度"
提供背景信息、约束条件或特殊要求,帮助模型更好地理解任务。
示例:
"你是一位专业的市场分析师"
"假设目标受众是高中生"
"使用正式的商务语言"
需要模型处理的具体内容,可以是文本、问题、代码等。
示例:
"文本:机器学习是人工智能的一个分支..."
"问题:什么是深度学习?"
"代码:def bubble_sort(arr): ..."
指定期望的输出格式、长度、结构或样式。
示例:
"请用JSON格式返回结果"
"限制在200字以内"
"用编号列表的形式呈现"
💡 提示:并非每个提示词都需要包含全部四个元素。 根据具体任务的复杂度和需求,可以灵活组合这些元素。 通常,任务越复杂,需要的元素越多。
Zero-shot是指不提供任何示例,直接让模型完成任务。 这种方法依赖于模型在预训练阶段学到的知识和能力。 Zero-shot适用于模型已经熟悉的常见任务。
示例1:文本分类
提示词:
将下面的客户评论分类为"正面"或"负面":
"这个产品质量很好,物流也很快,非常满意!"
模型输出:
正面
示例2:信息提取
提示词:
从下面的文本中提取人名、地点和时间:
"张三将于2024年3月15日在北京参加会议。"
模型输出:
人名:张三
地点:北京
时间:2024年3月15日
✅优点
⚠️局限性
Few-shot是指在提示词中提供少量示例(通常1-5个),让模型通过模仿学习来完成任务。 这种方法能够更精确地控制输出格式和风格,提高任务完成质量。 Few-shot特别适用于需要特定格式或风格的任务。
示例1:情感分析(提供2个示例)
提示词:
将下面的评论分类为"正面"、"负面"或"中性":
评论:这家餐厅的菜品很美味,环境也不错。
分类:正面
评论:服务态度太差了,等了半天都没人理。
分类:负面
评论:价格还算合理,菜品一般般。
分类:
模型输出:
中性
示例2:格式化输出(提供JSON格式示例)
提示词:
将下面的信息转换为JSON格式:
输入:张三,男,28岁,软件工程师
输出:{"name":"张三","gender":"男","age":28,"occupation":"软件工程师"}
输入:李四,女,25岁,数据分析师
输出:{"name":"李四","gender":"女","age":25,"occupation":"数据分析师"}
输入:王五,男,30岁,产品经理
输出:
模型输出:
{"name":"王五","gender":"男","age":30,"occupation":"产品经理"}
💡Few-shot设计要点
✅优点
⚠️局限性
Chain-of-Thought(思维链)是一种引导模型进行分步推理的技术。 通过展示或要求模型展示中间推理步骤,CoT能够显著提升模型在复杂推理任务上的表现。 特别适用于数学问题、逻辑推理和需要多步骤思考的任务。
CoT的两种形式
在Few-shot示例中展示推理步骤
示例包含详细的思考过程
添加"Let's think step by step"
模型自动展示推理过程
示例1:Manual-CoT(手动提供推理步骤)
提示词:
问题:一个班级有30名学生,其中60%是女生。如果新增5名男生,男生占比是多少?
思考过程:
1. 女生人数 = 30 × 60% = 18人
2. 原来男生人数 = 30 - 18 = 12人
3. 新增后男生人数 = 12 + 5 = 17人
4. 总人数 = 30 + 5 = 35人
5. 男生占比 = 17 / 35 ≈ 48.6%
问题:一辆车以60公里/小时的速度行驶了2.5小时,然后以80公里/小时的速度行驶了1.5小时。平均速度是多少?
思考过程:
模型输出:
1. 第一段路程 = 60 × 2.5 = 150公里
2. 第二段路程 = 80 × 1.5 = 120公里
3. 总路程 = 150 + 120 = 270公里
4. 总时间 = 2.5 + 1.5 = 4小时
5. 平均速度 = 270 / 4 = 67.5公里/小时
示例2:Zero-shot-CoT(使用魔法提示词)
提示词:
问题:如果5个机器需要5分钟来制造5个零件,那么100个机器制造100个零件需要多长时间?
Let's think step by step.
模型输出:
好的,让我们一步步思考:
第一步:理解题目信息
- 5个机器需要5分钟制造5个零件
第二步:计算单个机器的效率
- 每个机器5分钟制造1个零件
- 因此,每个机器制造1个零件需要5分钟
第三步:应用到新问题
- 100个机器同时工作
- 每个机器制造1个零件需要5分钟
- 所以100个机器制造100个零件需要5分钟
答案:5分钟
✨CoT魔法提示词
只需在问题末尾添加这些短语,就能激发模型的推理能力:
英文版:
• "Let's think step by step."
• "Let's work this out step by step."
中文版:
• "让我们一步步思考。"
• "请详细说明推理过程。"
✅优点
⚠️局限性
了解每种技巧的特点后,我们可以根据具体任务需求选择最合适的方法。 下表总结了三种技巧的主要特征和适用场景:
| 维度 | Zero-shot | Few-shot | Chain-of-Thought |
|---|---|---|---|
| 定义 | 不提供示例,直接执行任务 | 提供少量示例供模型模仿 | 要求展示推理步骤 |
| 难度 | ⭐ 最简单 | ⭐⭐ 中等 | ⭐⭐⭐ 较复杂 |
| Token消耗 | 最少 | 中等 | 最多 |
| 适用任务 | 常见、简单任务 (分类、翻译、总结) | 需要特定格式或风格 (结构化输出、领域任务) | 复杂推理任务 (数学、逻辑、多步骤) |
| 准确性 | 基准水平 | 显著提升 | 大幅提升(推理任务) |
| 可控性 | 较低 | 高 | 中等 |
| 典型场景 | • 文本分类 • 语言翻译 • 内容总结 • 问答系统 | • JSON格式化 • 特定风格写作 • 领域分类 • 模板填充 | • 数学应用题 • 逻辑推理 • 复杂分析 • 决策制定 |
💡选择建议
指令、上下文、输入数据、输出指示——构建有效提示词的基础框架
Zero-shot、Few-shot、CoT——从简单到复杂的进阶路径
持续实验和优化,积累经验形成自己的提示词库
完整的讲义PDF,包含所有图表和详细内容