第十九章:高级提示技术

学习目标

  • 掌握思维链(Chain of Thought)提示技术
  • 理解Zero-shot和Few-shot提示的区别和适用场景
  • 掌握ReAct提示模式
  • 了解更多实用的Prompt技巧和评估方法

前置要求

建议先学习第十一章:大语言模型(LLM)详解,了解LLM的基本原理和Prompt概念。

高级提示技术概念图
图19-1 高级提示技术:通过少样本示例和思维链等结构化提示方法,引导LLM逐步推理以提升复杂问题的回答质量

思维链(Chain of Thought, CoT)

思维链(Chain of Thought)是一种通过引导LLM逐步推理来提升复杂问题回答质量的提示技术。核心思想是:让模型"展示思考过程",而不是直接给出答案。

基本方法

在提示词中添加"请一步一步思考"或"让我们逐步分析"等引导语,促使模型在给出最终答案前先展示推理过程。这种方法特别适用于数学计算、逻辑推理和多步骤问题。

CoT效果流程

1

接收问题

用户提出需要推理的复杂问题

2

逐步推理

模型展示分步思考过程

3

得出结论

基于推理过程给出准确答案

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) 输出内容是否事实正确 与标准答案对比
格式合规 输出是否符合要求的格式 格式解析验证

本章小结

  1. 思维链(CoT)通过引导LLM逐步推理来提升复杂问题的回答质量,特别适用于数学、逻辑推理和多步骤任务。
  2. Zero-shot直接让模型凭预训练知识完成任务,Few-shot通过提供示例帮助模型理解任务模式。格式敏感和领域专业任务推荐Few-shot。
  3. ReAct提示将推理和行动结合,让LLM在思考过程中交替进行推理和工具调用,适合需要获取外部信息的任务。
  4. 高级Prompt技巧包括角色设定、输出格式约束、任务分解和提供上下文,可以显著提升LLM输出的质量和可控性。
  5. Prompt评估需关注一致性、相关性、完整性、准确性和格式合规等多个维度。

练习题

  1. 思维链(CoT)提示的核心思想是什么?

    A. 让模型一次性给出答案
    B. 让模型展示逐步推理过程后再给出答案
    C. 让模型调用更多工具
    D. 让模型使用更长的上下文

    答案:B。CoT的核心思想是引导LLM"展示思考过程",通过逐步推理来提升复杂问题的回答质量,减少跳跃性错误。

  2. 以下哪种场景最适合使用Few-shot提示?

    A. 将"你好"翻译为英文
    B. 按特定格式提取文档中的实体
    C. 写一首关于春天的诗
    D. 总结一篇文章的主要观点

    答案:B。Few-shot提示适合需要明确输出格式的任务,如实体提取、分类标注等。翻译和写诗等常见任务用Zero-shot即可。

  3. 以下哪个不是Prompt评估的维度?

    A. 一致性
    B. 相关性
    C. 模型参数量
    D. 完整性

    答案:C。Prompt评估的维度包括一致性、相关性、完整性、准确性和格式合规。模型参数量是模型本身的属性,不是Prompt质量的评估维度。