报告地址:提示词工程白皮书
这份《Prompt Engineering》白皮书是谷歌2025年发布的权威指南,涵盖提示工程的核心概念、技术、配置和最佳实践,非常适合从零开始系统学习。以下是为你梳理的 学习路径+核心知识点+实操建议,帮你高效掌握:
一、先搞懂:什么是提示工程?(基础认知)
核心定义
- 提示(Prompt)是大语言模型(LLM)的输入,用于引导模型生成特定输出(文本、代码、答案等)。
- 提示工程(Prompt Engineering):设计高质量提示,优化模型配置和表达,让LLM更精准、高效地完成任务的迭代过程。
- 关键前提:无需成为数据科学家/ML工程师,任何人都能学习,但需兼顾模型特性、表达逻辑和任务需求。
为什么重要?
- 劣质提示会导致模型输出模糊、错误或无关内容;
- 好的提示能让普通LLM发挥超预期效果,甚至媲美微调模型。
二、第一步:掌握LLM输出配置(控制模型"行为")
在写提示前,先了解模型的核心配置,直接影响输出效果:
| 配置项 | 作用 | 关键参数&用法 |
|---|---|---|
| 输出长度(Token Limit) | 控制生成内容的长度 | - 过长:耗时、费成本;过短:内容截断(比如ReAct会产生无用token); - 需结合任务:分类任务设5-10Token,长文本生成设1024+。 |
| 温度(Temperature) | 控制输出随机性(0-∞) | - 0:确定性输出(贪婪解码,选概率最高token,适合数学、事实问答); - 0.1-0.2:低随机性(适合分类、总结); - 0.9+:高随机性(适合创意写作、 brainstorm)。 |
| Top-K/Top-P(采样控制) | 限制候选token范围,平衡多样性 | - Top-K:选前K个高概率token(K=1=贪婪解码,K=30-40适合平衡创意); - Top-P:选累积概率≤P的token(P=0.95常用,避免低概率token); - 实操:默认0.2温度+0.95Top-P+30Top-K,创意任务调至0.9温度+0.99Top-P+40Top-K。 |
避坑点
- 温度过高(>10)或Top-K/Top-P设为最大值:输出杂乱无章;
- 温度0时,Top-K/Top-P失效;Top-K=1时,温度/Top-P失效;
- 注意"重复循环bug":低温度可能导致重复文本,高温度可能随机循环,需微调参数平衡。
三、核心技能:10大提示技术(按"易→难"排序)
每个技术都有明确适用场景,建议先掌握前5个基础技术,再进阶复杂技术:
1. 零样本提示(Zero-Shot)------ 入门首选
- 定义:只给任务描述,不给示例(适合简单、通用任务);
- 示例:
Classify movie reviews as POSITIVE, NEUTRAL or NEGATIVE. Review: "Her is a disturbing masterpiece." Sentiment:; - 适用场景:文本分类、简单问答、指令执行(如"总结这段文字");
- 关键:指令清晰,输出格式明确(比如要求大写标签)。
2. 单样本/少样本提示(One-Shot/Few-Shot)------ 解决复杂任务
- 定义:给1个(单样本)或3-5个(少样本)示例,引导模型学习模式;
- 示例:
Parse pizza orders to JSON: EXAMPLE: 我要小份芝士披萨 → {"size":"small","ingredients":["cheese"]}。用户输入:我要中份番茄+火腿披萨 → JSON:; - 关键:示例要"相关、多样、含边缘案例"(比如披萨订单示例包含"双配料""特殊要求");
- 适用场景:格式转换(JSON/表格)、复杂分类、自定义任务(如产品命名规则)。
3. 系统/角色/上下文提示(System/Role/Contextual)------ 精准引导模型定位
三者常结合使用,核心是给模型"明确身份/背景/规则":
| 类型 | 核心作用 | 示例 |
|---|---|---|
| 系统提示(System) | 定义任务规则、输出格式 | Classify reviews, return JSON: {"sentiment":"","name":""}(强制JSON输出); |
| 角色提示(Role) | 给模型分配身份,控制语气 | Act as a travel guide for Amsterdam, suggest 3 museums.(旅行向导角色); |
| 上下文提示(Contextual) | 提供背景信息,消除歧义 | Context: 为80年代街机游戏博客写文章 → 推荐3个选题(上下文限定"复古游戏")。 |
- 适用场景:客服对话(角色=客服)、专业内容生成(角色=医生/程序员)、需要结构化输出的任务(系统提示强制格式)。
4. 分步提示(Step-Back)------ 提升复杂任务准确性
- 定义:先让模型思考"通用问题"(激活背景知识),再解决"具体问题";
- 示例:
第一步(通用问题):What are 5 key settings for a challenging FPS level?(先明确FPS关卡的核心场景);
第二步(具体任务):Use one setting to write a FPS level storyline(基于通用答案生成具体内容); - 优势:减少偏见,激活模型知识库,让输出更有深度;
- 适用场景:创意写作、复杂推理、专业内容生成(如"写AI伦理相关文章",先问"AI伦理的核心争议点")。
5. 思维链提示(CoT)------ 解决数学/逻辑推理问题
- 定义:让模型生成"推理步骤",再给答案(弥补LLM直接计算/推理的缺陷);
- 反例(无CoT):
我3岁时伴侣是我3倍年龄,我现在20岁,伴侣多少岁?→ 模型可能答63(错误); - 正例(CoT):
Let's think step by step: 1. 我3岁时,伴侣年龄=3×3=9岁;2. 年龄差=9-3=6岁;3. 我20岁时,伴侣=20+6=26岁; - 进阶:结合少样本(给1个推理示例),效果更好;
- 适用场景:数学计算、逻辑推理、代码调试、复杂决策(如"是否投资某项目,列出分析步骤");
- 最佳实践:温度设为0(确保推理步骤稳定),答案放在推理后。
6. 自一致性(Self-Consistency):用"多数投票"提升推理可靠性
自一致性是对思维链(CoT) 的优化技术,核心解决CoT"单一推理路径可能出错"的问题,通过生成多条推理路径并取多数结果,提升复杂任务的准确性。
(1)核心定义与解决的痛点
- 定义:通过"多轮采样生成推理路径+多数投票选最优答案"的方式,降低LLM单一推理的随机性误差,尤其适用于"存在明确正确答案但推理易出错"的任务(如逻辑判断、风险分类)。
- 痛点解决:LLM的CoT技术依赖"贪心解码"(只选概率最高的推理步骤),若某一步推理偏差,会导致最终答案错误;自一致性通过"多路径验证",让正确答案在多数推理中浮现。
(2)工作原理(三步流程)
文档明确其标准流程,需结合高温度配置 (鼓励推理多样性)和结果统计:
- 生成多样推理路径:对同一问题,用高温度(如0.9-1.0)多次调用LLM生成推理过程(每次推理步骤可能不同);
- 提取答案:从每条推理路径中提取最终结论(如"IMPORTANT"或"NOT IMPORTANT");
- 多数投票:选择出现次数最多的答案作为最终结果(视为"最一致、最可靠"的结论)。
(3)实操案例(文档中邮件分类任务)
任务:将一封"黑客报告网站漏洞"的邮件分类为"IMPORTANT"或"NOT IMPORTANT"(邮件语气友好,易误导LLM)。
- 多轮推理示例 :
- 尝试1:认为"漏洞是安全风险,需紧急处理"→ 结论"IMPORTANT";
- 尝试2:认为"邮件无紧迫感、未要求行动"→ 结论"NOT IMPORTANT";
- 尝试3:认为"漏洞可执行恶意代码, sender身份不明"→ 结论"IMPORTANT";
- 结果:"IMPORTANT"出现2次,"NOT IMPORTANT"出现1次,最终选择"IMPORTANT",符合实际安全需求。
(4)适用场景与优缺点
- 适用场景:逻辑分类(如邮件重要性、风险等级)、数学计算验证、事实性推理(如"某事件是否符合政策");
- 优点:无需微调,仅通过多轮采样提升准确性;能降低LLM的"幻觉"和"单一推理偏差";
- 缺点:成本高(需多次调用LLM,消耗更多Token和时间);仅适用于"有明确正确答案"的任务,创意类任务(如写作)不适用。
7. Tree of Thoughts(ToT):用"多路径探索"解决复杂决策
ToT是对CoT的泛化升级,将"单一线性推理链"扩展为"多分支推理树",让LLM像人类一样"探索不同解决思路",适用于需要"分步决策、多方案评估"的复杂任务。
(1) 核心定义与核心差异
-
定义:通过构建"思维树"(每个节点代表一个推理步骤/中间结论),让LLM在每个节点探索多条可能的推理路径,最终筛选出最优路径,解决CoT"线性推理无法回溯"的问题。
-
与CoT的关键差异 :
维度 思维链(CoT) Tree of Thoughts(ToT) 推理结构 单一线性链(A→B→C→答案) 多分支树(A→B1/A→B2→C1/C2→答案) 路径探索 无法回溯,错一步则全错 可在每个节点探索多路径,灵活调整 适用任务 简单推理(如数学计算) 复杂决策(如规划、创意设计) 中间结论利用 仅用最终推理链 评估每个节点的中间结论,剪枝无效路径
(2)工作原理(四步流程)
文档强调ToT的核心是"维护思维树+动态剪枝":
- 问题拆解:将复杂任务拆分为多个"中间步骤"(如"写小说"拆分为"设定世界观→设计角色→规划剧情→填充细节");
- 生成思维树:对每个中间步骤(树节点),生成多条可能的推理路径(如"世界观设定"可生成"科幻/奇幻/复古"3条路径);
- 评估与剪枝:LLM对每个节点的推理路径进行"有效性评估"(如"复古世界观是否符合小说主题"),剔除无效路径(如"科幻与主题不符");
- 筛选最优路径:遍历修剪后的思维树,选择逻辑最连贯、结果最优的路径,生成最终答案。
(3)实操案例(文档隐含场景:游戏关卡设计)
任务:为第一人称射击(FPS)游戏设计一个"有挑战性的关卡剧情"。
- ToT推理过程 :
- 中间步骤1(关卡场景选择):生成"废弃军事基地/赛博朋克城市/水下研究设施"3条路径;
- 评估剪枝:剔除"废弃军事基地"(过于常见,缺乏新意),保留后两者;
- 中间步骤2(敌人设计):对"水下研究设施"生成"变异海洋生物/失控机器人"2条路径;
- 评估剪枝:选择"变异海洋生物"(与水下场景更契合,增加沉浸感);
- 最终路径:水下研究设施→变异海洋生物→需要潜水装备+解谜→关卡剧情(如"玩家潜入深海实验室,对抗变异生物,破解洪水危机")。
(4)适用场景与关键优势
- 适用场景:复杂规划(如项目管理计划、旅行路线设计)、创意创作(如小说/剧本分镜)、多步骤决策(如产品设计方案评估);
- 关键优势 :
- 灵活性高:可回溯、调整推理路径,避免CoT"一步错全错";
- 深度推理:能处理"需要多方案对比"的任务,结果更全面;
- 可解释性强:每个节点的推理过程和评估逻辑可追溯,便于调试。
8. ReAct:用"推理+工具"解决"知识不足"问题
ReAct是结合"自然语言推理"与"外部工具调用"的范式,让LLM像人类一样"思考→行动→获取信息→再思考",解决LLM"知识过时、无法获取实时数据"的核心痛点。
(1)核心定义与核心价值
- 定义:通过"思维-行动-观察"循环(Thought→Action→Observation),让LLM先推理"需要什么信息",再调用外部工具(如搜索、数据库、代码解释器)获取信息,最后基于信息生成答案,实现"Agent化"(自主完成复杂任务)。
- 核心价值:突破LLM"静态知识"局限------LLM的训练数据有时间截止(如2023年),无法获取实时信息(如2025年事件)或特定领域数据(如某公司财报),ReAct通过工具调用填补这一空白。
(2) 工作原理(循环流程)
文档以"查询Metallica乐队成员子女总数"为例,明确ReAct的标准循环:
- 思维(Thought):分析问题,确定"需要先知道Metallica成员名单,再查每个成员的子女数量,最后求和";
- 行动(Action):调用工具(如SerpAPI搜索),输入"Metallica乐队成员名单";
- 观察(Observation):获取工具返回结果(如"成员包括James Hetfield、Lars Ulrich、Kirk Hammett、Robert Trujillo");
- 循环迭代 :基于观察结果继续推理→行动→观察:
- 思维:"需查James Hetfield的子女数量"→行动:搜索→观察:"3个孩子";
- 思维:"需查Lars Ulrich的子女数量"→行动:搜索→观察:"3个孩子";
- 以此类推,直到获取所有成员数据;
- 生成答案:汇总观察结果(3+3+2+2=10),返回最终答案。
(3)实操关键(文档强调的技术细节)
- 工具配置:需结合框架(如LangChain)加载工具(如搜索工具SerpAPI、代码工具Python Interpreter),并配置API密钥(如SerpAPI密钥);
- 提示设计:必须在提示中明确"允许调用工具"和"输出格式"(如"先思考需要什么信息,再用Action: [工具名] + Input: [查询词] 格式调用工具");
- 结果处理:需自动保存"思维-行动-观察"历史,供LLM后续推理使用;若工具返回无效信息(如搜索结果为空),需让LLM重新调整查询词(如"Metallica current members 2025")。
(4) 适用场景与优缺点
- 适用场景:实时信息查询(如"2025年奥斯卡最佳影片")、数据计算(如"某股票近30天涨幅")、跨平台交互(如"调用数据库查询用户信息")、复杂工具任务(如"用代码生成图表");
- 优点:突破LLM知识局限,获取实时/特定数据;可自主完成"推理+执行"全流程,实现Agent化应用;
- 缺点:依赖外部工具(需配置API、处理工具故障);学习成本高(需掌握LangChain等框架);仅适用于"需要外部信息"的任务,纯逻辑推理(如数学题)不适用。
9. 自动提示工程(APE)------ 批量生成优质提示
- 定义:用LLM生成多个候选提示,通过BLEU/ROUGE评分筛选最优提示;
- 示例:为T恤电商聊天机器人生成提示→ 让LLM生成10种用户可能的提问方式(如"我要小码MetallicaT恤""Can I order a small Metallica t-shirt?")→ 筛选最贴合用户习惯的提示;
- 适用场景:大规模应用(如客服机器人、批量任务处理),减少人工编写成本。
10. 代码提示(Code Prompting)------ 开发者必备
- 四大场景:
- 写代码:
Write a Bash script to rename files in a folder by prepending "draft_"; - 解释代码:粘贴无注释代码,要求"逐行解释功能";
- 代码翻译:
Translate Bash script to Python; - 调试代码:粘贴报错代码+错误信息,要求"找出问题并修复";
- 写代码:
- 关键:输出格式明确(如"用Markdown格式返回代码"),生成后务必测试(LLM可能生成语法错误)。
四、必看:12个最佳实践(避坑+提效)
- 提供示例:少样本提示比零样本效果好10倍,示例要相关、多样;
- 简洁明确:避免复杂句式和冗余信息(比如"纽约带3岁孩子旅游"→ 优化为"Act as a travel guide for Manhattan with 3-year-olds");
- 明确输出格式:比如"生成3段博客,每段100字, conversational风格",而非"生成博客";
- 用指令代替限制:比如"只讨论游戏机名称、厂商、年份、销量",而非"不要提游戏名称";
- 控制Token长度:按任务设上限(如推文→280字符,长文→1024+Token);
- 使用变量 :复用提示(如
Tell me a fact about {city},替换{city}为阿姆斯特丹/巴黎); - 实验输入/输出格式:同一任务可试"问题式"(What is...)、"指令式"(Write...)、"陈述式"(The Sega Dreamcast is...);
- 分类任务混合示例类别:少样本示例中打乱POSITIVE/NEGATIVE顺序,避免模型死记硬背;
- 适配模型更新:新模型版本可能改变对提示的响应,需重新测试调整;
- 结构化输出(JSON/XML):非创意任务用JSON,减少幻觉、便于后续处理(如数据提取);
- 协作实验:和其他提示工程师一起头脑风暴,对比不同提示的效果;
- 完整文档记录:用表格记录每次尝试(模板如下),方便迭代和复盘:
| Prompt ID | 目标任务 | 模型 | 配置(温度/Top-K/Top-P) | 完整提示内容 | 输出结果 | 效果(OK/NOT OK) | 迭代优化点 |
|---|---|---|---|---|---|---|---|
| 1_1 | 电影评论分类 | gemini-pro | 0.1/NA/1 | ... | POSITIVE | OK | 无 |
| 1_2 | 披萨订单转JSON | gemini-pro | 0.1/NA/1 | ... | ... | SOMETIMES OK | 补充边缘案例 |
五、工具推荐
- 测试平台:Vertex AI Studio(谷歌官方,支持Gemini,可配置参数)、Gemini Chat(免费快速测试);
- 框架:LangChain(用于ReAct、工具调用)、json-repair(修复LLM生成的残缺JSON);
- 评估指标:BLEU/ROUGE(评估提示质量)、人工评分(输出相关性、准确性)。