今天推荐 Google 官方出品的提示工程(Prompt Engineering)白皮书,该书系统性介绍了Prompt Engineering 相关技术,包括 LLMs 基础知识、提示技巧和诸多最佳实践。
建议所有与 LLMs 打交道的人都看看,系统性的学习下提示工程,这将大大提升我们设计提示词的效果。点击文末阅读原文获取PDF。
白皮书 URL:https://drive.google.com/file/d/1AbaBYbEa_EbPelsT40-vj64L-2IwUJHy/view
谁都能写提示词:
You don’t need to be a data scientist or a machine learning engineer – everyone can write a prompt.
白皮书介绍了提示工程(Prompt Engineering)的基本概念及其在大型语言模型(LLMs)应用中的核心作用。作者强调,尽管任何人都可以编写提示,但设计高效提示需要综合考虑模型选择、训练数据、配置参数(温度、Top-K等)、措辞风格和上下文结构等因素。提示工程是一个迭代过程,不当的提示可能导致模糊或不准确的结果。白皮书重点聚焦于通过 Vertex AI 或 API 直接调用模型的场景,以便更灵活地控制配置参数。
Prompt engineeringis the process of designing high-quality prompts that guide LLMs to produce accurate outputs.
白皮书目录如下:
下面来简单总结下各章节主要,详细内容还是建议大家去看原文。
LLM Output Configuration
本章详细探讨了如何通过配置参数优化 LLMs 的输出效果:
- 输出长度(Output Length):限制生成文本的 token 数量,直接影响计算成本和响应速度,需根据任务需求平衡。
- 采样控制(Sampling Controls):包括温度(Temperature)、Top-K和Top-P。温度控制输出的随机性(低温度更确定,高温度更多样);Top-K 选择概率最高的前 K 个 token;Top-P(核采样)按累积概率动态选择 token 范围。极端参数(如温度=0、Top-K=1)会禁用其他参数的效果。
- 参数组合策略:建议初始配置(温度0.2、Top-P 0.95、Top-K 30)适用于大多数任务,高创造性任务可提高温度(0.9),数学问题则建议温度=0。此外,文中还警示了“重复循环”问题(模型因不当参数陷入重复输出),需通过参数调优解决。
Prompting Techniques
本章系统介绍了多种提示技术及其应用场景:
- 零样本提示(Zero-shot):仅提供任务描述,不包含示例,适用于简单分类任务(如电影评论情感分析)。
- 少样本提示(Few-shot):通过1-5个示例引导模型学习模式(如将披萨订单解析为 JSON 格式),需确保示例的多样性和质量。
- 系统提示(System Prompting):定义全局任务框架(如强制返回 JSON 格式或过滤有害内容),适用于结构化输出和安全性控制。
- 角色提示(Role Prompting):赋予模型特定身份(如导游、代码审查员),以调整输出风格和视角。
Step-back Prompting:通过先回答抽象问题(如“游戏关卡设计的核心原则”)再解决具体任务,激活模型的深层知识,提升复杂问题(如设计游戏剧情)的解决能力。
Chain of Thought & Advanced Techniques
本章深入探讨提升模型推理能力的方法:
- Chain of Thought (CoT):要求模型分步解释推理过程(如数学问题),显著提高复杂任务(如漏洞分类)的准确性。需注意输出长度增加带来的成本。
- Self-consistency:多次生成不同推理路径,通过多数投票选择最优答案,增强鲁棒性(如邮件分类任务中平衡矛盾结果)。
- Tree of Thoughts (ToT):允许多路径并行推理(如图1对比CoT与ToT),适用于需探索性决策的任务(如多步骤规划)。
- Reason & Act (ReAct):结合推理与外部工具调用(如搜索API),模拟人类“思考-行动”循环(如通过Google搜索汇总乐队成员子女数量),适用于需要实时数据的场景。
Code Prompting & Multimodal Prompting
本章聚焦代码生成与多模态提示的应用:
- Code Prompting:包括编写(如 Bash 脚本重命名文件)、解释(解析代码逻辑)、翻译(Bash 转 Python)和调试(修复 Python 错误)。示例展示了如何通过提示生成可执行代码,并强调测试的重要性。
- Multimodal Prompting:结合文本、图像等输入(如生成图像描述),需依赖模型的多模态支持。文中指出当前Gemini主要支持文本,但未来多模态提示潜力巨大。
Best Practices
本章总结了提示工程的实用建议:
- 提供示例:Few-shot prompting 能显著提升模型表现,需选择相关性强、多样化的示例。
- 简洁明确:避免复杂表述,使用动词(如“生成”、“分类”)明确任务,指定输出格式(如 JSON 格式)。
- 指令优先于约束:正向指令(如“仅讨论价格”)比负面约束(如“不要提及游戏名称”)更有效。
- 变量与实验:使用变量(如{city})来提升复用性,尝试不同输入格式(提问 vs 指令)和输出结构(JSON vs XML)。
- 模型更新适配:跟踪模型版本变化,及时调整提示策略。
- 文档记录:通过表格模板(如表21)记录提示版本、参数、输出结果及反馈,便于迭代和团队协作。
Summary & Endnotes
白皮书全文回顾了提示工程的核心技术与挑战,强调其作为迭代过程的本质。未来方向包括自动化提示生成(如 APE 技术)、多模态融合及更复杂的代理(Agent)系统开发。 文末附录提供了参考文献和工具链接(如 SerpAPI、json-repair 库),为实践提供支持。
通过对白皮书的学习,大家可以快速、全面地了解提示技术,并在实践中快速应用,能大大提升自身提示工程能力。