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 核心技术
- 零样本提示: 无需示例的简单任务
- 少样本提示: 使用3-5个示例指导模型
- 系统提示: 设置整体任务上下文
- 角色提示: 分配特定角色以获得专业响应
- 上下文提示: 提供具体背景信息
- 退后提示: 从普遍问题入手再解决具体问题
- 思维链(CoT): 要求模型展示推理步骤
- 自我一致性: 多次采样选择最常见答案
5.2 关键配置参数
- Temperature: 控制随机性(0=确定性,1=高随机)
- Top-K: 限制候选token数量
- Top-P: 限制累积概率
- Max Tokens: 控制输出长度
5.3 成功提示的关键原则
- 清晰具体的指令优于模糊的描述
- 示例比纯指令更有效
- 结构化的输出格式减少幻觉
- 迭代优化是必要的过程
- 文档化提示工程工作
六、相关链接/资源
- 原文链接: 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白皮书整理,仅供学习参考。