Google《Prompt Engineering》2025白皮书——最佳实践十四式

最近看到google新发的白皮书,大致粗略看了下,里面的东西很干,话不多说,看图吧............

提示工程(Prompt Engineering)

一、引言(Introduction)

在大型语言模型(LLM)的输入输出逻辑中,文本提示(有时会伴随图像等其他模态提示)是模型用于生成特定输出的输入。无需成为数据科学家或机器学习工程师,每个人都能编写提示,但打造最高效的提示却颇具挑战性。提示的效果受多种因素影响,包括所使用的模型、模型的训练数据、配置参数、措辞选择、风格语气、结构及上下文等。因此,提示工程是一个迭代过程。设计不当的提示可能导致模棱两可、不准确的响应,阻碍模型输出有意义的结果。

本文档聚焦于在Vertex AI中或通过API对Gemini模型进行提示编写,因为直接向模型发送提示可配置温度等参数。文中详细探讨提示工程相关内容,涵盖各类提示技巧、模型输出配置、最佳实践等,助力读者入门并成为提示专家,同时也会提及编写提示时可能面临的挑战。

二、提示工程概述(Prompt Engineering Overview)

大型语言模型的核心是预测引擎:模型接收序列文本作为输入,基于训练数据预测下一个应出现的令牌(token),并将该预测令牌添加到序列文本末尾,持续重复这一预测过程。下一个令牌的预测基于前序令牌之间的关联以及模型在训练过程中习得的知识。

提示工程指设计高质量提示以引导大型语言模型生成准确输出的过程,涉及不断尝试优化提示、调整提示长度、评估提示的写作风格与结构是否适配任务等。在自然语言处理和大型语言模型的应用场景中,提示是提供给模型以生成响应或预测结果的输入,可用于实现文本摘要、信息提取、问答、文本分类、语言或代码翻译、代码生成、代码文档编写或推理等多种理解与生成任务。

进行提示工程时,首先需选择模型。无论使用Vertex AI中的Gemini语言模型、GPT、Claude,还是Gemma、LLaMA等开源模型,都可能需要针对特定模型优化提示。此外,还需调整大型语言模型的各项配置参数。

三、大型语言模型输出配置(LLM Output Configuration)

选择模型后,需确定模型配置。大多数大型语言模型都提供多种配置选项来控制输出,有效的提示工程需要针对具体任务优化这些配置。

(一)输出长度(Output Length)

输出长度配置指生成响应时的令牌数量。生成更多令牌需要模型进行更多计算,会导致能耗增加、响应速度变慢,且成本上升。减少输出长度并不会让模型的输出在风格或文本表达上更简洁,只是达到令牌限制后模型会停止预测。若需要短输出,可能还需设计相应的提示来配合。对于ReAct等部分提示技巧,输出长度限制尤为重要,否则模型可能在生成所需响应后继续输出无用令牌。

(二)采样控制(Sampling Controls)

大型语言模型并非预测单个令牌,而是为词汇表中的每个令牌分配预测概率,再通过采样确定下一个输出令牌。温度(Temperature)、Top-K和Top-P是控制令牌概率采样过程的核心配置,影响生成文本的随机性和多样性。

  1. 温度(Temperature):控制令牌选择的随机程度。温度越低,响应越具确定性,适合需要精准结果的场景;温度越高,输出越多样或出人意料。温度为0时(贪心解码)具有完全确定性,始终选择概率最高的令牌(若两个令牌概率相同,可能因平局处理方式不同导致输出有差异)。温度接近最大值时,输出随机性极强,当温度过高(如超过1,通常达到10以上),所有令牌的预测概率趋于均等。Gemini的温度控制类似机器学习中的softmax函数,低温度对应低softmax温度,强调单一高概率选项;高温度则扩大可接受范围,适用于创意输出等无需严格精准的场景。

  2. Top-K与Top-P:均用于限制下一个令牌从高概率令牌集合中选择。Top-K采样从模型预测分布中选取概率最高的K个令牌,K值越高,输出越具创意和多样性,K值越低,输出越严谨、贴合事实,K=1时等同于贪心解码。Top-P(核采样)选取累积概率不超过阈值P的令牌集合,P的取值范围为0(贪心解码)到1(包含所有令牌)。选择Top-K还是Top-P需通过实验确定,也可组合使用。

