生成式人工智能(GenAI)系统在工业和研究环境中的应用日益广泛。开发人员和终端用户通过提示或提示工程与这些系统进行交互。尽管提示是一个广泛且被高度研究的概念,但由于该领域尚处于早期阶段,存在术语冲突和对提示本质的本体论理解不足。本文通过汇总提示技术的分类并分析其使用情况,建立了对提示的结构化理解。我们提供了一个包含33个术语的综合词汇表,涵盖58种仅限文本的提示技术分类,以及40种其他模态的技术分类。此外,我们对自然语言前缀提示的全部文献进行了元分析。 https://arxiv.org/abs/2406.06608
引言
基于Transformer的LLM在面向消费者、内部和研究环境中被广泛部署(Bommasani et al., 2021)。通常,这些模型依赖用户提供的输入“提示”来生成响应输出。这些提示可能是文本形式的——例如“写一首关于树的诗。”——也可以采用其他形式:图像、音频、视频或它们的组合。特别是用自然语言进行提示的能力,使得与模型的交互变得简单,并能在广泛的用例中灵活使用。了解如何有效地构建、评估和执行其他提示相关任务对于使用这些模型至关重要。经验上,更好的提示在各种任务中能带来更好的结果(Wei et al., 2022; Liu et al., 2023b; Schulhoff, 2022)。大量文献已经围绕提示的使用以改善结果展开,并且提示技术的数量正在迅速增加。 然而,由于提示是一个新兴领域,提示的使用仍然理解不够充分,只有一小部分现有的术语和技术为从业者所熟知。我们对提示技术进行了大规模综述,以创建一个关于该领域术语和技术的强大资源。我们期望这是将随着时间发展而进行的术语的首次迭代。 研究范围
我们创建了一个广泛的提示技术目录,可以被开发者和研究人员快速理解和轻松实现以进行快速实验。为此,我们将研究重点限制在离散前缀提示(Shin et al., 2020a)而非填空提示(Petroni et al., 2019; Cui et al., 2021),因为现代LLM架构(特别是仅解码模型)使用前缀提示,广泛应用且对消费者和研究人员都有强大支持。此外,我们将重点精炼至硬(离散)提示而非软(连续)提示,并排除使用基于梯度更新技术(即微调)的论文。最后,我们仅研究与任务无关的技术。这样的决定使得这项工作对技术水平较低的读者也具有可读性,并保持了一个可管理的研究范围。 章节概述
我们基于PRISMA过程(Page et al., 2021)(见第2.1节)进行了机器辅助的系统综述,识别了58种不同的基于文本的提示技术,并据此创建了一个包含强大术语的提示分类法(见第1.2节)。 尽管大量关于提示的文献集中在仅英语的环境中,我们也讨论了多语言技术(见第3.1节)。鉴于多模态提示的快速增长,其中提示可能包括图像等媒体,我们还将研究范围扩展到多模态技术(见第3.2节)。许多多语言和多模态提示技术是英语文本提示技术的直接扩展。 随着提示技术变得更加复杂,它们开始融合外部工具,如互联网浏览和计算器。我们用“代理”一词来描述这些类型的提示技术(见第4.1节)。 理解如何评估代理和提示技术的输出以确保准确性并避免幻觉是重要的。因此,我们讨论了评估这些输出的方法(见第4.2节)。我们还讨论了设计提示以减少对公司和用户的风险的安全措施(见第5.1节)和安全措施(见第5.2节)。 最后,我们在两个案例研究中应用提示技术(见第6.1节)。在第一个案例中,我们针对常用的基准MMLU(Hendrycks et al., 2021)测试了一系列提示技术。在第二个案例中,我们详细探讨了在一个重要的实际使用案例中手动提示工程的例子,识别寻求支持的个体文本中绝望的信号——这是自杀危机的一个主要指标(Schuck et al., 2019a)。我们在最后总结了提示的性质及其最近的发展(见第8节)。 1.1 什么是提示?
提示是生成式人工智能模型的输入,用于指导其输出(Meskó, 2023; White et al., 2023; Heston and Khun, 2023; Hadi et al., 2023; Brown et al., 2020)。提示可以由文本、图像、声音或其他媒体组成。提示的一些示例包括:“为一家会计事务所的营销活动写一封三段的电子邮件”,一张桌子的照片,附有文字“描述桌子上的所有东西”,或者一段在线会议的录音,指示“总结这段会议”。 提示模板 提示通常通过提示模板构建(Shin et al., 2020b)。提示模板是一个函数,其中包含一个或多个变量,这些变量将被一些媒体(通常是文本)替换,以创建一个提示。然后,这个提示可以被视为模板的一个实例。 考虑将提示应用于推特的二元分类任务。以下是一个用于分类输入的初始提示模板: 将这条推特分类为正面或负面:{TWEET} 数据集中的每条推特将被插入到模板的一个单独实例中,然后将生成的提示提供给LLM进行推断。 写一首关于树的诗。 写一首关于以下主题的诗: {USER_INPUT} 图1.2:提示和提示模板是不同的概念;当输入插入到提示模板中时,提示模板成为提示。 1.2 术语
1.2.1 提示的组成部分 提示中包含各种常见的组成部分。我们总结了最常用的组成部分,并讨论它们如何融入提示中。 指令 许多提示以指令或问题的形式发出指令。这是提示的核心意图,有时简单地称为“意图”。例如,这是一个包含单一指令的提示示例: 告诉我五本值得阅读的好书。 指令也可以是隐含的,如在这个一次性示例中,指令是执行英语到西班牙语的翻译: Night: Noche Morning: 示例 示例,也称为范例或样本,作为演示指导GenAI完成任务。上述提示是一个一次性(即一个示例)提示。 输出格式 通常希望GenAI以某种特定格式输出信息,例如CSV或Markdown格式(Xia et al., 2024)。为此,您可以简单地添加指令,如下所示: {PARAGRAPH} 将其总结为CSV。 风格指令 风格指令是一种输出格式化,用于在样式上而不是结构上修改输出(见第2.2.2节)。例如: 写一段关于羊驼的清晰简洁的段落。 角色 角色,也称为人格(Schmidt et al., 2023; Wang et al., 2023l),是一个经常讨论的组成部分,可以改善写作和文本风格(见第2.2.2节)。例如: 假装你是一个牧羊人,写一首关于羊驼的打油诗。 附加信息 在提示中通常需要包括附加信息。例如,如果指令是写一封电子邮件,您可能需要包括您的姓名和职位,以便GenAI正确地签署电子邮件。附加信息有时被称为“上下文”,但我们不鼓励使用这个术语,因为它在提示领域中有其他含义。 1.2.2 提示术语 提示文献中的术语正在快速发展。目前,存在许多未被充分理解的定义(例如提示、提示工程)和相互冲突的定义(例如角色提示与人格提示)。缺乏一致的词汇表妨碍了社区清晰描述所使用的各种提示技术的能力。我们提供了提示社区中使用的术语表(图1.3)。较少使用的术语留在附录A.2。为了准确定义频繁使用的术语,如提示和提示工程,我们整合了许多定义(见附录A.1),以得出具有代表性的定义。 提示 提示是向生成式人工智能提供提示,从而生成响应的过程。例如,发送一段文本或上传一张图片的操作即构成提示。 提示链 提示链(活动:提示链)由两个或多个提示模板依次使用组成。第一个提示模板生成的提示的输出用于参数化第二个模板,依此类推,直到所有模板都用完为止(Wu et al., 2022)。
提示技术是一种描述如何构建提示、提示链或多个提示的动态序列的蓝图。提示技术可能包括条件或分支逻辑、并行性或跨多个提示的其他架构考虑。
提示工程是通过修改或更改所使用的提示技术来开发提示的迭代过程(图1.4)。
提示工程技术是一种迭代提示以改进提示的策略。在文献中,这通常是自动化技术(Deng et al., 2022),但在消费环境中,用户通常手动执行提示工程。
范例是任务完成的示例,在提示中展示给模型(Brown et al., 2020)。
使用自然语言前缀或提示来引发语言模型行为和响应的想法在GPT-3和ChatGPT时代之前就已经存在。GPT-2(Radford et al., 2019a)使用了提示,首次在生成式人工智能的背景下由Fan et al.(2018)使用。然而,提示的概念之前还有相关的概念,如控制代码(Pfaff, 1979; Poplack, 1980; Keskar et al., 2019)和写作提示(Fan et al., 2018)。 提示工程这一术语似乎是最近由Radford et al.(2021)提出的,稍后由Reynolds和McDonell(2021)进一步发展。然而,各种论文在没有命名这一术语的情况下执行了提示工程过程(Wallace et al., 2019; Shin et al., 2020a),包括Schick和Schütze(2020a,b);Gao et al.(2021)对于非自回归语言模型的研究。 一些最早关于提示的工作对提示的定义与当前使用的略有不同。例如,考虑以下来自Brown et al.(2020)的提示: Translate English to French: llama Brown et al.(2020)认为“llama”这个词是提示,而“Translate English to French:”是“任务描述”。包括本文在内的最新论文将传递给LLM的整个字符串称为提示。