支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


谷歌《提示词工程》白皮书深度解读

发布日期:2025-08-06 08:14:12 浏览次数: 1557
作者:AI重构未来

微信搜一搜,关注“AI重构未来”

推荐语

谷歌最新《提示词工程》白皮书解读,掌握与AI高效对话的核心技能。

核心内容:
1. 提示词工程的基础概念与重要性
2. 白皮书三大核心维度:输出配置、提示技巧与最佳实践
3. 不同LLM模型的提示词优化策略与持续学习路径

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家
前言:大语言模型(LLM)的兴起,让机器与人类的交流达到了前所未有的深度。然而,想要让这些智能助手真正理解我们的意图,并产出我们期待的精准、有价值的成果,需要掌握一门精妙的艺术与科学——提示词工程。它不再是数据科学家或机器学习工程师的专属领域,而是每一位与AI对话的普通人都能掌握的关键技能。它像一座桥梁,连接着人类的思维与机器的理解,决定着我们能否从AI的潜力中汲取最大价值。由谷歌(Google)撰写的白皮书——《提示词工程》(Prompt Engineering),系统地阐述了提示词工程的方方面面,从基础概念到高阶技巧,从模型配置到最佳实践,为我们描绘了一幅清晰而实用的学习路径。

揭开面纱:谷歌《提示词工程》白皮书的全面洞察

当今世界,大型语言模型(LLM)已然成为一股不可忽视的力量。它们是能够理解并生成人类语言的“预测引擎”,通过分析海量的训练数据,预测出下一个最可能出现的词元(token)。每一次我们与聊天机器人互动,本质上都在进行“提示”,但若要深度掌控模型的产出,提示词工程就显得尤为重要

那么,究竟何为提示词工程?提示词工程是设计高质量提示词以引导LLM产出准确结果的过程。这像是一场精密的调校,需要我们不断尝试、优化提示词的长度、写作风格与结构,以使其与任务需求完美契合。一个不够精良的提示词,可能导致模型给出模棱两可、甚至不准确的回答,从而阻碍其提供有意义的输出

这份白皮书不仅深入探讨了提示词工程的各项技术,还分享了成为提示词专家的实用技巧和最佳实践,并坦诚地指出了在创作提示词过程中可能面临的挑战。它涵盖了从文本摘要、信息提取、问答、文本分类、语言或代码翻译、代码生成到代码文档或推理等多种理解和生成任务

白皮书的核心内容可以概括为以下几个关键维度:

1、LLM输出配置(LLM output configuration):探讨如何通过调整模型的各项配置,如输出长度、采样控制(温度、Top-K和Top-P),来精准控制模型生成内容的特性

2、提示词技巧(Prompting techniques):详细介绍了多种实用的提示词策略,从最基础的零样本(Zero-shot)到更高级的思维链(Chain of Thought)、自洽性(Self-consistency)、思维树(Tree of Thoughts)乃至行动与思考(ReAct)等

3、最佳实践(Best Practices):提供了大量经验证的指导原则,帮助我们提升提示词的有效性,例如如何提供高质量的示例、如何简洁设计、如何明确输出要求、以及如何记录迭代过程等

理解这些要素,是驾驭大型语言模型、实现高效人机协作的关键。白皮书强调,无论我们使用Gemini、GPT、Claude还是Gemma、LLaMA等开源模型,都可能需要针对特定模型优化提示词。这是一个持续迭代、不断学习的过程

提示词工程(Prompt Engineering)的核心要义:

白皮书开篇便点明了核心:大型语言模型是一个预测引擎。它接收连续的文本作为输入,然后根据其训练数据预测下一个词元。这个过程会不断重复,将之前预测的词元添加到序列末尾,再预测下一个,其预测依据是现有词元与模型训练时所见数据之间的关系

因此,当我们撰写提示词时,本质上就是试图设定LLM来预测正确的词元序列。提示词工程,正是这个“设定”的过程,它关乎如何设计出能精确引导LLM生成目标输出的高质量提示词。这个过程充满了“修修补补”的意味,需要我们不断尝试,以找到最佳的提示词,并优化其长度、写作风格与结构,使其与我们期望完成的任务完美契合

白皮书指出,不恰当的提示词会导致模型给出模糊不清、甚至不准确的回答,从而阻碍其提供有意义的输出。一个有效的提示词,其效力受到诸多因素的影响,包括:您选择的模型、模型的训练数据、模型的配置、您的措辞、风格和语气、结构以及上下文——所有这些都至关重要。正因如此,提示词工程被视为一个迭代的过程