(三)配置组合应用(Putting it all together)

温度、Top-K、Top-P和输出令牌数量的选择取决于具体应用场景和预期结果,且各项设置相互影响,需了解所选模型对这些采样参数的组合逻辑。在Vertex Studio等支持所有三项参数的平台中,首先筛选出同时满足Top-K和Top-P条件的令牌,再应用温度进行采样;若仅支持其中一项,则仅基于该参数筛选。若不支持温度参数,则从满足Top-K和/或Top-P条件的令牌中随机选择。

极端参数设置可能导致其他参数失效:

  • 温度设为0或过高时,Top-K和Top-P失效;
  • Top-K设为1或等于词汇表大小时,温度和Top-P失效;
  • Top-P设为0(或极小值)或1时,温度和Top-K失效。

通用初始设置建议:

  • 温度0.2、Top-P 0.95、Top-K 30,可获得连贯且适度创意的结果;
  • 追求高创意可尝试温度0.9、Top-P 0.99、Top-K 40;
  • 需低创意、高准确性可设置温度0.1、Top-P 0.9、Top-K 20;
  • 针对有唯一正确答案的任务(如数学题),初始温度设为0。

注意:参数自由度越高(高温度、高Top-K、高Top-P、多输出令牌),模型生成无关内容的概率越大。此外,不当的温度和Top-K/Top-P设置可能导致模型陷入"重复循环漏洞",即反复生成相同的填充词、短语或句子结构,需通过调整参数平衡确定性与随机性来解决。

四、提示技巧(Prompting Techniques)

大型语言模型经过训练可遵循指令,但并非完美无缺,清晰的提示能帮助模型更准确地预测输出。结合模型的训练原理和工作机制,以下是关键提示技巧:

(一)通用提示/零样本提示(General prompting / zero shot)

零样本提示是最简单的提示类型,仅提供任务描述和启动文本(可为问题、故事开头或指令),不包含任何示例。适用于简单任务,若效果不佳,可采用"单样本"或"少样本"提示。

示例(Table 1)

名称(Name) 1_1_movie_classification
目标(Goal) 将电影评论分类为正面(POSITIVE)、中性(NEUTRAL)或负面(NEGATIVE)
模型(Model) gemini-pro
温度(Temperature) 0.1 令牌限制(Token Limit)5
Top-K N/A Top-P 1
提示(Prompt) 情感分析:将电影评论分类为正面、中性或负面。评论:《她》(Her)是一部令人不安的作品,揭示了若人工智能不受限制地发展,人类可能走向的方向。我希望有更多这样的杰作。
输出(Output) POSITIVE

(二)单样本与少样本提示(One-shot & few-shot)

单样本提示提供一个示例,少样本提示提供多个示例,帮助模型理解任务预期的输出结构或模式,尤其适用于引导模型遵循特定格式。少样本提示的示例数量需根据任务复杂度、示例质量和模型能力调整,一般建议至少3-5个,复杂任务可增加,同时需考虑模型输入长度限制。示例应与任务相关、多样化、高质量且表述清晰,必要时需包含边缘案例。

示例(Table 2)

目标(Goal) 将披萨订单解析为JSON格式
模型(Model) gemini-pro
温度(Temperature) 0.1 令牌限制(Token Limit)250
Top-K N/A Top-P 1
提示(Prompt) 示例1:我想要一个小号披萨,配料有奶酪、番茄酱和意大利辣香肠。JSON响应:{"size": "small", "type": "normal", "ingredients": [["cheese", "tomato sauce", "pepperoni"]]}示例2:能给我一个大号披萨吗?配料要番茄酱、罗勒和马苏里拉奶酪。 现在,我想要一个大号披萨,一半加奶酪和马苏里拉奶酪,另一半加番茄酱、火腿和菠萝。
输出(Output) {"size": "large", "type": "half-half", "ingredients": [["cheese", "mozzarella"], ["tomato sauce", "ham", "pineapple"]]}

