从谷歌白皮书看 Prompt 工程

最近系统看了一遍 Google 发布的《Prompt Engineering》白皮书(作者 Lee Boonstra,2024),里面对"如何和大语言模型打交道"有一套比较完整、可操作的思路。这篇文章把其中几个具有代表性的重点整理出来,方便大家在实际工作中参考使用。

全文只基于这份白皮书本身,不额外添加其他立场和观点。


一、Prompt 工程是一套持续迭代的"工程方法"

白皮书一开始就强调:
Prompt 工程不是随手写几句提示词,而是一套需要持续迭代的工程方法。

它包含几个核心环节:

  • 明确任务与目标
  • 设计初始提示
  • 配置模型参数(如温度、最大输出长度等)
  • 观察输出效果
  • 根据结果调整提示或参数
  • 在产品中集成和维护

白皮书指出,提示文本、模型本身以及模型配置,是共同决定输出质量的三个关键因素。同一个提示,在不同模型版本或不同参数下,表现可能完全不同。

此外,文中还特别提醒:

  • 模型会不断更新
  • 训练数据也会变化
  • 旧提示随时间可能不再适配新的模型行为

因此,白皮书建议把提示当作一类需要维护的"配置资产",要记录:

  • 使用的模型及版本
  • 对应的提示内容
  • 当时的参数设置(温度、Top-P、最大输出 tokens 等)
  • 效果是否满足预期

这样在模型升级或场景变化时,可以有依据地进行调整,而不是从零开始摸索。


二、示例比长篇说明更有效:Few-shot 提示的价值

在提示具体写法上,白皮书对多种方式进行了对比:零示例(zero-shot)、单示例(one-shot)、少示例(few-shot)等。其中few-shot 提示被反复强调为非常重要的实用手段

白皮书的核心观点可以概括为:

  • Zero-shot:只给任务说明,模型有时能正确完成,但不稳定
  • One-shot:提供一个示例,可以一定程度上引导模型模仿
  • Few-shot:提供多组示例(常见是 3--5 个),整体效果往往显著更好

特别是在分类、结构化输出、格式转换等任务中,few-shot 示例既能展示输入形式,又能给出期望的输出格式,相当于为模型提供了一个小型"任务说明书"。

白皮书还提出一个容易被忽略的细节:

在少示例分类任务中,示例中各个类别的出现顺序应尽量打乱,而不是固定顺序。

原因是,如果每次提示里类别顺序完全一致,模型可能会过度依赖"列表顺序",而不是从内容本身去抽取判别特征。通过打乱示例顺序,可以降低这种风险,让模型更多依赖真正有用的信息。这一点在实际设计提示时非常有操作性:不仅要准备高质量示例,还要注意示例本身的排列方式


三、让模型"慢一点想":Chain-of-Thought 与 Step-back 提示

对于推理复杂、步骤较多的任务,白皮书重点介绍了思维链(Chain-of-Thought, CoT)Step-back Prompting 两种思考方式。

1. Chain-of-Thought(思维链)

白皮书指出,传统做法往往直接让模型给出最终答案,而 CoT 的思路是:

  • 在提示中明确要求模型"逐步思考"
  • 让模型先写出中间推理步骤,再给出结论

例如,在题目后增加类似语句:

"Let's think step by step."

在白皮书的例子中,这种方式可以显著提升模型在数学题、逻辑题、多步骤推理任务上的表现。优点包括:

  • 无需额外训练或微调
  • 不改变模型结构
  • 增强结果的可解释性(用户能看到中间步骤)

这是一种成本极低、收益明显的提示方式。

2. Step-back Prompting(后退式思考)

另外,白皮书还介绍了一种更偏"宏观思考"的提示方式:Step-back Prompting。

它的做法是先引导模型从更高层次、更抽象的角度重新审视问题,例如:

  • 先让模型总结当前任务的本质要素
  • 再基于这些抽象要素来给出方案或回答

这种方法特别适合:

  • 涉及策略规划的任务
  • 问题本身较为模糊,需要先澄清目标的任务
  • 需要从多个角度综合考量的情景

白皮书将 CoT 与 Step-back 视为重要的进阶提示技巧:前者侧重细致的"步骤推理",后者强调在回答前进行"整体抽象"。


四、清晰的输出格式能显著提升可靠性

白皮书在"最佳实践"中反复强调:必须在提示中明确期望的输出形式。

