Google 提示词工程白皮书

Google 提示词工程白皮书

整理时间: 2026-02-04 08:07
来源: Google Prompt Engineering Whitepaper (2024年9月版)
整理人: AI助手


摘要

本文档整理了Google发布的《Prompt Engineering》白皮书核心内容,系统介绍了大语言模型(LLM)提示词工程的技术原理、实践方法和最佳实践。内容涵盖从基础的零样本提示到高级的链式思维(CoT)、自我一致性、树状思维(ToT)等技术,适用于希望提升AI模型应用能力的开发者和研究人员。


一、提示词工程概述

1.1 什么是提示词工程

提示词工程(Prompt Engineering)是设计高质量提示词以引导大语言模型产生准确输出的过程。这涉及:
- 寻找最佳提示词的反复试验
- 优化提示词长度
- 评估与任务相关的写作风格和结构

核心原则: 你不需要成为数据科学家或机器学习工程师——每个人都可以编写提示词。但编写最有效的提示词可能很复杂。

1.2 LLM的工作原理

大语言模型本质上是一个预测引擎:
1. 模型接收顺序文本作为输入
2. 基于训练数据预测下一个token应该是什么
3. 将预测的token添加到序列末尾,继续预测下一个token
4. 重复此过程直到完成


二、LLM输出配置

2.1 输出长度 (Output Length)

  • 限制模型生成的token数量
  • 生成更多token需要更多计算资源,可能导致响应时间变慢和成本增加
  • 注意: 缩短输出长度不会使模型在风格或文本上更加简洁,只是让模型在达到限制后停止预测

2.2 采样控制

LLM不是正式预测单个token,而是预测下一个token可能是什么的概率分布。温度(Temperature)、Top-K和Top-P是最常见的配置设置。

Temperature(温度)

  • 控制token选择中的随机性程度
  • 低温(接近0): 适合需要确定性响应的提示
  • 高温(接近1或更高): 可能导致更多样化或意想不到的结果
  • 温度为0: 确定性解码,总是选择概率最高的token

Top-K采样

  • 从模型预测的分布中选择概率最高的K个token
  • Top-K越高: 输出越具创意和变化
  • Top-K越低: 输出越受限制和事实化
  • Top-K为1: 等同于贪婪解码

Top-P采样(核采样)

  • 选择累积概率不超过特定值(P)的顶部token
  • P值范围: 0(贪婪解码)到1(词汇表中所有token)

2.3 推荐配置

场景 Temperature Top-P Top-K
连贯但适度创意 0.2 0.95 30
高度创意 0.9 0.99 40
较少创意/精确 0.1 0.9 20
单一正确答案 0 - -

三、提示词技术详解

3.1 零样本提示 (Zero-Shot)

定义: 最简单的提示类型,仅提供任务描述和一些启动文本。

示例:

将电影评论分类为正面、中性或负面。
评论:《她》是一部令人不安的研究,揭示了如果AI被允许不受控制地继续进化,
人类将走向何方。我希望有更多像这部杰作一样的电影。
情感:

输出: POSITIVE

3.2 单样本与少样本提示 (One-Shot & Few-Shot)

单样本提示

提供一个示例供模型模仿。

少样本提示

提供多个示例,展示模型需要遵循的模式。

示例(披萨订单解析):

将客户的披萨订单解析为有效的JSON:

示例1:
我想要一个小披萨,配奶酪、番茄酱和意大利辣香肠。
JSON响应:
{
  "size": "small",
  "type": "normal",
  "ingredients": [["cheese", "tomato sauce", "pepperoni"]]
}

示例2:
我可以要一个大披萨,配番茄酱、罗勒和马苏里拉奶酪吗?
JSON响应:
{
  "size": "large",
  "type": "normal",
  "ingredients": [["tomato sauce", "basil", "mozzarella"]]
}

现在,我想要一个大披萨,前半部分是奶酪和马苏里拉,后半部分是番茄酱、火腿和菠萝。
JSON响应:

经验法则: 使用至少3-5个示例进行少样本提示。

3.3 系统、上下文和角色提示

系统提示 (System Prompting)

  • 设置模型的整体上下文和目的
  • 定义模型应该做什么的”大局”