(三)系统、上下文与角色提示(System, contextual and role prompting)

这三类提示均用于引导模型生成文本,但侧重点不同,且存在一定重叠:

  • 系统提示(System prompting):定义模型的整体上下文和目标,明确模型的核心能力和总体用途(如翻译、分类),可用于指定输出格式、适配特定需求(如代码兼容性)或控制安全性(如避免有害内容)。
  • 上下文提示(Contextual prompting):提供与当前任务或对话相关的具体细节和背景信息,帮助模型理解细微差异,生成更精准的响应。
  • 角色提示(Role prompting):为模型分配特定角色或身份,使模型的输出风格、语气和专业度与角色一致(如书籍编辑、幼儿园老师、旅行向导)。

系统提示示例(Table 3)

目标(Goal) 将电影评论分类为正面、中性或负面
模型(Model) gemini-pro
温度(Temperature) 1 令牌限制(Token Limit)5
Top-K 40 Top-P 0.8
提示(Prompt) 以大写形式返回标签。情感分析:将电影评论分类为正面、中性或负面。仅返回标签。评论:《她》(Her)是一部令人不安的作品,揭示了若人工智能不受限制地发展,人类可能走向的方向。它太令人不安了,我没能看完。
输出(Output) NEGATIVE

角色提示示例(Table 5)

目标(Goal) 扮演旅行向导,提供3个旅行建议
模型(Model) gemini-pro
温度(Temperature) 1 令牌限制(Token Limit)1024
Top-K 40 Top-P 0.8
提示(Prompt) 我希望你扮演旅行向导。我会告诉你我的位置,你需推荐3个附近值得游览的地方,有时我也会告知我想参观的景点类型。
输出(Output) 1. 梵高博物馆(Van Gogh Museum):沉浸在文森特·梵高引人入胜的作品中。该博物馆收藏了他最多的画作和素描,包括《星夜》和《向日葵》。 2. 阿姆斯特丹市立博物馆(Stedelijk Museum Amsterdam):探索来自世界各地的现代和当代艺术。博物馆藏品包括毕加索、康定斯基和里特维尔德的作品,陈列在一座极具设计感的现代建筑中。

上下文提示示例(Table 7)

目标(Goal) 为复古游戏博客推荐文章主题
模型(Model) gemini-pro
温度(Temperature) 1 令牌限制(Token Limit)1024
Top-K 40 Top-P 0.8
提示(Prompt) 上下文:你正在为一个关于20世纪80年代街机视频游戏的博客撰稿。推荐3个文章主题,并附上简短的内容描述。
输出(Output) 1. 《街机机柜设计的演变》:本文将探讨街机机柜设计的发展历程,从20世纪70年代早期的木质和金属机柜,到80年代及以后时尚的霓虹灯光设计。 2. 《昔日重现:80年代标志性街机游戏》:本文将回顾20世纪80年代一些最具标志性和影响力的街机游戏的历史、影响和遗产,重点介绍它们的创新之处、流行机制和持久魅力。 3. 《像素艺术的兴起与复古复兴》:本文将深入探讨像素艺术作为早期街机游戏标志性视觉风格的演变,追溯其起源、探索其技术,并讨论其在现代游戏和数字艺术中的复兴

机游戏的历史、影响和遗产,重点介绍它们的创新之处、流行机制和持久魅力。 3. 《像素艺术的兴起与复古复兴》:本文将深入探讨像素艺术作为早期街机游戏标志性视觉风格的演变,追溯其起源、探索其技术,并讨论其在现代游戏和数字艺术中的复兴。

(四)回溯提示(Step-back prompting)

