提示工程简介
提示工程是设计高质量提示的过程,这些提示能指导大型语言模型(LLM)产生准确的输出。这个过程涉及调整以找到最佳提示,优化提示长度,并根据任务评估提示的写作风格和结构。
在自然语言处理和LLM的背景下,提示是提供给模型以生成响应或预测的输入。这些提示可用于完成各种理解和生成任务,如文本摘要、信息提取、问答、文本分类、语言或代码翻译、代码生成和代码文档或推理。
您不需要成为数据科学家或机器学习工程师——任何人都可以编写提示。
当进行提示工程时,您首先要选择一个模型。无论您使用Vertex AI中的Gemini语言模型、GPT、Claude还是像Gemma或LLaMA这样的开源模型,提示可能需要针对您的特定模型进行优化。
LLM输出配置
一旦选择了模型,您需要确定模型配置。大多数LLM都有各种配置选项,这些选项控制LLM的输出。有效的提示工程需要为您的任务设置这些配置。
1 输出长度
在响应中生成的标记数量是一个重要的配置设置。生成更多的标记需要LLM进行更多的计算,导致更高的能源消耗,可能较慢的响应时间,以及更高的成本。
减少LLM的输出长度不会使LLM在其创建的输出中变得更加简洁,它只是在达到限制后停止预测更多的标记。
2 抽样控制
LLM并不正式预测单个标记。相反,LLM预测下一个标记可能的概率,LLM词汇表中的每个标记都有一个概率。然后对这些标记概率进行抽样,以确定下一个产生的标记。
温度、top-K和top-P是最常见的配置设置,它们决定了预测的标记概率如何处理以选择单个输出标记。
温度
温度控制标记选择中的随机性程度。对于期望更确定性响应的提示,较低的温度更好,而较高的温度可能导致更多样化或意外的结果。
- 低温度 (接近0)
-
确定性强、创造性弱
- 高温度 (接近1或更高)
-
创造性强、随机性高
Top-K和Top-P
Top-K和Top-P(也称为核采样)是LLM中用来限制预测的下一个标记的两种抽样设置,仅从具有最高预测概率的标记中选择。像温度一样,这些抽样设置控制生成文本的随机性和多样性。
Top-K抽样
从模型预测分布中选择最可能的前K个标记。Top-K越高,模型的输出越具创造性和多样性;Top-K越低,模型的输出越受限和事实性。Top-K为1相当于贪婪解码。
Top-P抽样
选择累积概率不超过某个值(P)的顶部标记。P的值范围从0(贪婪解码)到1(LLM词汇表中的所有标记)。
选择方法
选择Top-K和Top-P之间的最佳方法是尝试两种方法(或两者结合),看哪一种产生您想要的结果。
综合配置
在选择Top-K、Top-P、温度和生成的标记数之间,取决于特定的应用和期望的结果,并且这些设置相互影响。了解您选择的模型如何将不同的抽样设置结合在一起也很重要。
配置组合
如果温度、Top-K和Top-P都可用(如在Vertex Studio中),满足Top-K和Top-P标准的标记是下一个预测标记的候选,然后将温度应用于从通过Top-K和Top-P标准的标记中抽样。
如果只有Top-K或Top-P可用,行为相同,但只使用一个Top-K或P设置。
建议配置
作为一般起点,温度为.2,Top-P为.95,Top-K为30将给您相对连贯的结果,可以有创意但不过分。
如果您想要特别有创意的结果,尝试以温度.9,Top-P为.99,Top-K为40开始。
如果您想要较少创意的结果,尝试以温度.1,Top-P为.9,Top-K为20开始。
警告
您是否见过以大量填充词结尾的响应?这也被称为"重复循环错误",这是大型语言模型中的常见问题,模型陷入循环,反复生成相同的(填充)词、短语或句子结构,通常因不适当的温度和top-k/top-p设置而加剧。
提示技术
LLM经过调整以遵循指令,并在大量数据上训练,因此它们可以理解提示并生成答案。但LLM并不完美;提示文本越清晰,LLM预测下一个可能文本就越好。此外,利用LLM训练方式的特定技术将帮助您从LLM获得相关结果。
零样本提示
零样本提示是最简单的提示类型。它只提供任务描述和一些文本供LLM开始。零样本代表"无示例"。
将电影评论分类为积极、中性或消极。
评论:"她"是一部令人不安的研究...
少样本提示
在创建AI模型的提示时,提供示例会有所帮助。这些示例可以帮助模型理解您所要求的内容。
示例:
我想要一个小比萨,上面有奶酪、番茄酱和意大利香肠。
{"size": "small", "ingredients": [...]}
系统提示
系统提示设置语言模型的整体背景和目的。它定义了模型应该做什么的"大局观"。
将电影评论分类为积极、中性或消极。只返回大写的标签。
角色提示
角色提示为语言模型分配特定的角色或身份。这有助于模型生成与分配角色及其相关知识和行为一致的响应。
我希望你扮演旅游指南的角色。我会告诉你我的位置,你将建议我附近可以参观的3个地方。
上下文提示
上下文提示提供与当前对话或任务相关的特定细节或背景信息。它帮助模型理解所问问题的细微差别。
上下文:你正在为一个关于80年代复古街机游戏的博客撰写内容。
建议3个写文章的主题...
退步提示
退步提示是一种通过首先考虑与特定任务相关的一般问题来提高模型性能的技术,然后将该问题的答案输入到后续提示中。
基于流行的第一人称射击游戏,哪些设置能贡献到一个有挑战性和引人入胜的关卡故事?
[获取回答后]
使用其中一个主题创作一个有挑战性的关卡故事...
高级提示技术
思维链 (Chain of Thought)
思维链(CoT)提示是一种通过生成中间推理步骤来提高LLM推理能力的技术。这有助于LLM生成更准确的答案。
当我3岁时,我的伴侣是我年龄的3倍。现在,我20岁了。我的伴侣多大?让我们一步一步思考。
提高复杂推理任务的准确性
可解释性:能够看到模型的推理过程
自洽性 (Self-Consistency)
自洽性结合了采样和多数投票来生成多样化的推理路径并选择最一致的答案。它提高了LLM生成响应的准确性和连贯性。
[生成多个思维链回答,然后选择出现频率最高的答案]
提高复杂问题的准确性
计算成本较高(需要多次生成)
思维树 (Tree of Thoughts)
思维树(ToT)泛化了CoT提示的概念,允许LLM同时探索多个不同的推理路径,而不是仅仅遵循单一的思维链。
优势:
- 可以探索多个不同思路
- 适合复杂推理任务
- 可以回溯并尝试不同路径
ReAct (推理与行动)
推理和行动(ReAct)是一种使LLM能够使用自然语言推理结合外部工具解决复杂任务的范式,允许LLM执行某些操作,如与外部API交互。
思考:乐队Metallica有4名成员。
行动:搜索
输入:James Hetfield有多少个孩子?
观察:三个孩子
能够与外部世界交互获取信息