示例:

将电影评论分类为正面、中性或负面。只以大写字母返回标签。
评论:《她》是一部令人不安的研究...
情感:

角色提示 (Role Prompting)

  • 为模型分配特定的角色或身份
  • 帮助模型生成与分配角色一致的响应

示例:

我想让你充当旅行指南。我会告诉你我的位置,你会建议我附近的3个游览地点。
有时,我还会告诉你我要参观的地点类型。
我的建议:"我在阿姆斯特丹,只想参观博物馆。"

有效风格选项:
- 对抗性 (Confrontational)
- 描述性 (Descriptive)
- 直接 (Direct)
- 正式 (Formal)
- 幽默 (Humorous)
- 有影响力 (Influential)
- 非正式 (Informal)
- 鼓舞人心 (Inspirational)
- 有说服力 (Persuasive)

上下文提示 (Contextual Prompting)

  • 提供与当前对话或任务相关的具体细节或背景信息
  • 帮助模型理解所问内容的细微差别

示例:

背景:你正在为关于80年代复古街机视频游戏的博客写作。
建议3个可以撰写文章的主题,并附上简要描述。

3.4 退后提示 (Step-Back Prompting)

原理: 通过提示LLM首先考虑与手头具体任务相关的普遍问题,然后将该普遍问题的答案输入到后续的具体任务提示中。

步骤:
1. 先提出一个相关的普遍问题
2. 获取该问题的答案
3. 将答案作为上下文用于具体任务

示例:

传统提示(表8):

为第一人称射击视频游戏的新关卡写一个段落的故事情节,要求具有挑战性和吸引力。

退后提示(表9):

基于流行的第一人称射击动作游戏,有哪些5个虚构的关键场景有助于创造
第一人称射击视频游戏中具有挑战性和吸引力的关卡故事情节?

最终提示(使用退后结果):

背景:[5个主题列表]
选择其中一个主题,为第一人称射击视频游戏的新关卡写一个段落的故事情节,
要求具有挑战性和吸引力。

3.5 思维链 (Chain of Thought, CoT)

定义: 通过生成中间推理步骤来提高LLM推理能力的技术。

零样本CoT:

当我3岁时,我的伴侣年龄是我的3倍。现在我20岁了。我的伴侣多大了?
让我们一步一步思考。

少样本CoT:

Q:当我弟弟2岁时,我的年龄是他的两倍。现在我40岁了。我弟弟多大了?
让我们一步一步思考。
A:当我弟弟2岁时,我是2*2=4岁。年龄差是2岁,我更大。
现在我40岁了,所以我弟弟是40-2=38岁。答案是38。

Q:当我3岁时,我的伴侣年龄是我的3倍。现在我20岁了。我的伴侣多大了?
让我们一步一步思考。
A:

CoT的优势:
- 低投入高效果
- 适用于现成的LLM(无需微调)
- 提供可解释性,可以看到LLM遵循的推理步骤
- 在不同LLM版本之间提高鲁棒性

CoT的劣势:
- 输出包含推理链,意味着更多输出token
- 预测成本更高,耗时更长

3.6 自我一致性 (Self-Consistency)

原理: 结合采样和多数投票来生成多样化的推理路径并选择最一致的答案。

步骤:
1. 生成多样化推理路径: 多次向LLM提供相同的提示,使用高温设置
2. 从每个生成的响应中提取答案
3. 选择最常见的答案

应用场景:
- 邮件分类系统
- 需要高准确度的推理任务

3.7 思维树 (Tree of Thoughts, ToT)

思维树是一种允许LLM探索多个推理路径的技术,在复杂的决策和规划任务中特别有用。

3.8 ReAct(推理与行动)

ReAct将推理和行动结合起来,允许模型:
- 进行推理(思考)
- 采取行动(如搜索信息)
- 基于观察结果继续推理

3.9 自动提示工程 (Automatic Prompt Engineering)

使用自动化方法来优化提示词,包括:
- 提示词变体生成
- 性能评估
- 迭代优化

3.10 代码提示

代码编写提示

编写一个Python函数,接受一个整数列表并返回排序后的列表。

