第十九章:高级提示技术
学习目标
- 掌握思维链(Chain of Thought)提示技术
- 理解Zero-shot和Few-shot提示的区别和适用场景
- 掌握ReAct提示模式
- 了解更多实用的Prompt技巧和评估方法
前置要求
建议先学习第十一章:大语言模型(LLM)详解,了解LLM的基本原理和Prompt概念。
思维链(Chain of Thought, CoT)
思维链(Chain of Thought)是一种通过引导LLM逐步推理来提升复杂问题回答质量的提示技术。核心思想是:让模型"展示思考过程",而不是直接给出答案。
基本方法
在提示词中添加"请一步一步思考"或"让我们逐步分析"等引导语,促使模型在给出最终答案前先展示推理过程。这种方法特别适用于数学计算、逻辑推理和多步骤问题。
CoT效果流程
接收问题
用户提出需要推理的复杂问题
逐步推理
模型展示分步思考过程
得出结论
基于推理过程给出准确答案
CoT的典型应用
- 数学问题:分步计算,减少计算错误
- 逻辑推理:逐步分析条件,避免跳跃性错误
- 多步决策:分解复杂决策为多个判断步骤
- 代码生成:先分析需求,再设计逻辑,最后编写代码
- 文本分析:逐步提取关键信息,综合得出结论
Zero-shot vs Few-shot
Zero-shot提示
Zero-shot:不给任何示例,直接让模型完成任务。依赖模型预训练知识。
示例:将以下英文翻译为中文:Hello World
Few-shot提示
Few-shot:在提示中给出几个示例,让模型学习输入-输出模式后再完成任务。
示例:
正面 → 积极
负面 → 消极
一般 → 中性
这个产品非常好 → ?
模型通过示例学会了"情感分类"的模式,输出"积极"。
何时使用Few-shot?
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 常见任务(翻译、摘要) | Zero-shot | 模型已有丰富知识 |
| 特定格式输出 | Few-shot | 需要示例来明确格式要求 |
| 领域专业任务 | Few-shot | 示例帮助模型理解领域术语 |
| 分类/标注任务 | Few-shot | 示例明确分类标准 |
| 创意写作 | Zero-shot | 过多示例可能限制创造性 |
ReAct提示
ReAct提示是将推理(Reasoning)和行动(Acting)结合的提示模式,让LLM在思考过程中交替进行推理和工具调用。
ReAct示例
问题:清华大学和北京大学哪个建校更早?
Thought 1:我需要查询清华大学的建校时间。
Action 1:搜索"清华大学建校时间"
Observation 1:清华大学建于1911年
Thought 2:我还需要查询北京大学的建校时间。
Action 2:搜索"北京大学建校时间"
Observation 2:北京大学建于1898年
Thought 3:北京大学(1898年)比清华大学(1911年)建校更早。
Answer:北京大学建校更早,建于1898年,比清华大学的1911年早了13年。
更多Prompt技巧
1. 角色设定(Role Prompting)
通过给LLM设定特定角色,可以显著提升回答的专业性和针对性。
# 角色设定示例
prompt = """
你是一位有20年经验的资深Python开发者和技术导师。
你的教学风格是:用简单的比喻解释复杂概念,提供可运行的代码示例,
并指出初学者常见的陷阱。
请解释什么是装饰器(Decorator)。
"""
2. 输出格式约束
明确指定输出格式,确保LLM返回符合预期的结构化结果。
# 格式约束示例
prompt = """
请分析以下文本的情感,并以JSON格式返回结果:
{
"sentiment": "正面/负面/中性",
"confidence": 0.0-1.0,
"keywords": ["关键词1", "关键词2"],
"reason": "判断理由"
}
文本:这款手机的拍照效果非常出色,电池续航也很给力!
"""
3. 分解任务(Task Decomposition)
将复杂任务分解为多个简单子任务,逐步完成。
# 任务分解示例
prompt = """
请按以下步骤完成任务:
步骤1:从文本中提取所有人名
步骤2:分析每个人物的关系
步骤3:生成人物关系图描述
步骤4:总结主要人物和核心冲突
文本:...
"""
4. 提供上下文(Context Provision)
在提示中提供充分的背景信息,帮助LLM给出更准确的回答。
# 提供上下文示例
prompt = """
背景信息:我们是一家电商公司,主要销售3C数码产品。
目标用户:18-35岁的年轻消费者。
当前问题:最近一个月,网站流量增长了30%,但转化率下降了15%。
请基于以上背景信息,分析可能的原因并给出改进建议。
"""
Prompt评估方法
评估Prompt质量需要从多个维度考量:
| 评估维度 | 说明 | 评估方法 |
|---|---|---|
| 一致性(Consistency) | 相同Prompt多次运行,结果是否稳定一致 | 多次运行统计结果分布 |
| 相关性(Relevance) | 输出是否与用户意图相关 | 人工评估或使用LLM-as-Judge |
| 完整性(Completeness) | 输出是否完整回答了所有问题 | 检查清单逐项验证 |
| 准确性(Accuracy) | 输出内容是否事实正确 | 与标准答案对比 |
| 格式合规 | 输出是否符合要求的格式 | 格式解析验证 |
本章小结
- 思维链(CoT)通过引导LLM逐步推理来提升复杂问题的回答质量,特别适用于数学、逻辑推理和多步骤任务。
- Zero-shot直接让模型凭预训练知识完成任务,Few-shot通过提供示例帮助模型理解任务模式。格式敏感和领域专业任务推荐Few-shot。
- ReAct提示将推理和行动结合,让LLM在思考过程中交替进行推理和工具调用,适合需要获取外部信息的任务。
- 高级Prompt技巧包括角色设定、输出格式约束、任务分解和提供上下文,可以显著提升LLM输出的质量和可控性。
- Prompt评估需关注一致性、相关性、完整性、准确性和格式合规等多个维度。
练习题
-
思维链(CoT)提示的核心思想是什么?
A. 让模型一次性给出答案
B. 让模型展示逐步推理过程后再给出答案
C. 让模型调用更多工具
D. 让模型使用更长的上下文答案:B。CoT的核心思想是引导LLM"展示思考过程",通过逐步推理来提升复杂问题的回答质量,减少跳跃性错误。
-
以下哪种场景最适合使用Few-shot提示?
A. 将"你好"翻译为英文
B. 按特定格式提取文档中的实体
C. 写一首关于春天的诗
D. 总结一篇文章的主要观点答案:B。Few-shot提示适合需要明确输出格式的任务,如实体提取、分类标注等。翻译和写诗等常见任务用Zero-shot即可。
-
以下哪个不是Prompt评估的维度?
A. 一致性
B. 相关性
C. 模型参数量
D. 完整性答案:C。Prompt评估的维度包括一致性、相关性、完整性、准确性和格式合规。模型参数量是模型本身的属性,不是Prompt质量的评估维度。