回溯提示是一种提升模型性能的技术,通过先引导模型思考与特定任务相关的一般性问题,再将该问题的答案作为后续特定任务提示的输入,让模型在解决具体问题前激活相关背景知识和推理过程。借助对更广泛底层原理的思考,模型能生成更准确、更具洞察力的响应,还可减少响应中的偏见,同时调用模型参数中更多原本直接提示时未被激活的知识。

示例对比

  • 传统提示目标:为第一人称射击游戏的一个关卡编写故事情节。
    输出:玩家小队在密集城区遭到敌方派系伏击,需穿过迷宫般的后巷和破旧建筑,利用潜行和精准射击消灭敌人、躲避侦查,途中发现敌人计划发动毁灭性攻击的情报,需争分夺秒收集证据并传回总部。
  • 回溯提示第一步:基于热门第一人称射击游戏,列出5个构建富有挑战性和吸引力关卡故事情节的虚构关键场景。
    输出:1. 废弃军事基地:后末日风格的庞大军事设施,充斥变异士兵和失控机器人,适合激烈枪械战斗;2. 赛博朋克城市:霓虹闪烁的未来都市,高楼林立、小巷密集,有强化改造敌人和黑客机制;3. 外星飞船:滞留地球的巨大外星 vessel,走廊诡异、含零重力区域,需对抗外星生物;4. 僵尸小镇:被大批狂暴僵尸占领的荒芜小镇,侧重近距离激战和解谜求生;5. 水下研究设施:被水淹没的深海实验室,有变异水生生物,需潜行和水下探索技能。
  • 回溯提示第二步(结合第一步输出):从上述场景中选一个,为第一人称射击游戏新关卡编写富有挑战性和吸引力的故事情节。
    输出:在幽暗深渊深处,矗立着一座破败的水下研究设施,是人类野心与灾难后果的见证。设施笼罩在黑暗中,故障机器的嗡嗡声与溺水者的回声交织,如今已成为深海噩梦生物的滋生地。玩家作为装备先进潜水设备和实验性武器的精英海军陆战队员,奉命潜入这片水下恐怖领域,需穿越危险走廊、破解神秘谜题、对抗恐怖海洋怪物,既要承受深海高压,又要智取狡猾的水生掠食者,每一刻都在考验人类的耐力与勇气。

(五)思维链提示(Chain of Thought, CoT)

思维链提示通过生成中间推理步骤来提升模型的推理能力,助力生成更准确的答案,常与少样本提示结合以应对需推理的复杂任务(零样本思维链挑战较大)。其优势包括:无需微调即可在现成模型上高效发挥作用、可解释性强(能追踪推理步骤以定位问题)、在不同模型版本间鲁棒性更高(提示性能漂移更少);缺点是推理步骤会增加输出令牌数量,导致成本上升、响应速度变慢。

数学问题示例

  • 无思维链提示:"我3岁时,伴侣年龄是我的3倍,现在我20岁,伴侣多少岁?"
    输出:63岁(错误)。
  • 思维链提示(零样本):"我3岁时,伴侣年龄是我的3倍,现在我20岁,伴侣多少岁?请逐步思考。"
    输出:1. 假设当前我的年龄为x岁;2. 我3岁时,年龄是3岁;3. 当时伴侣年龄是我的3倍,即3×3=9岁;4. 现在我20岁,比3岁时增长了20-3=17岁;5. 伴侣当时9岁,同样增长17岁,因此当前年龄为9+17=26岁。答案是26岁。
  • 思维链提示(单样本):先提供示例"弟弟2岁时我4岁(年龄差2岁,我更大),现在我40岁,弟弟38岁",再提问"我3岁时伴侣年龄是我的3倍,现在我20岁,伴侣多少岁?请逐步思考。"
    输出:我3岁时,伴侣3×3=9岁(年龄差6岁,伴侣更大),现在我20岁,伴侣20+6=26岁。答案是26岁。

思维链提示适用于代码生成(将需求拆解为步骤并映射到代码行)、基于种子生成合成数据等场景,任何可通过"逐步讲解"解决的任务都可尝试该技术。