虽然我们日常与聊天机器人互动时,就已经在“写提示词”了,该白皮书更侧重于在Vertex AI或通过API直接与Gemini模型交互,因为这能让我们更深入地访问和配置模型参数,如“温度”等

三、LLM输出配置:掌控模型产出的“旋钮”

除了提示词本身,我们还需要细致地调整LLM的各种配置选项,因为它们直接决定了模型输出的特性。有效地进行提示词工程,离不开为特定任务设置最优的配置。

1输出长度的考量

一个重要的配置是响应中生成的词元数量。生成更多的词元意味着LLM需要进行更多的计算,这不仅会消耗更高的能源,还可能导致响应时间变慢,进而增加成本

白皮书特别强调,减少LLM的输出长度,并非让模型在风格或文本上变得更加简洁,而仅仅是在达到限制时停止预测更多的词元。如果您的需求是简短的输出,那么您可能还需要精心设计提示词以适应这一需求。例如,对于ReAct等特定的提示词技术,输出长度的限制尤为关键,因为如果模型持续生成无用词元,将会耗费宝贵的计算资源

2采样控制:随机性与确定性的平衡

LLM并非简单地预测一个单一词元,而是为词汇表中的每个词元预测一个概率分布,然后根据这些概率进行采样,以确定最终生成的词元温度(Temperature)、Top-K和Top-P是三种最常见的配置设置,它们决定了如何处理这些预测的词元概率,以选择最终的输出词元

1)温度(Temperature):温度控制着词元选择中的随机程度

  •  较低的温度适用于需要更确定性响应的提示词。例如,在回答数学问题时,将温度设为0(贪婪解码:每一步都选择当前预测概率最高的那个词(token)作为输出,不进行随机采样或多样化选择),模型将始终选择概率最高的词元,从而得到确定性的结果


  • 较高的温度则能带来更多样化或出乎意料的生成结果。温度值越高,所有词元被预测为下一个词元的可能性就越接近。白皮书甚至将Gemini的温度控制与机器学习中的softmax函数进行了类比,低温度类似于低softmax温度,强调单一首选;高温度则像高softmax温度,使得更宽范围的词元都能被接受,增加了不确定性,适用于创意输出等不要求严格精确的场景


2)Top-K和Top-P采样:Top-K和Top-P是两种用于限制预测下一个词元来源的采样设置,它们只从预测概率最高的词元中进行选择。与温度类似,它们也控制着生成文本的随机性多样性和质量,避免模型总是输出相同、无趣或过于确定的答案。

  • Top-K采样:选择模型预测分布中概率最高的K个词元。K值越高,模型输出的创意性和多样性越强;K值越低,模型输出越受限制,越倾向于事实性。将Top-K设置为1,其效果与贪婪解码相同


  • Top-P采样选择累积概率不超过特定值P的最高概率词元。P值的范围从0(贪婪解码)到1(LLM词汇表中的所有词元)白皮书建议,在Top-K和Top-P之间进行选择的最佳方式是通过实验,观察哪种方法(或两者结合)能产生您想要的结果


3)综合运用:配置参数的协同效应

选择Top-K、Top-P、温度以及要生成的词元数量,取决于具体的应用和期望的结果,并且这些设置是相互影响的。理解您所选模型如何组合不同的采样设置也至关重要

如果温度、Top-K和Top-P都可用(例如在Vertex Studio中),那么首先会筛选出同时满足Top-K和Top-P条件的词元作为候选,然后温度会应用于这些通过筛选的词元进行采样。如果只有Top-K或Top-P可用,则行为相同,只是仅使用单一的Top-K或Top-P设置

在某些极端设置下,某个采样配置值会抵消其他配置设置或变得无关紧要

  • 如果将温度设置为0,Top-K和Top-P将变得无关紧要——因为模型将始终预测概率最高的词元作为下一个词元


  • 如果将温度设置得极高(通常高于1,达到10左右),温度本身将变得无关紧要,任何通过Top-K和/或Top-P筛选的词元都将随机采样以选择下一个预测词元


  • 如果将Top-K设置为1,温度和Top-P将变得无关紧要。只有一个词元会通过Top-K标准,而那个词元将是下一个预测词元


  • 如果将Top-P设置为0(或一个非常小的值),大多数LLM采样实现将只考虑概率最高的词元来满足Top-P标准,这会使得温度和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和输出词元)可能会导致LLM生成不那么相关的文本