代码解释提示

解释以下Python代码的功能:
[代码片段]

代码翻译提示

将以下Python代码转换为JavaScript:
[代码片段]

代码调试和审查提示

审查以下代码并提供改进建议:
[代码片段]

四、最佳实践

4.1 提供示例

  • 使用少样本提示来指导模型输出
  • 示例应与任务相关、多样化、高质量
  • 包含边缘案例以增强鲁棒性

4.2 设计简洁

  • 保持提示简洁明了
  • 避免不必要的复杂性
  • 清晰传达意图

4.3 对输出具体说明

  • 明确指定期望的输出格式
  • 使用JSON、表格等结构化格式
  • 限制幻觉的发生

4.4 使用指令而非约束

  • 告诉模型”做什么”而不是”不做什么”
  • 正面指令比负面约束更有效

4.5 控制最大token长度

  • 根据任务需求设置合适的输出长度
  • 避免不必要的计算资源浪费

4.6 在提示中使用变量

  • 使用模板化提示以便于复用
  • 动态插入不同值

4.7 尝试不同的输入格式和写作风格

  • 测试不同的提示结构
  • 尝试不同的语气和风格

4.8 分类任务的少样本提示混合类别

  • 确保示例涵盖所有类别
  • 避免类别偏见

4.9 适应模型更新

  • 跟踪模型版本变化
  • 相应调整提示策略

4.10 尝试输出格式

  • JSON、XML、Markdown等
  • 选择最适合下游应用的格式

4.11 与其他提示工程师协作实验

  • 分享和学习最佳实践
  • 团队协作提高效率

4.12 CoT最佳实践

  • 对于数学问题,明确步骤
  • 对于代码生成,分解为逻辑步骤
  • 使用”让我们一步一步思考”触发CoT

4.13 记录各种提示尝试

  • 维护提示版本历史
  • 记录配置参数和结果
  • 使用表格格式文档化提示

推荐的提示文档格式:
| 字段 | 说明 |
|------|------|
| Name | 提示名称 |
| Goal | 目标 |
| Model | 使用的模型 |
| Temperature | 温度设置 |
| Token Limit | Token限制 |
| Top-K | Top-K设置 |
| Top-P | Top-P设置 |
| Prompt | 提示内容 |
| Output | 预期输出 |


五、要点提炼

5.1 核心技术

  1. 零样本提示: 无需示例的简单任务
  2. 少样本提示: 使用3-5个示例指导模型
  3. 系统提示: 设置整体任务上下文
  4. 角色提示: 分配特定角色以获得专业响应
  5. 上下文提示: 提供具体背景信息
  6. 退后提示: 从普遍问题入手再解决具体问题
  7. 思维链(CoT): 要求模型展示推理步骤
  8. 自我一致性: 多次采样选择最常见答案

5.2 关键配置参数

  • Temperature: 控制随机性(0=确定性,1=高随机)
  • Top-K: 限制候选token数量
  • Top-P: 限制累积概率
  • Max Tokens: 控制输出长度

5.3 成功提示的关键原则

  1. 清晰具体的指令优于模糊的描述
  2. 示例比纯指令更有效
  3. 结构化的输出格式减少幻觉
  4. 迭代优化是必要的过程
  5. 文档化提示工程工作

六、相关链接/资源

  • 原文链接: https://www.gptaiflow.com/assets/files/2025-01-18-pdf-1-TechAI-Goolge-whitepaper_Prompt%20Engineering_v4-af36dcc7a49bb7269a58b1c9b89a8ae1.pdf
  • Google Vertex AI 文档: https://cloud.google.com/vertex-ai
  • Google CoT Notebook: https://github.com/GoogleCloudPlatform/generative-ai
  • Gemini 模型: https://deepmind.google/technologies/gemini/

七、版本信息

  • 白皮书版本: v4 (2024年9月)
  • 作者: Lee Boonstra
  • 审阅者: Michael Sherman, Yuan Cao, Erick Armbrust, Anant Nawalgaria, Antonio Gulli, Simone Cammel
  • 整理日期: 2026-02-04

本文档由AI助手基于Google官方Prompt Engineering白皮书整理,仅供学习参考。