(六)自一致性提示(Self-consistency)

尽管大型语言模型在多项自然语言处理任务中表现出色,但推理能力仍有局限。思维链提示采用"贪心解码"策略,效果受限,而自一致性提示结合采样和多数投票,生成多种推理路径并选择最一致的答案,提升响应的准确性和连贯性,同时能提供答案正确的伪概率,但成本较高。

实施步骤

  1. 生成多样化推理路径:向模型多次输入相同提示,通过高温度设置鼓励生成不同推理角度和路径;
  2. 从每个生成响应中提取答案;
  3. 选择出现频率最高的答案作为最终结果。

邮件分类示例(目标:将邮件分类为"重要(IMPORTANT)"或"不重要(NOT IMPORTANT)"):

  • 邮件内容:发件人Harry(自称黑客)提到收件人网站用WordPress搭建,发现联系表单在输入姓名时会触发JavaScript弹窗漏洞(附截图),同时表示网站整体很棒,甚至建议保留漏洞以便有更多有趣内容可读。
  • 多次推理输出差异:
    尝试1结论:邮件目的是告知联系表单漏洞,未提紧急性、无行动请求,故分类为"不重要";
    尝试2结论:漏洞可能允许攻击者执行任意JavaScript代码,存在网站被控制、敏感信息泄露或遭破坏的风险,且发件人身份不明,故分类为"重要"。
  • 自一致性应用:生成多条思维链后,选择"重要"作为最终答案(多数一致结果),提升分类准确性。

(七)思维树提示(Tree of Thoughts, ToT)

思维树提示是思维链提示的通用扩展,允许模型同时探索多条不同推理路径,而非单一线性思维链。该技术通过构建"思维树",将每个思维节点作为解决问题的中间步骤,模型可从树的不同节点分支探索推理路径,尤其适合需探索性的复杂任务。相关细节可参考论文《Large Language Model Guided Tree-of-Thought》及配套示例文档。

(八)反应式提示(ReAct (reason & act))

反应式提示将自然语言推理与外部工具(搜索、代码解释器等)结合,使模型能执行特定操作(如调用外部API获取信息),是构建智能体(agent)模型的基础步骤,其模仿人类"语言推理+行动获取信息"的现实行为模式,在多个领域表现优于其他提示技术。

反应式提示通过"思维-行动"循环实现:模型先推理问题并制定行动方案,执行方案后观察结果,再根据结果更新推理并生成新方案,重复该过程直至解决问题。

代码示例(Python+LangChain框架)

目标:计算Metallica乐队成员的孩子总数。

  1. 环境准备:需创建SerpAPI密钥并设置环境变量,安装langchain、google-cloud-aiplatform、google-search-results等库;
  2. 核心代码:加载搜索工具,初始化VertexAI模型和零样本反应式智能体,运行提示"Metallica乐队成员有多少个孩子?";
  3. 执行过程(思维-行动循环):
    • 思维1:Metallica有4名成员,需分别查询每人孩子数量;行动1:搜索"James Hetfield有多少个孩子?",观察结果:3个;
    • 思维2:已获取1/4成员数据(共3个孩子);行动2:搜索"Lars Ulrich有多少个孩子?",观察结果:3个;
    • 思维3:已获取2/4成员数据(共6个孩子);行动3:搜索"Kirk Hammett有多少个孩子?",观察结果:2个(与第二任妻子的两个儿子);
    • 思维4:已获取3/4成员数据(共8个孩子);行动4:搜索"Robert Trujillo有多少个孩子?",观察结果:2个;
    • 思维5:4名成员数据齐全,总数3+3+2+2=10个;最终答案:10个。

实际应用中,反应式提示需持续重新发送历史提示/响应(并修剪多余生成内容),同时为模型配置合适示例和指令。

(九)自动提示工程(Automatic Prompt Engineering, APE)

鉴于手动编写提示的复杂性,自动提示工程通过模型生成提示、评估优化、循环迭代的方式,减少人工输入需求,提升模型在各类任务中的性能。