常见的格式包括:

  • 按段落分结构化回答
  • 使用项目符号列表(bullet points)
  • 严格遵守某种模板
  • 输出符合 JSON 或 XML 的结构化数据

文中指出,当任务本身就是:

  • 信息抽取
  • 分类与打标
  • 文本解析与重组
  • 数据整理

这类场景时,如果能够在提示中明确写出"需要哪些字段、字段之间是什么关系、输出格式示例是什么样的",通常可以显著减少:

  • 输出冗长但无结构的文本
  • 字段遗漏
  • 随意添加未要求信息

对于开发场景来说,白皮书特别推荐让模型输出 JSON 等机器易解析的格式,并在提示中给出字段名称和示例结构,要求模型"严格遵守此结构输出"。这类格式化要求,并不是额外负担,实际上是稳定性的重要来源。


五、模型参数与提示设计要一起考虑

在介绍提示技巧的同时,白皮书也花了篇幅讲解采样控制参数输出长度设置对结果的影响,例如:

  • Temperature(温度)
  • Top-K
  • Top-P
  • 最大输出 tokens(output length)

白皮书的整体原则是:

  • 对于需要稳定、可复现答案的任务(如分类、解析、规则型回答),可以将温度设得较低,使输出更确定
  • 对于追求多样性和创造性的任务(如文案生成、创意内容),可以适当提高温度或调整 Top-P,让模型有更多探索空间
  • 同时要限制最大输出长度,避免出现过长、不聚焦的回答,也能节省资源

文中把这些设置看作提示工程的一部分,而不是与提示无关的"附属配置"。换句话说:在白皮书的视角里,Prompt = 文本 + 上下文 + 模型配置


六、提示需要文档化与版本管理

在白皮书的后半部分,专门提到提示工程在团队与产品场景中的实践建议,其中有几点非常值得注意:

  1. 为提示建立版本记录

    • 每次修改提示内容时,记录时间、修改原因、对应模型版本
    • 标记当前版本在各类用例中的表现(较好、一般、不符合预期)
  2. 将提示从代码中抽离

    • 不直接把提示"写死"在代码里
    • 通过配置文件、外部存储等方式管理
    • 便于在不改动代码的前提下更新提示
  3. 把提示纳入测试流程

    • 对关键提示配套测试用例
    • 在模型更新或参数调整后,重新跑这些用例
    • 以此评估提示是否仍然可用

这些建议都来自白皮书本身,目标是让提示工程真正融入产品开发流程,而不仅停留在"临时尝试"的阶段。


结语

整体来看,Google 这份《Prompt Engineering》白皮书提供的,不是一组零散的技巧,而是一条相对完整的思路链:

从"把提示当作可以迭代的工程对象",

到"通过示例、思维链、格式约束等手段提高输出质量",

再到"在团队和产品层面建立提示的文档化与测试机制"。

如果需要与大语言模型长期协作,这些做法都具有较高的参考价值。

以上内容全部基于白皮书中的论述进行整理,希望对你在设计和优化提示时有所帮助。

相关推荐
松岛雾奈.2308 分钟前
机器学习--数据集的标准化和归一化算法;随机森林
人工智能·算法·机器学习
阿明Drift11 分钟前
用 RAG 搭建一个 AI 小说问答系统
前端·人工智能
朱龙凯15 分钟前
LangChain学习笔记
人工智能
飞哥数智坊27 分钟前
Cursor 2.1 发布实测:计划能点了,审查能用了,CR 花多少?我也替你试了
人工智能·ai编程·cursor
凯子坚持 c28 分钟前
Doubao-Seed-Code模型深度剖析:Agentic Coding在Obsidian插件开发中的应用实践
网络·人工智能
iFlow_AI39 分钟前
iFlow CLI快速搭建Flutter应用记录
开发语言·前端·人工智能·flutter·ai·iflow·iflow cli
落羽的落羽1 小时前
【Linux系统】解明进程优先级与切换调度O(1)算法
linux·服务器·c++·人工智能·学习·算法·机器学习
2501_941807261 小时前
可持续发展与绿色科技的未来:从创新到实践
大数据·人工智能·物联网
小王毕业啦1 小时前
1999-2023年 地级市-数字经济综合发展指数
大数据·人工智能·数据挖掘·数据分析·数据统计·社科数据·实证数据