
作者:李邦斯特 致谢 内容贡献者Michael Sherman 袁曹Erick ArmbrustAnant NawalgariaAntonio GulliSimone Cammel 策展人和编辑 Antonio GulliAnant NawalgariaGrace Mollison 技术作家Joey Haymaker 设计师Michael Lanning 目录 你不需要是数据科学家或机器学习工程师——每个人都可以写作一个快速响应。 引言 当思考大型语言模型的输入和输出时,一个文本提示(有时辅以图像等其他模态提示)是模型用来预测特定输出的输入。您不需要是数据科学家或机器学习工程师——每个人都可以编写提示。然而,制作最有效的提示可能很复杂。提示的许多方面都会影响其有效性:您使用的模型、模型的训练数据、模型配置、您的措辞、风格和语气、结构和背景都会产生影响。因此,提示工程是一个迭代的过程。不充分的提示会导致模糊、不准确的响应,并会阻碍模型提供有意义的输出。 当你与Gemini聊天机器人聊天时,1您基本上编写提示词,但是这份白皮书专注于在VertexAI中或通过使用API为Gemini模型编写提示词,因为直接对模型进行提示词设置可以让您访问配置,例如温度等。 这份白皮书详细讨论了提示工程。我们将研究各种提示技术,帮助您开始使用并分享提示专家的技巧和最佳实践。我们还将讨论在构建提示时您可能面临的挑战。 提示工程 记得LLM的工作原理吗;它是一个预测引擎。模型将序列文本作为输入,然后根据其训练数据预测下一个token应该是什么。LLM被实现用于反复进行这项工作,将先前预测的token添加到序列文本的末尾以预测下一个token。下一个token的预测基于先前token之间的关系以及LLM在训练期间所看到的内容。 当你编写提示时,你正在尝试设置大型语言模型(LLM)以预测正确的符号序列。提示工程是设计高质量提示的过程,这些提示引导LLM生成准确输出。这个过程涉及调整以找到最佳提示、优化提示长度,并评估提示在任务方面的写作风格和结构。在自然语言处理和LLM的背景下,提示是提供给模型的输入,用于生成响应或预测。 这些提示可以用于实现各种理解和生成任务,例如文本摘要、信息提取、问答、文本分类、语言或代码翻译、代码生成,以及代码文档或推理。 请随时参考谷歌的提示指南2,3通过简单而有效的提示示例。 在进行提示工程时,你将首先选择一个模型。无论你使用Vertex AI中的Gemini语言模型、GPT、Claude,还是像Gemma或LLaMA这样的开源模型,提示可能都需要针对你的特定模型进行优化。 除了提示词之外,你还需要调整大型语言模型的各种配置。 LLM 输出配置 一旦你选择了模型,你将需要确定模型的配置。大多数大型语言模型都带有各种配置选项,用于控制模型的输出。有效的提示工程要求为你的任务优化这些配置。 输出长度 一个重要的配置设置是在响应中生成令牌的数量。生成更多令牌需要从LLM进行更多计算,导致更高的能耗,潜在更慢的响应时间以及更高的成本。 减少LLM的输出长度并不会导致LLM在创建输出时更加风格化或文本上简洁,它只是导致LLM在达到限制后停止预测更多的token。如果你的需求需要较短的输出长度,你可能也需要设计你的提示词来适应这一点。 输出长度限制对某些LLM提示技术(如ReAct)尤其重要,因为在这种情况下,LLM会在您想要的响应后持续发出无用的标记。 请注意,生成更多代币需要大型语言模型进行更多的计算,从而导致更高的能源消耗,并可能造成响应时间变慢,进而导致成本增加。 抽样控制 大语言模型(LLMs)并不正式预测单个标记。相反,LLMs预测下一个可能是什么标记的概率,其中LLMs词汇表中的每个标记都将获得一个概率。然后对这些标记概率进行采样,以确定下一个生成的标记将是哪一个。温度、top-K和top-P是最常见的配置设置,它们决定了如何处理预测的标记概率以选择单个输出标记。 温度 温度控制了标记选择中的随机程度。较低的温度适用于预期更确定性响应的提示,而较高的温度则可能导致更多样化或出乎意料的结果。温度为0(贪婪解码)时 确定性:最高概率的标记总是被选中(但请注意,如果两个标记具有相同的最高预测概率,则根据破平法如何实现,您可能不会在温度为0时始终获得相同的输出)。 接近最大温度时往往会创建更随机的输出,而且随着温度越来越高,所有标记都变得同样可能成为下一个预测的标记。 Gemini温度控制与机器学习中使用的softmax函数类似。低温度设置相当于低softmax温度(T),强调对单一、首选温度的确定性强。高Gemini温度设置则类似于高softmax温度,使得选定设置周围的更宽温度范围更可接受。这种不确定性增加适用于刚性、精确温度并非必要的场景,例如在实验创意输出时。 Top-K 和 top-P Top-K 和 top-P(也称为核采样)4是大型语言模型中用于限制预测的下一个词仅来自具有最高预测概率的词的两个采样设置。与温度一样,这些采样设置控制生成文本的随机性和多样性。 •Top-K抽样从模型预测的分布中选择最有可能的Top K个标记。Top K越高,模型输出的创造性和多样性越强;Top K越低,模型输出的保守性和事实性越强。Top K为1等同于贪婪解码。 •Top-P采样选择累积概率不超过某个值(P)的顶部标记。P的取值范围从0(贪婪解码)到1(LLM词汇表中的所有标记)。 选择top-K和top-P的最佳方法是实验这两种方法(或两者结合)并查看哪种方法能产生您所期望的结果。 将所有内容整合在一起 在between top-K、top-P、temperature以及生成token数量之间进行选择,取决于具体的应用场景和预期结果,且所有设置相互影响。同时,确保理解所选模型如何整合不同的采样设置也同样重要。 若温度(temperature)、top-K 和 top-P 均可用(如在 Vertex Studio 中),则同时满足 top-K和 top-P 标准的标记(tokens)会成为下一个预测标记(token)的候选,随后应用温度(temperature)从通过 top-K 和 top-P 标准的标记中进行采样。若仅 top-K 或 top-P 可用,行为相同,但仅使用其中一个 top-K 或 P 设置。 如果温度不可用,则从满足top-K和/或top-P标准的所有标记中随机选择,以生成单个下一个预测标记。 在一种采样配置值的极端设置下,该采样设置会抵消其他配置设置或变得无关紧要。 • 如果将温度设置为0,top-K和top-P将变得无关紧要——最可能的标记将成为下一个预测的标记。如果你将温度设置得非常高(高于1——通常达到10s),温度将变得无关紧要,并通过top-K和/或top-P标准的任何标记将被随机采样以选择下一个预测的标记。 • 如果将top-K设置为1,则温度和top-P变得无关紧要。只有一个token会通过top-K标准,而这个token就是下一个预测的token。如果将top-K设置得极高,例如设置为与LLM词汇表的大小相同,则任何具有非零概率作为下一个token的token都会满足top-K标准,从而不会被选中。 • 如果你将top-P设置为0(或一个非常小的值),大多数LLM采样实现将仅考虑满足top-P标准的最大概率的标记,使温度和top-K变得无关紧要。如果你将top-P设置为1,任何具有非零下一个标记概率的标记都将满足top-P标准,并且没有标记被选中。 作为一般性的起点,温度设为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。 NOTE:在更大的自由度下(更高的温度、top-K、top-P以及输出token),LLM可能会生成与内容相关性较低的文本。 WARNING:你是否见过一个以大量填充词结尾的回应?这也被称为“重复循环错误”,这是一个在大语言模型中常见的问题,其中模型陷入一个循环,反复生成相同的(填充)词、短语或句式结构,通常由不恰当的温度和top-k/加剧。 在top-p设置下。这种情况可能发生在低温和高温设置下,尽管原因不同。在低温下,模型变得过度确定性,僵化地遵循最高概率路径,如果该路径重新访问先前生成的文本,则可能导致循环。相反,在高温下,模型的输出变得过度随机,增加了随机选中的单词或短语偶然回到先前状态的概率,由于可用选项的数量庞大,从而因循环而造成这种情况。在两种情况下,模型的采样过程都会“卡住”,直到输出窗口被填满,才会产生单调且无帮助的输出。解决这个问题通常需要仔细调整温度和top-k/top-p值,以在确定性和随机性之间找到最佳平衡。 提示技巧 大型语言模型(LLMs)经过调优以遵循指令,并在大量数据上进行训练,因此它们能够理解提示并生成答案。但LLMs并非完美;提示文本越清晰,就越有利于LLMs预测下一个可能的文本。此外,利用LLMs训练方式和运作机制的具体技术将有助于您从LLMs中获取相关结果。 既然我们已经了解了什么是提示工程以及它需要什么,那么让我们深入探讨一些最重要的提示技术的例子。 General prompting / zero shot Azero-shot 5提示词是最简单的一种提示类型。它仅提供任务描述以及一些供大型语言模型(LLM)开始工作的文本。这种输入可以是任何内容:一个问题、一个故事的开头,或是一些指令。名称“零样本”表示“没有示例”。 让我们使用Vertex AI中的Vertex AI Studio(用于语言)。6该平台提供了一个测试提示的游乐场。在表1中,您将看到一个用于对电影评论进行分类的零样本提示示例。 下表中使用的表格格式是记录提示的一种极佳方式。您的提示很可能在最终进入代码库之前会经历许多迭代,因此以严谨、结构化的方式跟踪您的提示工程工作至关重要。更多关于此表格格式、跟踪提示工程工作的重要性以及提示开发过程的内容,请参见本章后面的“最佳实践”部分(“记录各种提示尝试”)。 模型温度应该设置为低数值,因为没有创造力需求,并且我们使用的是gemini-pro默认的top-K和top-P值,这两个设置实际上都起效(参见上文的“LLM输出配置”)。注意生成的输出。令人不安的和杰作应该使预测更复杂一些,因为这两个词都在同一句中使用。 :当零样本学习不起作用时,你可以在提示中提供演示或示例,这导致了“单样本”和“少样本”提示。通用提示 / 零样本 One-shot & few-shot 在为AI模型创建提示时,提供示例会很有帮助。这些示例可以帮助模型理解你的要求。当你希望引导模型生成特定的输出结构或模式时,示例尤其有用。 A单次提示, 提供single例如,因此得名一次性。其理念是模型有一个可以模仿的示例,以最佳方式完成任务。 AFew-shot prompt 7providesmultiple向模型提供示例。这种方法向模型展示它需要遵循的模式。这个想法与单示例类似,但多个期望模式的示例增加了模型遵循模式的机会。 您需要进行few-shot prompting所需示例的数量取决于几个因素,包括任务的复杂性、示例的质量以及您正在使用的生成式人工智能(gen AI)模型的性能。一般而言,您应至少使用三个到五个示例进行few-shot prompting。然而,对于更复杂的任务,您可能需要使用更多示例,或由于模型输入长度的限制而使用更少示例。 表2展示了一个few-shot提示示例,让我们使用与之前相