应用示例(为乐队周边T恤网店训练聊天机器人)

  1. 生成提示变体:用gemini-pro模型生成10个与"一件Metallica S码T恤"语义相同的订单表述,如"我想购买一件Metallica小码T恤""能订一件Metallica S号T恤吗?"等;
  2. 评估筛选:采用BLEU(双语评估替补)或ROUGE(基于召回率的摘要评估)等指标对生成的提示候选进行评分;
  3. 优化迭代:选择评分最高的候选提示用于软件应用或聊天机器人,也可微调后再次评估。

(十)代码提示(Code prompting)

Gemini模型支持通过文本提示生成代码,涵盖代码编写、解释、翻译、调试与审查等场景,以下为具体示例:

1. 代码编写提示

目标:编写Bash脚本,实现输入文件夹名称后,为该文件夹内所有文件添加"draft_"前缀重命名。

提示:"编写Bash代码片段,先请求用户输入文件夹名称,然后获取该文件夹内容,为所有文件名称前添加'draft'前缀进行重命名。"

输出:包含文件夹存在性检查、文件遍历、重命名逻辑及成功提示的完整Bash脚本,且附带注释说明。

(测试验证:将脚本保存为"rename_files.sh",在终端运行后输入测试文件夹名称,文件夹内文件可成功重命名为"draft_原文件名"格式。)

2. 代码解释提示

目标:解释上述Bash脚本(移除注释后)的功能。

提示:"解释以下Bash代码:[移除注释后的脚本代码,含文件夹检查、文件数组定义、循环重命名等逻辑]"

