您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[谷歌]:提示工程 - 发现报告

提示工程

2024-09-01谷歌娱***
AI智能总结
查看更多
提示工程

作者:李本斯特拉 致谢 审稿人和贡献者 策展人与编辑安东尼奥·古利 安南特·纳瓦尔加利亚 格蕾丝·莫利斯顿 技术文档作者乔伊·海克麦基 设计师迈克尔·兰宁 目录 简介6提示工程7大模型输出配置8输出长度8采样控制9温度9Top-K和top-P10将所有内容整合在一起11提示技术12通用提示/零样本13单样本 & 少样本14系统、上下文和角色提示17系统提示18角色提示21上下文提示23 后退提示25思维链 (CoT)29自洽性32思维树 (ToT)36ReAct (推理 & 行动)37自动提示工程40代码提示42编写代码的提示42解释代码的提示44翻译代码的提示46用于调试和审查代码的提示48多模态提示如何?54 最佳实践 54 提供示例54以简洁设计55请明确输出内容56使用说明胜于限制56控制最大 token 长度58在提示中使用变量58尝试输入格式和写作风格59用于分类任务的少量样本提示,混合类59适应模型更新60尝试输出格式60 与其它提示工程师一起实验61CoT最佳实践61 记录各种提示尝试62 63摘要 脚注65 你不需要成为一名数据科学家或机器学习工程师——每个人都可以编写一个提示。 简介 当思考大型语言模型的输入和输出时,文本提示(有时会伴随图像提示等其他模态)是模型用于预测特定输出的输入。你不需要是数据科学家或机器学习工程师——每个人都可以编写一个提示。然而,制作最有效的提示可能很复杂。你的提示的许多方面会影响其效果:你使用的模型、模型的训练数据、模型配置、你的措辞、风格和语气、结构以及上下文都至关重要。因此,提示工程是一个迭代的过程。不充分的提示会导致模糊、不准确的回应,并会妨碍模型提供有意义的输出。 当你与gemini聊天机器人聊天时,1您基本上编写提示,然而本白皮书侧重于在Vertex AI中为Gemini模型编写提示,或通过使用API编写提示,因为直接对模型进行提示,您将能够访问配置,如温度等。 本白皮书详细探讨了提示工程。我们将研究各种提示技术,帮助您入门并分享技巧和最佳实践,成为提示专家。我们还将讨论在制作提示时您可能面临的挑战。 提示工程 记住大语言模型是如何工作的;它是一个预测引擎。该模型将序列文本作为输入,然后根据它所训练的数据预测下一个token应该是什么。大语言模型被实现来反复这样做,将先前预测的token添加到序列文本的末尾以预测下一个token。下一个token的预测是基于先前token中的内容与大语言模型在训练期间所看到的内容之间的关系。 当你编写提示时,你正试图让大语言模型预测正确的标记序列。提示工程是设计高质量提示的过程,这些提示引导大语言模型生成准确的输出。这个过程涉及调整以找到最佳提示、优化提示长度,以及评估提示的写作风格和结构与其任务的关系。在自然语言处理和大语言模型的背景下,提示是提供给模型以生成响应或预测的输入。 这些提示可以用以实现各种理解和生成任务,例如文本摘要、信息提取、问答、文本分类、语言或代码翻译、代码生成以及代码文档或推理。 请参考谷歌的提示指南2,3使用简单有效的提示示例。 使用提示工程时,你首先需要选择一个模型。提示可能需要针对你的特定模型进行优化,无论你是使用 Vertex AI 中的 Gemini 语言模型、GPT、Claude,还是像 Gemma 或 LLaMA 这样的开源模型。 除了提示,你还需要调整大型语言模型的配置。 大模型输出配置 一旦你选择了模型,你将需要确定模型的配置。大多数LLMs都带有各种配置选项来控制LLMs的输出。有效的提示工程需要针对你的任务将这些配置设置到最优。 输出长度 一个重要的配置设置是响应中要生成的令牌数量。生成更多令牌需要 LLM 做更多计算,导致更高的能源消耗,潜在更慢的响应时间,以及更高的成本。 减少LLM的输出长度并不会使LLM在其生成的输出中变得更加风格化或文本简洁,它只是导致LLM在达到限制后停止预测更多token。如果你的需求需要较短的输出长度,你可能也需要工程设计你的提示以适应。 输出长度限制对某些LLM提示技术(如ReAct)尤其重要,在这些技术中,LLM会在你想要的响应之后持续发出无用的token。 采样控制 LLMs并不正式预测单个token。相反,LLMs预测下一个token可能的概率,其中LLM词汇表中的每个token都会获得一个概率。然后对这些token概率进行采样,以确定下一个生成的token会是什么。温度、top-K和top-P是最常见的配置设置,用于确定如何处理预测的token概率来选择单个输出token。 温度 温度控制了标记选择的随机程度。较低的温度适用于期望更确定性响应的提示,而较高的温度可能导致更多样化或意想不到的结果。温度为0(贪心解码)是确定的:总是选择最高概率的标记(但请注意,如果两个标记具有相同的最高预测概率,具体取决于如何实现平局打破,使用温度0时您可能不会总是得到相同的输出)。 温度接近最大值时倾向于生成更多随机的输出。并且随着温度越来越高,所有标记都变得同样有可能成为下一个预测标记。 双子座温度控制可以与机器学习中使用的softmax函数以类似的方式进行理解。低温度设置类似于低softmax温度(T),强调对单个、首选温度的高度确定性。较高的双子座温度设置类似于高softmax温度,使得在选定设置周围的更宽温度范围更可接受。这种增加的不确定性适用于刚性、精确温度并非必需的场景,例如在实验创意输出时。 Top-K和top-P Top-K和top-P(也称为核采样)4在 LLMs 中有两个采样设置用来限制预测的下一个词元来源于具有最高预测概率的词元。与温度类似,这些采样设置控制生成文本的随机性和多样性。 •Top-K采样从模型预测的分布中选择最有可能的前 K 个标记。top-K 越高,模型的输出越有创造性和多样性;top-K 越低,模型的输出越保守和事实性。top-K 为 1 等同于贪婪解码。 •Top-P采样选择累积概率不超过某个值(P)的最顶端的token。P的取值范围从0(贪婪解码)到1(LLM词汇表中的所有token)。 在 top-K 和 top-P 之间选择最佳方法的方式是试验这两种方法(或两者结合),看看哪一种能产生你想要的结果。 另一个重要的配置设置是在响应中要生成的 token 数量。请注意,生成更多的 token 需要 LLM 做出更多的计算,导致更高的能源消耗和潜在更慢的响应时间,从而导致更高的成本。 整合起来 在 top-K、top-P、温度和生成 token 数量之间进行选择,取决于具体的应用和期望结果,且所有设置相互影响。确保你理解所选模型如何将不同的采样设置组合在一起也很重要。 如果温度、top-K 和 top-P 都可用(如在 Vertex Studio 中),则同时满足 top-K 和 top-P 标准的 token 是下一个预测 token 的候选,然后应用温度从通过 top-K 和 top-P 标准的 token 中进行采样。如果只有 top-K 或 top-P 可用,行为相同,但仅使用其中一个 top-K 或 P 设置。 如果温度不可用,则从满足top-K和/或top-P标准的任何token中随机选择,以生成一个单独的下一个预测token。 在一种采样配置值的极限设置下,该采样设置要么取消其他配置设置,要么变得无关紧要。 • 如果将温度设置为0,top-K和top-P则无关紧要——最可能的token将成为预测的下一个token。如果你将温度设置得非常高(高于1——通常进入10的量级),温度则无关紧要,并且通过top-K和/或top-P标准的任何token将被随机采样以选择下一个预测的token。 • 如果将top-K设置为1,温度和top-P就变得无关紧要。只有一个token通过top-K标准,这个token就是下一个预测的token。如果将top-K设置得非常高,比如设置为LLM词汇表的大小,任何具有非零概率成为下一个token的token都将满足top-K标准,并且不会被选中。 • 如果将 top-P 设置为 0(或一个非常小的值),大多数 LLM 采样实现将然后仅考虑满足 top-P 标准的最可能 token,使温度和 top-K 无关。如果你将 top-P 设置为 1,任何具有非零概率成为下一个 token 的 token 都将满足 top-P 标准,并且没有 token 被选中。 作为一个通用的起始点,温度为 .2,top-P 为 .95,top-K 为 30 将会给你相对连贯的结果,这些结果可以具有创造性但不会过于夸张。如果你想要特别创造性的结果,尝试以温度为 .9,top-P 为 .99,top-K 为 40 开始。而如果你想要不太创造性的结果,尝试以温度为 .1,top-P 为 .9,top-K 为 20 开始。最后,如果你的任务总是有一个唯一正确的答案(例如,回答一个数学问题),从温度为 0 开始。 注意:随着更大的自由度(更高的温度、top-K、top-P 和输出token),LLM可能会生成不太相关的文本。 提示技术 大型语言模型(LLMs)经过调优以遵循指令,并在大量数据上进行训练,以便它们能够理解提示并生成答案。但是LLMs并不完美;你的提示文本越清晰,它对预测下一个可能出现的文本就越有帮助。此外,利用LLMs训练方式和工作原理的具体技术将帮助你从LLMs中获得相关结果。 既然我们已经了解了提示工程是什么以及它需要什么,那么让我们深入一些最重要的提示技巧的例子。 通用提示/零样本 A零样本5提示是最简单的提示类型。它仅提供任务描述以及一些LLM开始使用的文本。这种输入可以是任何东西:一个问题、一个故事的开头或指令。名称zero-shot代表“无示例”。 让我们使用 Vertex AI 中的 Vertex AI Studio(用于语言)6它提供了一个测试提示的游乐场。在表1中,您将看到一个用于对电影评论进行分类的零样本提示示例。 如下使用的表格格式是记录提示词的好方法。您的提示词很可能在最终进入代码库之前会经过多次迭代,因此以自律、结构化的方式跟踪您的提示词工程工作非常重要。关于这个表格格式、跟踪提示词工程工作的重要性以及提示词开发流程的更多信息,请参见本章后面的最佳实践部分(“记录各种提示词尝试”)。 模型温度应设置为低数值,因为不需要创造力,并且我们使用gemini-pro默认的top-K和top-P值,这有效地禁用了这两个设置(参见“LLM输出配置”)。注意生成的输出。令人不安的和杰作应该让预测稍微复杂一点,因为这两个词在同一个句子中使用。 当零样本学习不适用时,你可以在提示中提供演示或示例,这会导致“单样本”和“多样本”提示。通用提示 / 零样本 单样本 & 少样本 在为 AI 模型创建提示时,提供示例会有帮助。这些示例可以帮助模型理解你要什么。当你想让模型导向特定的输出结构或模式时,示例尤其有用。 A单次提示, 提供了单数例如,因此得名“单次学习”。这个想法是模型有一个例子可以模仿,以最好地完成任务。 A少量示例提示7提供多个将示例输入模型。这种方法向模型展示它需要遵循的模式。这个想法与一-shot类似,但多个期望模式的具体示例增加了模型遵循该模式的几率。 你进行少样本提示需要多少个示例取决于几个因素,包括任务的复杂性、示例的质量以及你正在使用的生成式人工智能(gen AI)模型的性能。一般来说,你应该使用至少三个到五个示例进行少样本提示。然而,对于更复杂的任务,你可能需要使用更多的示例,或者由于你模型的输入长度限制,可能需要使用更少的示例。 表 2 展示了一个少样本提示示例,让我们使用之前相同的 gemini-pro 模型配置设置,除了增加 token限制以满足更长响应的需求。 当你为你的提示选择例子时,请使用与你想要执行的任务相关的