四、提示词技巧:与LLM高效协作的策略

大型语言模型经过大量数据训练,能够理解提示并生成答案,但它们并非完美您的提示词文本越清晰,LLM预测下一个可能文本的效果就越好。此外,利用LLM训练方式和工作原理的特定技巧,将帮助您从LLM获得更相关的结果。白皮书详细介绍了多种重要的提示词技巧:

1、通用提示 / 零样本(General prompting / Zero shot)

零样本提示是最简单的提示类型。它只提供任务的描述和一些供LLM开始处理的文本。这可以是任何内容:一个问题、一个故事的开头或一些指令。顾名思义,“零样本”代表着“不提供示例”

白皮书以电影评论分类为例,展示了零样本提示的应用。在这样的分类任务中,模型温度通常应设为低值,因为不需要创造性。同时,白皮书强调了以表格形式记录提示词的重要性,因为提示词在最终投入使用前可能经历多次迭代,系统化地追踪提示词工程工作至关重要

2单样本与少样本(One-shot & few-shot)

当零样本提示无法满足需求时,我们可以在提示词中提供演示或示例,这便引出了“单样本”和“少样本”提示提供示例对于创建AI模型提示词非常有帮助。这些示例能帮助模型理解您的要求,尤其是在您希望模型遵循特定输出结构或模式时

1)单样本提示(One-shot prompt):顾名思义,它只提供一个示例。其理念是让模型有一个可以模仿的例子,以便最好地完成任务

2)少样本提示(Few-shot prompt):则向模型提供了多个示例。这种方法向模型展示了一个需要遵循的模式。它的理念与单样本类似,但多个期望模式的示例能增加模型遵循该模式的可能性

少样本提示所需的示例数量取决于任务的复杂性、示例的质量以及您所使用生成式AI(gen AI)模型的能力。通常的经验法则是,少样本提示应使用至少三到五个示例。然而,对于更复杂的任务,您可能需要更多示例;或者由于模型的输入长度限制,您可能需要减少示例数量

白皮书以将披萨订单解析为JSON格式的例子,展示了少样本提示的强大之处。选择示例时,务必使用与您希望执行的任务相关的示例。这些示例应该多样化、高质量且编写良好一个小的错误就可能混淆模型,导致意想不到的输出。此外,如果您尝试生成对各种输入都稳健的输出,那么在示例中包含边缘情况(edge cases)非常重要。边缘情况是那些不寻常或意料之外的输入,但模型仍应能够处理

3系统、情境与角色提示(System, contextual and role prompting)

系统、情境和角色提示都是用于指导LLM生成文本的技巧,但它们侧重于不同的方面

1)系统提示(System prompting)设定语言模型的整体上下文和目的。它定义了模型应该做什么的“大局”,例如翻译语言、分类评论等系统提示对于生成满足特定要求的输出非常有用。例如,您可以利用它生成与特定编程语言兼容的代码片段,或者要求模型返回特定结构的数据。白皮书提供了一个将电影评论分类并以JSON格式返回的例子,展示了系统提示在结构化输出方面的强大能力将数据以JSON对象形式返回具有多重好处:在实际应用中无需手动创建JSON,能够返回排序数据,更重要的是,它强制模型创建结构并限制幻觉(hallucinations)。系统提示甚至可以用于安全性和毒性控制,例如,简单地在提示词中添加一行“您的回答应该 respectful”即可

2)角色提示(Role prompting)为语言模型分配一个特定的角色或身份。这有助于模型生成更相关、信息更丰富的输出,因为它会根据被分配的角色及其相关的知识和行为来调整其响应例如,您可以将生成式AI模型设置为图书编辑、幼儿园老师或励志演说家。一旦模型被分配了角色,您就可以向它提供特定于该角色的提示。白皮书展示了模型扮演旅行向导的角色,根据用户位置和兴趣提供旅行建议的示例。为AI模型定义角色视角,能够为其提供期望的语气、风格和专业知识蓝图,从而提高输出的质量、相关性和有效性。白皮书还列出了一些有效的风格选择,如对抗性、描述性、直接、正式、幽默、有影响力、非正式、鼓舞人心、说服性等,并用一个幽默风格的旅行建议进一步阐释了其应用

3)情境提示(Contextual prompting)提供与当前对话或任务相关的特定细节或背景信息。它帮助模型理解所提问内容的细微之处,并相应地调整响应。它高度特定于当前任务或输入,并且是动态变化的通过提供情境提示,您可以确保AI交互尽可能无缝和高效。模型将能够更快地理解您的请求,并生成更准确和相关的响应。一个关于为复古游戏博客建议文章主题的例子,清楚地展示了情境信息(“您正在为一篇关于80年代复古街机视频游戏的博客撰稿”)如何引导模型生成更精准的输出

值得注意的是,系统、情境和角色提示之间可能存在显著的重叠。例如,一个为系统分配角色的提示词也可以包含上下文。然而,每种提示词类型都有其略微不同的主要目的:系统提示定义模型的基本能力和总体目的;情境提示提供即时、任务特定的信息来指导响应;角色提示则塑造模型的输出风格和声音,增加了特异性和个性。区分这些提示类型,能为设计意图清晰的提示词提供框架,从而实现灵活组合,并更容易分析每种提示类型如何影响语言模型的输出

4退一步提示(Step-back prompting)

退一步提示是一种通过引导LLM首先思考与当前特定任务相关的一般性问题,然后将该一般性问题的答案输入到后续的特定任务提示中,来提高性能的技巧。这种“退一步”的操作,使得LLM能够在尝试解决具体问题之前,激活相关的背景知识和推理过程

通过考虑更广泛和深层次的原则,LLM能够生成更准确和富有洞察力的响应。退一步提示鼓励LLM批判性地思考,并以新的、有创意的方式应用其知识。它通过利用LLM参数中更多知识,改变了执行任务的最终提示词,而这些知识在直接提示LLM时可能无法发挥作用。它甚至可以通过关注一般原则而非具体细节,帮助缓解LLM响应中的偏见

白皮书通过一个编写第一人称射击游戏(FPS)关卡故事情节的例子,生动地展示了退一步提示的效用。传统的直接提示虽然也能生成故事情节,但可能较为随机和通用。而通过“退一步”,先让模型思考“流行FPS游戏中,有哪些能提升挑战性和吸引力的5个虚构关键设定?”,然后将这些“设定”作为上下文输入到原任务中,模型便能产出更具想象力、更引人入胜的故事情节,如“水下研究设施”的描绘。这清楚地表明,通过使用退一步提示技巧,可以显著提高提示词的准确性

5思维链(Chain of Thought, CoT)

思维链提示是一种通过生成中间推理步骤来提高LLM推理能力的技巧。这有助于LLM生成更准确的答案。白皮书指出,鉴于零样本思维链面临的挑战,它可以与少样本提示结合使用,以便在需要推理的更复杂任务上获得更好的结果

CoT具有诸多优势

1)低投入高效率它是一种低成本但非常有效的策略,并且能很好地适用于现成的LLM,无需进行额外的微调

2)可解释性CoT提示词提供了可解释性,因为您可以从LLM的响应中学习,并查看其遵循的推理步骤。如果出现故障,您将能够识别问题所在

3)提高鲁棒性思维链似乎在不同LLM版本之间移动时提高了鲁棒性,这意味着您的提示词性能在不同LLM之间漂移的程度会降低,而非使用推理链的提示词则可能表现不一

然而,CoT也并非没有缺点,其中最直观的一点是:LLM的响应中包含了思维链的推理过程,这意味着更多的输出词元,从而导致预测成本更高、耗时更长

白皮书通过一个简单的数学问题展示了CoT的强大。当直接提问“我3岁时,我的伴侣是我的3倍大。现在我20岁了,我的伴侣多大?”时,模型可能会给出错误的答案“63岁”。这是因为LLM通常在数学任务上表现不佳,即使是简单的乘法也可能给出不正确的答案。但当我们在问题后加上“让我们一步一步地思考”(Let's think step by step),模型便能清晰地列出推理步骤,最终给出正确的答案“26岁”。这表明,清晰地指示LLM解释每一步,而非仅仅返回答案,能显著改善输出质量

白皮书还指出,上面的表12是“零样本”思维链的一个例子。而当思维链提示与单样本或少样本结合时,它能变得非常强大。比如,通过提供一个范例问题及其详细的思维过程,模型在解决后续类似问题时,能更好地模仿人类的推理方式,给出更精准的答案

CoT提示词适用于多种用例

1)代码生成将请求分解为几个步骤,并将其映射到具体的代码行

2)创建合成数据当您有一些种子数据时,如“产品名称为XYZ,请根据产品标题撰写一份描述,引导模型思考其应有的假设”

3)任何可以通过“说出来”来解决的任务:如果您能够解释解决问题的步骤,那么可以尝试思维链

6自洽性(Self-consistency)

尽管大型语言模型在各种自然语言处理任务中取得了令人印象深刻的成功,但它们的推理能力常常被视为一个局限,无法仅仅通过增加模型规模来克服。正如前述思维链提示部分,模型可以被提示生成像人类解决问题一样的推理步骤。然而,CoT通常采用简单的“贪婪解码”策略,这限制了其有效性

自洽性通过结合采样和多数投票来生成多样化的推理路径,并选择最一致的答案。它提高了LLM生成响应的准确性和连贯性。虽然自洽性提供了一个答案正确性的伪概率可能性,但显然成本较高

它遵循以下步骤

步骤1. 生成多样化的推理路径:LLM会多次收到相同的提示词。高温度设置鼓励模型生成不同的推理路径和问题视角

步骤2. 从每个生成的响应中提取答案

步骤3. 选择最常见的答案

白皮书通过一个邮件分类系统(将邮件分类为“重要”或“不重要”)的例子,展示了自洽性的实际应用。邮件中友好的语气、措辞和讽刺意味可能会“欺骗”LLM。在多次零样本思维链提示下,模型可能会给出不同的结论,例如第一次尝试分类为“重要”,而第二次尝试则分类为“不重要”。通过生成多条思维链,并选取最常出现的答案(例如“重要”),我们就能从LLM获得更一致正确的答案。这个例子展示了自洽性提示如何通过考虑多个视角并选择最一致的答案来提高LLM响应的准确性

7思维树(Tree of Thoughts, ToT)

在熟悉了思维链和自洽性提示之后,白皮书进一步引入了思维树(ToT)概括了CoT提示词的概念,因为它允许LLM同时探索多个不同的推理路径,而不仅仅是遵循单一的线性思维链。图1清晰地描绘了思维链与思维树提示之间的区别,后者呈现为一种分支结构

这种方法使得ToT特别适用于需要探索的复杂任务。它的工作原理是维护一个“思维树”,其中每个“思维”代表一个连贯的语言序列,作为解决问题的中间步骤。模型可以通过从树中不同的节点分支出来,从而探索不同的推理路径

8思考与行动(ReAct, reason & act)

思考与行动(ReAct)提示是一种新范式,旨在使LLM能够利用自然语言推理结合外部工具(如搜索、代码解释器等)来解决复杂任务。它允许LLM执行某些操作,例如与外部API交互以检索信息,这是迈向智能体建模的第一步

ReAct模仿了人类在现实世界中的运作方式,因为我们进行口头推理并可以采取行动来获取信息。ReAct在各种领域中,相较于其他提示词工程方法,表现出色

ReAct提示词通过将推理和行动结合成一个“思想-行动循环”来工作。LLM首先对问题进行推理并生成一个行动计划。然后,它执行计划中的行动并观察结果。接着,LLM利用这些观察结果更新其推理并生成一个新的行动计划。这个过程会持续进行,直到LLM找到问题的解决方案

白皮书通过一个Python代码片段展示了ReAct的实际应用,该代码利用LangChain框架与VertexAI以及Google搜索结果pip包,来计算乐队Metallica成员的孩子总数。在执行过程中,LLM会刮取Google搜索结果,将结果列为“观察”,并为下一次搜索“串联”思考。最终,模型通过多次搜索,逐步累计乐队成员的孩子数量,并给出最终答案

实践中,ReAct提示词需要不断重新发送先前的提示/响应(并修剪额外生成的内容),并为模型设置适当的示例/指令

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

至此,您可能已经意识到,撰写提示词可能非常复杂。如果能自动化这个过程(编写提示词来编写提示词),那岂不是很好?白皮书指出,这正是自动提示词工程(APE)减少了人工输入的需求,还提高了模型在各种任务中的性能

其核心思想是:您将提示一个模型来生成更多提示词。然后,您评估这些提示词,可能会修改其中好的部分,并重复这个过程

白皮书以训练一个T恤网店聊天机器人为例。为了了解顾客可能如何表达购买乐队周边T恤的各种方式,我们可以使用APE。具体步骤是

步骤1. 编写生成输出变体的提示词例如,使用Gemini-pro生成10个语义相同但表达方式不同的指令变体,如“我想要一件小号的Metallica T恤”的各种说法

步骤2. 评估所有指令候选根据选定的指标(如BLEU或ROUGE)对候选进行评分

步骤3. 选择评估得分最高的指令候选这个候选将是您在软件应用或聊天机器人中可以使用的最终提示词。您还可以对选定的提示词进行微调并再次评估

10代码提示(Code prompting)

Gemini主要关注基于文本的提示词,这也包括用于返回代码的提示词。白皮书介绍了四种与代码相关的提示词应用:

1)编写代码的提示(Prompts for writing code)Gemini可以扮演开发者的角色,帮助您编写任何您选择的编程语言的代码。这能显著加快编写代码的过程。白皮书以一个Bash脚本为例,演示了如何让模型生成一个在指定文件夹中为所有文件添加“draft”前缀的重命名脚本需要注意的是,由于LLM无法真正“推理”,只会重复训练数据,因此务必先阅读并测试生成的代码

2)解释代码的提示(Prompts for explaining code)当开发者在团队中工作时,常常需要阅读他人的代码。Gemini也能在这方面提供帮助。白皮书展示了如何让模型解释一份不带注释的Bash脚本,模型能够清晰地分解代码的逻辑和功能,例如用户输入、文件夹存在性检查、文件列表和文件重命名等

3)翻译代码的提示(Prompts for translating code)LLM可以帮助将代码从一种语言翻译到另一种语言。白皮书将上述Bash重命名脚本翻译成Python代码,这为开发者将脚本功能集成到具有UI的独立应用程序提供了起点

4)调试和审查代码的提示(Prompts for debugging and reviewing code)这是LLM在代码方面最令人印象深刻的应用之一。白皮书演示了如何向LLM提供一个带toUpperCase函数未定义错误的Python脚本,并要求模型调试错误并提供改进建议。模型不仅准确地指出了toUpperCase函数不存在的问题,并建议使用字符串的upper()方法来解决,更令人惊叹的是,它还主动识别并提出了其他几项代码改进建议

 保留新文件名的文件扩展名

 优雅地处理文件夹名称中的空格(例如,替换为下划线或连字符)

 使f字符串语法进行字符串插值,使其更具可读性和简洁性

 过将shutil.move调用包装在try...except块中,处理重命名过程中可能发生的错误最终,模型提供了一个经过改进的、更健壮和灵活的代码版本。这充分展示了LLM在代码调试和审查方面的巨大潜力

白皮书还简要提及了多模态提示(multimodal prompting),这是一种独立于代码提示的关注点。它指的是使用多种输入格式(如文本、图像、音频、代码甚至其他格式)来引导大型语言模型的技术,而非仅仅依赖文本,这取决于模型的能力和具体任务

五、成为提示词专家的最佳实践

找到一个完美的提示词,就像雕琢一件艺术品,需要反复打磨。Vertex AI Studio等工具提供了理想的试验场,能让您轻松测试不同模型下的提示词效果。白皮书提炼了以下几项核心最佳实践,助您成为真正的提示词工程行家:

1提供示例(Provide examples)

最重要的最佳实践就是在提示词中提供(单样本/少样本)示例。这是一种极其有效的“教学工具”,因为它能展示期望的输出或类似的响应,让模型从中学习并相应地调整其生成内容。这就像是给模型设定一个参考点或目标,从而提高其响应的准确性、风格和语气,使其更好地符合您的预期

2设计简洁(Design with simplicity)

提示词应该简洁、清晰,并且易于您和模型理解。一个经验法则是:如果您自己都觉得困惑,那么模型也很可能感到困惑。尽量避免使用复杂的语言,也不要提供不必要的信息

例如:原来我现在正在纽约游玩,我想了解更多关于景点的信息。我有两个3岁的孩子。我们度假期间应该去哪里?改写后作为一名旅行向导。描述纽约曼哈顿适合带3岁孩子游玩的景点。

尝试使用描述动作的动词,它们能让您的指令更明确:例如:行动、分析、分类、对比、比较、创建、描述、定义、评估、提取、查找、生成、识别、列出、测量、组织、解析、选择、预测、提供、排名、推荐、返回、检索、重写、选择、展示、排序、总结、翻译、撰写

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

对期望的输出要具体明确。一个过于简洁的指令可能无法充分引导LLM,或者会导致其生成过于泛化的内容。在提示词中提供具体细节(通过系统提示或情境提示)可以帮助模型聚焦于相关内容,从而提高整体准确性

例如:应该这样做生成一篇3段长的博客文章,内容关于五款顶尖视频游戏主机。这篇博客文章应该信息丰富、引人入胜,并以对话风格撰写。不应该这样做生成一篇关于视频游戏主机的博客文章。

4优先使用指令而非限制(Use Instructions over Constraints)

指令和限制都用于引导LLM的输出,但方式有所不同

1)指令(instruction)提供关于响应期望格式、风格或内容的明确指示。它指导模型应该做什么或产生什么

2)限制(constraint)则是对响应的一组限制或边界。它限制模型不应该做什么或避免什么

越来越多的研究表明,在提示词中侧重积极指令比严重依赖限制更有效。这种方法与人类偏爱积极指令而非“禁止事项”清单的方式不谋而合。指令直接传达期望的结果,而限制可能让模型猜测什么被允许。指令赋予模型灵活性,并鼓励在定义好的边界内发挥创造力,而限制则可能束缚模型的潜力。此外,一连串的限制也可能相互冲突

当然,限制在某些情况下仍然有其价值,例如防止模型生成有害或有偏见的内容,或者当需要严格的输出格式或风格时最佳实践是,尽可能使用积极指令:与其告诉模型不该做什么,不如告诉它应该做什么。这可以避免混淆并提高输出的准确性

例如:应该这样做生成一篇1段长的博客文章,内容关于五款顶尖视频游戏主机。只讨论主机、制造公司、年份和总销量。不应该这样做生成一篇1段长的博客文章,内容关于五款顶尖视频游戏主机。不要列出视频游戏名称。

作为最佳实践,请优先使用指令,明确说明您希望模型做什么,并仅在安全、清晰或有特定需求时才使用限制。不断实验和迭代,测试指令和限制的不同组合,以找到最适合您特定任务的方法,并务必进行文档记录

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

为了控制LLM响应的长度,您可以在配置中设置一个最大词元限制,或在提示词中明确要求特定长度例如:“用推文长度的消息解释量子物理学。”

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

为了复用提示词并使其更具动态性,请在提示词中使用变量,这些变量可以根据不同的输入进行更改。例如,如白皮书所示,一个提供城市事实的提示词,无需将城市名称硬编码在提示词中,而是使用一个变量{city}。使用变量可以节省您的时间和精力,避免重复。当您需要在多个提示词中使用相同的信息时,可以将其存储在一个变量中,然后在每个提示词中引用该变量。这对于将提示词集成到您自己的应用程序中非常有意义

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

不同的模型、模型配置、提示词格式、措辞和提交方式都可能产生不同的结果。因此,尝试提示词的属性(如风格、措辞和提示词类型——零样本、少样本、系统提示)至关重要

例如,一个旨在生成关于革命性视频游戏机世嘉Dreamcast文本的提示词,可以被表述为问题、陈述或指令,从而产生不同的输出

• 问题:“世嘉Dreamcast是什么,它为什么是一款如此革命性的主机?”

• 陈述:“世嘉Dreamcast是世嘉于1999年发布的第六代视频游戏主机。它…”

• 指令:“撰写一个单一段落,描述世嘉Dreamcast主机并解释它为何如此具有革命性。”

8对于少样本分类任务,混合类别(For few-shot prompting with classification tasks, mix up the classes)

通常来说,少样本示例的顺序影响不大。然而,在进行分类任务时,请务必在少样本示例中混合可能的响应类别。这是因为否则您可能会过度拟合示例的特定顺序。通过混合可能的响应类别,您可以确保模型学习识别每个类别的关键特征,而不仅仅是记住示例的顺序。这将带来在未见数据上更健壮和可泛化的性能。一个好的经验法则是,从6个少样本示例开始,并在此基础上测试准确性

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

随时关注模型架构变化、新增数据和新功能对您来说非常重要。尝试使用更新的模型版本,并调整您的提示词以更好地利用新的模型功能。像Vertex AI Studio这样的工具非常适合存储、测试和文档化您的提示词的各种版本

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

除了提示词输入格式,还要考虑尝试不同的输出格式。对于非创意性任务,如数据提取、选择、解析、排序、排名或分类,尝试将输出以JSON或XML等结构化格式返回

白皮书再次强调了从提示词中返回JSON对象的好处:在实际应用中无需手动创建这种JSON格式,可以返回已排序的数据(在处理日期时间对象时非常方便),但最重要的是,通过提示词要求JSON格式,它会强制模型创建结构并限制幻觉

11与其他提示词工程师共同实验(Experiment together with other prompt engineers)

如果您处于需要尝试想出一个好的提示词的情况,您可能希望召集多人进行尝试。当每个人都遵循最佳实践时(如本章所列),您会看到所有不同提示词尝试之间存在性能差异

12思维链(CoT)最佳实践(CoT Best practices)

对于CoT提示词,将答案放在推理之后是必需的,因为推理的生成会改变模型在预测最终答案时获得的词元在使用CoT和自洽性时,您需要能够从提示词中提取最终答案,并将其与推理过程分开对于CoT提示词,务必将温度设置为0。这是因为思维链提示基于贪婪解码,它根据语言模型分配的最高概率预测序列中的下一个词。通常来说,当使用推理来得出最终答案时,很可能只有一个正确的答案。因此,温度应始终设置为0

13记录各种提示词尝试(Document the various prompt attempts)

白皮书在多个地方强调了这一重要性,但它仍旧值得再次强调:完整详细地记录您的提示词尝试,以便您能够随着时间的推移学习哪些做得好,哪些做得不好

提示词输出在不同模型、不同采样设置、甚至同一模型的不同版本之间都可能存在差异。此外,即使对同一模型使用相同的提示词,输出语句的格式和措辞也可能出现细微差异(例如,正如前面提到的,如果两个词元具有相同的预测概率,平局可能随机打破,这会影响随后的预测词元)

白皮书推荐使用Google表格,并提供了模板(如表21所示)。这种方法的优点是,当您不可避免地需要重新审视提示词工作时,您将拥有完整的记录。无论是在未来继续这项工作(您会惊讶于短暂休息后会忘记多少),还是测试提示词在不同版本模型上的性能,或者帮助调试未来的错误,这都将大有裨益

除了表格中的字段,跟踪提示词的版本(迭代次数)、捕获结果是“OK/NOT OK/SOMETIMES OK”的字段以及捕获反馈的字段也很有帮助。如果您幸运地使用Vertex AI Studio,可以将您的提示词保存下来(使用与文档中相同的名称和版本),并在表格中跟踪保存提示词的超链接。这样,您只需点击一下即可重新运行您的提示词

在处理检索增强生成(RAG)系统时,您还应该捕获影响提示词中内容插入的RAG系统的特定方面,包括查询、分块设置、分块输出以及其他信息

一旦您觉得提示词已接近完美,便可将其纳入您的项目代码库。在代码库中,将提示词与代码分开保存到单独的文件中,以便于维护。最后,理想情况下,您的提示词应作为操作化系统的一部分,作为提示词工程师,您应该依赖自动化测试和评估程序来了解您的提示词在任务中的泛化能力

提示词工程是一个迭代过程。不断地制作和测试不同的提示词,分析并记录结果。根据模型的表现来改进您的提示词。持续实验,直到达到您期望的输出。当您更改模型或模型配置时,请重新实验之前使用过的提示词

结语

谷歌《提示词工程》白皮书不仅是关于如何与机器对话的技术指南,更是关于如何精确表达人类意图、激发AI最大潜力的智慧结晶。

从基础的输出配置,到零样本、少样本的示例引导,再到系统、情境、角色的多维度设定,以及思维链、自洽性、思维树乃至ReAct等复杂推理技巧的运用,直至代码生成与调试,这份白皮书为我们勾勒出了一条清晰的进阶之路。而自动提示词工程的出现,更预示着未来提示词创作的智能化趋势

最重要的是,白皮书反复强调的最佳实践,如同提示词工程师的“武功秘籍”,指引我们通过提供高质量示例、力求简洁明确、优先使用积极指令、灵活运用变量、持续实验、以及最重要的——严谨的文档记录,来不断精进我们的“提示技艺”。它承认了AI的局限性(例如可能出现“幻觉”),也提醒我们在追求效率的同时,要保持批判性思维,对模型产出进行验证

提示词工程,不是一劳永逸的解决方案,而是一个持续迭代、永无止境的学习过程。每一次与LLM的交互,都是一次新的探索。掌握这门艺术,我们便能更好地驾驭人工智能这把双刃剑,让它们真正成为我们思想的延伸,助我们解锁前所未有的创造力与效率。

希望通过这份深度解读,能为您开启提示词工程的大门,助您在人机共创的时代浪潮中,乘风破浪,智享未来。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询