输出:分步骤解析脚本功能:

  1. 用户输入:通过echo和read命令获取文件夹名称并存入变量;
  2. 文件夹检查:用"[ ! -d "$folder_name" ]"判断文件夹是否存在,不存在则输出错误并退出;
  3. 文件列表:通过"files=( "$folder_name"/* )"创建包含文件夹内所有文件路径的数组;
  4. 文件重命名:循环遍历文件数组,用"draft_(basename"(basename "(basename"file")"生成新文件名,通过mv命令重命名;
  5. 成功提示:重命名完成后输出"Files renamed successfully."。
3. 代码翻译提示

目标:将上述Bash脚本翻译为Python代码。

提示:"将以下Bash代码翻译为Python代码片段:[Bash脚本代码]"

输出:使用os和shutil库实现相同功能的Python脚本,包括用户输入获取、文件夹合法性检查、文件遍历重命名及成功提示,逻辑与原Bash脚本一致。

(注意:在Vertex AI的Language Studio中生成Python代码时,需点击"Markdown"按钮以保留正确缩进,否则代码可能无法运行。)

4. 代码调试与审查提示

目标:调试一段存在错误的Python代码(需求:让用户输入文件名前缀,将前缀转为大写后为文件重命名,当前代码运行报错)。

提示:"调试并优化以下Python代码:[错误代码,含toUpperCase()函数调用错误、os.path.joi()拼写错误、变量使用顺序错误等问题],指出问题并说明改进方法。"

输出:1. 错误识别:① Python中无toUpperCase()方法,应使用str.upper();② 变量prefix在使用后才定义,需调整顺序;③ os.path.joi()拼写错误,应为os.path.join();④ 缺少文件重命名异常处理;2. 优化代码:修正上述错误,添加try-except异常捕获块,并优化文件名生成逻辑(分离文件名与后缀)。

(十一)多模态提示(Multimodal prompting)

多模态提示区别于传统文本单模态提示,通过结合文本、图像、音频、代码等多种输入格式引导模型生成响应,具体应用需根据模型能力和任务需求确定,目前Gemini模型在代码提示场景仍以文本输入为主。

五、最佳实践(Best Practices)

要成为高效的提示工程师,需遵循以下最佳实践,通过持续试验与优化提升提示效果:

(一)提供示例(Provide examples)

在提示中加入单样本或少样本示例是最重要的实践之一,示例作为"教学工具",能展示预期输出风格或模式,帮助模型精准匹配需求,提升响应的准确性、风格一致性和语气贴合度。

(二)简洁设计(Design with simplicity)

提示需简洁、清晰,便于人与模型理解。若提示本身让使用者困惑,模型也大概率难以准确解读。应避免复杂表述和冗余信息,优先使用动词明确行动指令,如"扮演(Act)""分析(Analyze)""分类(Classify)""生成(Generate)""总结(Summarize)"等。

示例优化

  • 优化前:"我现在在纽约,想了解一些好地方,还带着两个3岁的孩子,假期该去哪里?"
  • 优化后:"扮演旅游向导,为带3岁儿童的游客推荐纽约曼哈顿值得游览的好去处。"

(三)明确输出要求(Be specific about the output)

简洁指令可能因过于笼统无法有效引导模型,需通过系统提示或上下文提示明确输出细节:

正面示例 :"生成一篇3段式博客文章,主题为'五大热门游戏主机',内容需兼具信息量与吸引力,采用对话式写作风格。"
反面示例:"生成一篇关于游戏主机的博客文章。"

(四)优先使用指令而非约束(Use Instructions over Constraints)

  • 指令(Instruction):明确指定响应的格式、风格或内容,告知模型"应做什么";
  • 约束(Constraint):设定响应的限制条件,告知模型"不应做什么"。

研究表明,正面指令比依赖约束更有效,符合人类对正面引导的偏好。指令能直接传达预期结果,给予模型在边界内的创造力;约束易导致模型困惑,且多条约束可能相互冲突。仅在需防止有害/偏见内容或强制特定格式时使用约束。

示例对比

  • 指令(推荐):"生成1段关于五大游戏主机的博客内容,仅讨论主机名称、生产公司、发布年份和总销量。"
  • 约束(不推荐):"生成1段关于五大游戏主机的博客内容,不要列出游戏名称。"

(五)控制最大令牌长度(Control the max token length)

可通过两种方式控制模型响应长度:1. 在模型配置中设置最大令牌限制;2. 在提示中明确要求特定长度,如"用推文长度(约280字符)解释量子物理"。

(六)在提示中使用变量(Use variables in prompts)

为实现提示复用和动态调整,可在提示中引入变量,针对不同输入替换变量值。例如为旅行指南提示设置{city}变量,当{city}赋值为"Amsterdam"时,提示为"你是旅行向导,请介绍关于阿姆斯特丹的一个事实",输出可得到"阿姆斯特丹是一座遍布运河、桥梁和狭窄街道的美丽城市,以丰富的历史、文化和夜生活成为热门旅游地"。变量能减少重复工作,尤其适合集成到应用程序中。

(七)尝试不同输入格式与写作风格(Experiment with input formats and writing styles)

模型响应受输入格式、措辞、提示类型(零样本/少样本/系统提示)等因素影响,建议针对同一任务尝试多种表述方式,如:

  • 疑问式:"世嘉Dreamcast是什么?为何它是具有革命性的主机?"
  • 陈述式:"世嘉Dreamcast是世嘉1999年推出的第六代游戏主机,它......"
  • 指令式:"写一段文字,描述世嘉Dreamcast主机并解释其革命性所在。"

(八)少样本分类任务中混合类别顺序(Mix up classes for few-shot classification tasks)

少样本提示中示例顺序通常影响不大,但分类任务需混合不同响应类别,避免模型过度拟合示例顺序。通过打乱类别顺序,确保模型学习各分类的关键特征而非记忆示例顺序,提升对未见过数据的泛化能力。一般建议从6个混合类别的少样本示例开始测试准确性。

(九)适应模型更新(Adapt to model updates)

需关注模型架构、训练数据和功能的更新变化,测试新版本模型并调整提示以充分利用新特性。Vertex AI Studio等工具可用于存储、测试和记录不同版本的提示,便于跟踪优化。

(十)尝试不同输出格式(Experiment with output formats)

对于数据提取、选择、解析、排序、分类等非创意任务,建议采用JSON、XML等结构化输出格式,其优势包括:输出风格统一、聚焦目标数据、降低模型幻觉概率、支持数据类型定义、便于排序和建立数据关联等。例如通过提示要求模型以JSON格式返回电影评论情感分类结果,可得到结构清晰、易于后续处理的输出。

(注意:JSON输出虽优势显著,但比纯文本消耗更多令牌,可能增加处理时间和成本,且令牌限制可能导致输出截断产生无效JSON。可使用json-repair等库自动修复不完整或格式错误的JSON。)

(十一)使用JSON模式(Working with Schemas)

除输出外,JSON模式还可用于规范提示输入结构。通过定义JSON模式(明确数据类型、字段描述和格式要求),为模型提供清晰的输入数据蓝图,帮助模型聚焦关键信息、减少误解,尤其适用于电商产品描述生成等场景。

示例

  1. 定义产品数据JSON模式:指定"name"(产品名称,字符串)、"category"(类别,字符串)、"price"(价格,浮点型)、"features"(特征,字符串数组)、"release_date"(发布日期,日期格式)等字段及描述;
  2. 提供符合模式的产品数据:如"{"name":"无线耳机","category":"电子产品","price":99.99,"features":["降噪","蓝牙5.0","20小时续航"],"release_date":"2023-10-27"}";
  3. 模型基于结构化输入生成准确的产品描述,避免信息遗漏或误解。

(十二)与其他提示工程师协作试验(Experiment together with other prompt engineers)

多人协作编写提示时,每人遵循最佳实践尝试不同方案,可观察到各提示性能差异,通过对比分析提炼更优策略,尤其适合复杂任务的提示优化。

(十三)思维链提示最佳实践(CoT Best practices)

  1. 需将答案置于推理过程之后,因为推理过程生成的令牌会影响模型对最终答案的预测;
  2. 结合自一致性时,需能从提示中分离推理过程与最终答案;
  3. 温度设置为0:思维链基于贪心解码(选择概率最高的下一个词),多数推理任务存在唯一正确答案,温度0可确保输出确定性。

(十四)记录不同提示尝试(Document the various prompt attempts)

提示输出会因模型、采样设置、模型版本甚至相同配置下的令牌概率平局处理方式而变化,详细记录提示尝试是关键实践,建议使用Google表格等工具,模板包含以下字段:

名称(Name) 提示名称及版本
目标(Goal) 一句话说明本次尝试的目标
模型(Model) 使用的模型名称及版本
温度(Temperature) 0-1间的数值 令牌限制(Token Limit) 具体数值
Top-K 具体数值 Top-P 具体数值
提示(Prompt) 完整提示内容
输出(Output) 单个或多个输出结果

额外建议:记录提示迭代版本、结果评价(OK/NOT OK/SOMETIMES OK)、反馈意见,若使用Vertex AI Studio,可保存提示链接以便快速重新运行;在检索增强生成(RAG)系统中,还需记录查询、片段设置、片段输出等影响提示内容的信息。最终将优化后的提示整合到项目代码库时,建议将提示与代码分离存储,便于维护,并通过自动化测试评估提示对任务的泛化能力。

提示工程是持续迭代的过程,需不断设计测试提示、分析结果、优化调整,更换模型或配置时需重新试验原有提示,直至获得理想输出。

六、总结(Summary)

本文档全面探讨提示工程,涵盖12类核心提示技术:零样本提示、少样本提示、系统提示、角色提示、上下文提示、回溯提示、思维链提示、自一致性提示、思维树提示、反应式提示、自动提示工程、代码提示,同时介绍了大型语言模型输出配置(输出长度、采样控制及参数组合)和14项最佳实践,分析了生成式AI在提示设计不足时可能面临的挑战,为提示工程师提供从入门到进阶的完整指导。

相关推荐
文心快码BaiduComate11 分钟前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
风象南1 小时前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
Mintopia2 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮2 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬2 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia3 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区3 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两6 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪6 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain