AI知识库

53AI知识库

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


大模型提示词技术报告大全
发布日期:2024-09-09 19:28:40 浏览次数: 1630


Sander Schulhoff1,2∗Michael Ilie1∗ Nishant Balepur1Konstantine Kahadze1桑德·舒尔霍夫1,2∗迈克尔·伊利1∗ 尼山特·巴勒普尔1康斯坦丁·卡哈兹1Amanda Liu1Chenglei Si4Yinheng Li5Aayush Gupta1HyoJung Han1Sevien Schulhoff1Pranav Sandeep Dulepet1Saurav Vidyadhara1Dayeon Ki1Sweta Agrawal12Chau Pham13Gerson Kroiz Feileen Li1 Hudson Tao1 Ashay Srivastava1 Hevander Da Costa1 Saloni Gupta1Megan L. Rogers8Inna Goncearenco9Giuseppe Sarli9,10Igor Galynker11 Denis Peskoff7 Marine Carpuat1 Jules White6 Shyamal Anadkat3 Alexander Hoyle1 Philip Resnik1 1 2 3 4 5 6 7

马里兰大学  斯坦福 微软 范德堡 普林斯顿  得克萨斯州立大学爱迦医学院ASST Brianza 西奈山贝斯以色列医院 电信研究所 马萨诸塞大学阿默斯特分校 sschulho@umd.edu milie@umd.edu resnik@umd.edu


摘要 生成人工智能(GenAI)系统正被越来越广泛地部署在各行业和研究领域。开发者和最终用户通过提示或提示工程与这些系统进行交互。虽然提示是一个广泛研究的概念,但由于该领域的新生性,存在着冲突的术语和对构成提示的本体论的理解不足。本文通过构建提示技术的分类法并分析它们的使用,建立了对提示的结构化了解我们提出了一个包括33个词汇术语、58种仅文本提示技术的分类法以及其他模式的40种技术的全面词汇表。我们进一步对整个自然语言前缀提示的文献进行了元分析。


目录


1介绍


1.1 提示

1.2什么是提示?

1.3提示词的简史


2提示的荟萃分析


2.1系统性审查流程


2.1.1流水线


2.2基于文本的技术

2.3提示技术的使用

2.4提示工程化


2.5答案工程学

3超越英文文本提示


3.1多语言

3.2多模态

4促进策略的拓展


4.1智能体

4.2评估

5提示问题


5.1安全性

5.1.3硬化措施


5.2对齐

5.2.4模糊性


6基准


6.1技术基准测试

6.2清晰工程案例研究

7相关工作

8结论


致谢


参考文献


A附录


A.1提示的定义.


A.2扩展词汇

A.3数据表

A.4关键词


A.5评估表


A.6陷阱引导过程

A.7形式定义提示


A.8在上下文学习的定义消歧


A.9贡献


1 介绍


基于Transformer的LLMs广泛应用于消费者、内部和研究领域(Bommasani等,2021年)。通常,这些模型依赖用户提供输入的“提示”,模型则产生响应的输出。这些提示可能是文本的,“写一首关于树的诗。”,也可以采用其他形式:图像、音频、视频或它们的组合。特别是使用自然语言提示模型的能力使其易于互动,并可灵活应用于各种用例。


掌握如何有效地构建、评估和执行其他任务的提示对于使用这些模型至关重要。从经验上看,更好的提示会在广泛的任务中带来改善的结果(Wei等,2022年;Liu等,2023b年;Schulhoff,2022年)。已经有大量文献围绕着使用提示来改善结果展开,并且提示技术的数量正在迅速增加。


然而,由于提示是一个新兴领域,对于提示的使用仍然存在着很多不明确之处,只有少数现有术语和技巧为从业者所熟知。我们进行了大规模的提示技术审查,以创建一个领域内术语和技巧的稳健资源。我们期望这将是随着时间推移而发展的术语的第一次迭代。


研究范围 我们创建了一个广泛的提示技术目录,可以让开发人员和研究人员快速理解并轻松实施以进行快速实验。为此,我们将研究范围限定在重点研究离散前缀提示(Shin等,2020a)而不是填空提示(Petroni等,2019;Cui等,2021),因为现代LLM架构(特别是仅解码器模型)广泛使用前缀提示,并为消费者和研究人员提供了强大的支持。此外,我们将研究焦点细化为硬(离散)提示而不是软(连续)提示,并排除使用基于梯度的更新技术(即微调)的论文。最后,我们只研究与任务无关的技术。这些决策保持了



让工作方法对不太懂技术的读者友好,并保持可控的范围。


章节概览 我们进行了一项基于PRISMA流程(Page等,2021)的机器辅助系统性综述(第2.1节),以识别58种不同的基于文本的提示技术,我们从中创建了一个具有强大提示术语术语的分类法。


1.1  提示是什么?


许多关于提示的文献侧重于英语环境,我们也讨论了多语言技术(第3.1节)。 鉴于多模态提示迅速增长,其中提示可能包括图像等媒体,我们还扩大了范围到多模态技术(第3.2节)。 许多多语言和多模态提示技术是英语纯文本提示技术的直接扩展。


随着提示技术变得越来越复杂,它们已经开始整合外部工具,如互联网浏览和计算器。我们使用术语“智能体”来描述这些类型的提示技术(第4.1节)。


重要的是要了解如何评估智能体和提示技术的输出,以确保准确性并避免幻觉。因此,我们讨论评估这些输出的方法(第4.2节)。我们还讨论设计能减少对公司和用户造成伤害风险的提示的安全(第5.1 节)和安全措施(第5.2节)。


最后,我们在两个案例研究中应用提示技术(第6.1节)。在第一个案例中,我们测试了一系列提示技术与常用基准MMLU(Hendrycks等人,2021年)的比较。在第二个案例中,我们详细探讨了在重要的实际用例中进行手动提示工程的示例,识别出寻求支持的个体文本中表现出的绝望乱象信号——这是自杀危机的顶级指标(Schuck等人,2019a年)。最后,我们对提示的性质及其最近的发展进行讨论(第8节)。


1.2 术语


提示是生成式人工智能模型的输入,用于引导其输出(Meskó,2023年;White等,2023年;Heston和Khun,2023年;Hadi等,2023年;Brown等,2020年)。提示可以包括文本、图像、声音或其他媒体。一些提示的例子包括:“为会计公司的营销活动撰写一封三段邮件”,一张桌子的照片并附有文字“描述桌子上的一切”,或者一段在线会议录音,并附有“总结这个内容”的指示。


提示模板通常是通过提示模板(Shin et al.,2020b)构建的。提示模板是一个包含一个或多个变量的函数,这些变量将被一些媒体(通常是文本)替换,以创建一个提示。然后可以将此提示视为模板的一个实例。






考虑将提示应用于推文的二分类任务。这里是一个可用于分类输入的初始提示模板。


数据集中的每个推文都将被插入到一个单独的模板实例中,生成的提示将被提供给语言模型进行推断。



图1.2:提示和提示模板是独立的概念;当将输入插入提示模板时,该模板变成一个提示。


1.2.1 术语表


常见的提示包含各种组件。我们总结了最常用的组件并讨论它们如何适用于提示。


指令,许多提示以指令形式发布,指令可以是一种指示或问题。这是提示的核心意图,有时被简称为“意图”。例如,这是一个包含单一指令的提示的示例:


指令也可以是隐含的,就像在这个案例中一样,指令是进行英语到西班牙语的翻译:


示例(Examples),也称为实例或样本,在指导GenAI完成任务时起到示范作用。上面的提示是一个OneShot(即一个示例)提示。



输出格式化通常需要GenAI以某些特定格式输出信息,例如CSV或Markdown格式(Xia等,2024年)。为了方便起见,您只需添加如下所示的指令即可:


样式指令样式指令是一种输出格式,用于修改输出的风格,而不是结构上的改变(第2.2.2节)。例如:


角色,也被称为人物(Schmidt等,2023年; Wang等,2023年),是一个经常讨论的组成部分,可以改善写作和文本风格(2.2.2节)。例如:



附加信息。通常需要在提示中包含额外信息。例如,如果指令是写一封电子邮件,您可能会包含您的姓名和职位信息,以便GenAI 能够正确签署邮件。附加信息有时被称为“上下文”,尽管我们不鼓励在提示空间中使用该术语,因为它在其他方面含义过于多样。


图 1.3: 提示的术语。带有附录链接的术语不足以在主要论文,但对提示领域很重要。提示技术如图 2.2 所示


1.2.2 提示术语


术语在提示文献中正在迅速发展。目前,有许多定义被理解不透彻(例如提示、提示工程)和相互冲突的定义(例如角色提示与角色扮演提示)。缺乏一致的词汇妨碍了社区清晰描述正在使用的各种提示技术的能力。我们提供了提示社区中使用的一套强大的术语词汇(图1.3)。较少使用的术语则留在附录A.2中。为了准确定义常用术语如提示和提示工程,我们整合了许多定义(附录A.1)以得出代表性定义。


触发触发是向 GenAI 提供提示的过程,GenAI 随后生成一个回应。例如,发送一段文本或上传一幅图像的行为构成触发。


提示链Prompt Chain。 一个提示链(活动:提示链接)包括连续使用两个或更多提示模板。由第一个提示模板生成的提示的输出用来参数化第二个模板,持续直至所有模板用尽(Wu et al., 2022)。



图1.4:Prompt工程过程包括三个重复步骤:1)对数据集进行推断 2)评估性能和3)修改提示模板。请注意,提取器用于从LLM输出中提取最终响应(例如,“这个短语是积极的” → “积极的”)。有关提取器的更多信息,请参见第2.5节。


提示技术.提示技术是一个蓝图,用于描述如何构建提示、提示或多个的动态排序


提示。提示技术可以包括条件或分支逻辑、并行度或跨多个的其他架构注意事项提示。


提示工程。 Prompt 工程是通过修改来开发提示的迭代过程或更改您正在使用(图 1.4)。


提示工程技术。提示工程技术是一种迭代提示改进它。在文学中,这通常会


是自动化技术(邓等人,2022 年),但在消费者设置中,用户经常执行提示工程。

样例Exemplar。Exemplars 是任务ompleted 中,这些 API 将以提示(Brown et al., 2020)。


1.3 提示词的简史


使用自然语言前缀或提示来引发语言模型的行为和响应的概念起源于 GPT-3 和 ChatGPT 时代之前。GPT-2(Radford等,2019a)使用了提示,似乎是由 Fan 等人(2018年)首次在生成式人工智能环境中使用的。然而,提示的概念之前已经有相关概念,如控制代码(Pfaff,1979年;Poplack,1980年;Keskar等,2019年)和写作提示。


最近,Prompt Engineering这个术语似乎是从Radford等人(2021年)那里出现的,稍晚一点又从Reynolds和McDonell(2021年)那里出现。


然而,一些论文在不使用该术语的情况下进行了及时的工程设计(Wallace等,2019年;Shin等,2020a年),包括Schick和Schütze(2020a,b);Gao等(2021年)的非自回归语言模型。


一些关于提示的最初研究对提示的定义与当前的使用稍有不同。例如,考虑来自Brown等人(2020)的以下提示:


Brown等人(2020年)认为“lama”一词是提示词,“将英语翻译成法语:”是“任务描述”。更近期的论文,包括本文,在提及传递给LLM的整个字符串时称之为提示。



Brown等人。 2020 将单词 “llama” 视为提示,而 “Translate English to French “任务描述。最近的论文,包括这篇论文,将传递给 LLM 的整个字符串称为提示符。


2 提示的荟萃分析


2.1 系统性审查流程


为了牢固地收集这篇论文的数据集,我们进行了一项基于PRISMA流程(Page等人,2021年)的系统文献综述(见图2.1)。我们将该数据集托管在HuggingFace上,并在附录A.3中提供了一个数据表(Gebru等人,2021年)。我们的主要数据来源是arXiv、Semantic Scholar和ACL。我们使用一个列表查询这些数据库。


44个与提示和提示工程密切相关的关键词(附录 A.4)。


2.1.1 流水线


在这一部分,我们介绍了我们的数据抓取流程,包括人工和LLM辅助审查。作为建立过滤标准的初始样本,我们根据一组简单的关键词和布尔规则从arXiv中检索论文(A.4)。然后,人类注释员为arXiv数据集中的1,661篇文章进行以下标准的标记:


这篇论文提出了一种新型的提示技术吗?(包括)


这篇文章是否严格涵盖了硬前缀提示?(包括)


这篇论文是否专注于通过反向传播梯度进行训练?(不包括)


对于非文本模态,是否使用了遮罩帧和/或窗口?(包括)


一组300篇文章由两名标注者独立审查,他们之间有92%的一致性(Krippendorff's α = Cohen's κ = 81%)。随后,我们利用GPT-4-1106-preview开发一个提示来分类剩余的文章。我们根据100份地面真实标注验证了这个提示,达到了89%的精度和75%的召回率(F1为81%)。人工和LLM的注释结合生成了最终的1,565篇论文。


2.2 基于文本的技术


我们现在提供了一个包含58种基于文本的提示技术的全面分类本体论,分为6个主要类别(图2.2)。虽然


图2.1:PRISMA审阅流程。我们从中累积了4,247份独特记录,其中提取了1,565份相关记录。


一些技术可能适用于多个类别,我们将它们归为最相关的一个类别。


2.2.1 上下文学习(ICL)


ICL指的是GenAIs通过为它们提供示例和/或相关指令来学习技能和任务的能力,而无需进行权重更新/重新训练(Brown等,2020;Radford等,2019b)。这些技能可以通过示例(图2.4)和/或指令(图2.5)学习。请注意,单词“学习”是具有误导性的。ICL可以简单地是任务规范- 这些技能不一定是新的,并且可以已经包含在训练数据中(图2.6)。有关此术语使用的讨论,请参见附录A.8。目前正在对优化(Bansal等,2023)和理解(Si等,2023a;Štefánik和Kadlcíkˇ等,2023)ICL进行重大工作。


Few-Shot Prompting (Brown等,2020)是图2.4中所见范式,其中GenAI学习仅使用少量示例完成任务。示例(:


图2.2:我们数据集中的所有基于文本的提示技术。


图2.3:在制作少样本提示时,我们强调六个主要设计决策。请注意,这里的建议并不能推广到所有任务;在某些情况下,其中的每一个决策都可能对性能造成损害。



图2.4:ICL范例提示


从以下文本中提取出所有具有3个相同字母和至少3个其他字母的单词:{TEXT}



图2.5:ICL指令提示


Few-Shot Learning(FSL)(Fei-Fei等,2006;


王等(2019)经常与少样本提示(Brown等,2020)混淆。重要的是要注意,Few-Shot Learning(FSL)是一种更广泛的机器学习范式,可以用少量示例来调整参数,而Few-Shot Prompting是特定于GenAI设置中提示的内容,不涉及更新模型参数。


2.2.1.1   少样本提示设计决策


为 prompt 选择示例是一项困难的任务-性能在很大程度上取决于示例的各种因素(Dong等,2023年),而且只有有限数量的示例适合于典型的LLM上下文窗口。


我们强调了六个单独的设计决策:


包括示例的选择和顺序,这些决策对输出质量产生了关键影响(Zhao等,2021a年;Lu等,2021年;Ye和Durrett,2023年)(图2.3)。


增加范例数量通常会提高模型的性能,特别是在更大的模型中(Brown等,2020年)。但是,在某些情况下,超过20个范例可能会减少效益(Liu等,2021年)。



图2.6:来自训练数据提示的ICL。在这个版本的ICL中,模型并没有学习新技能,而是使用其训练集中的知识。


示例排序案例的顺序会影响模型的行为(Lu等,2021年;Kumar和Talukdar,2021年;Liu等,2021年;Rubin等,2022年)。在某些任务中,案例的顺序会导致准确率从低于50%变化到超过90%(Lu等,2021年)。


示例标签 分布就像传统的监督式机器学习一样,在提示中示例标签的分布会影响行为。例如,如果包括了来自一个类的10个示例和另一个类的2个示例,这可能会导致模型偏向于第一个类。


示例标签质量 尽管多个示例的一般益处是明显的,但严格有效示范的必要性尚不明确。一些研究(Min等,2022年)表明,标签的准确性并不重要 - 为模型提供带有错误标签的示例可能不会对性能造成负面影响。然而,在某些设置下,性能会受到显着影响(Yoo等,2022年)。较大的模型通常更擅长处理错误或无关的标签(Wei等,2023年)。


重要讨论这一因素,因为如果您正在从可能包含不准确信息的大型数据集自动生成提示,可能需要研究标签质量如何影响您的结果。


样本格式对示例的格式化也会影响性能。其中最常见的格式之一是“Q: {输入},A: {标签}”,但最佳格式可能因任务而异;值得尝试多种格式,以查看哪种效果最好。


训练数据中常见的格式可能会导致更好的性能表现(Jiang等人,2020)。


选取与测试 样本相似的样本通常有助于性能(Liu等,2021年;Min等,2022年)。然而,在某些情况下,选择更多样化的样本可以提高性能(Su等,2022年;Min等,2022年)。


2.2.1.2       少样本提示技术


考虑所有这些因素,Few-Shot Prompting很难有效实施。我们现在在受监督设置中研究 Few-Shot Prompting 的技术。Ensembling 方法也可以使 Few-Shot Prompting 受益,但我们将它们分开讨论(第2.2.5节)。


假设我们有一个训练数据集Dtrain,其中包含多个输入Dxtraini和输出Dytraini,可用于为GenAI进行少样本提示(而非执行基于梯度的更新)。假设该提示可以在测试时相对于Dxtesti动态生成。以下是我们将在本节中使用的提示模板,遵循“输入:输出”格式(图2.4):



图2.7:少样本提示模板


K-最近邻居(KNN)(Liu等,2021)是一组算法之一,选择类似于Dxtesti的实例来提高性能。尽管有效,但在生成提示时使用KNN可能会耗时且资源密集。


Vote-K(Su等人,2022年)是另一种选择与测试样本相似示例的方法。在第一阶段,模型提出有用的未标记候选示例供注释者标记。第二阶段,使用已标记的池进行Few-Shot Prompting。Vote-K还确保新增的示例与现有示例足够不同,以增加多样性和代表性。


自动生成上下文学习(SG-ICL)(Kim等,2022)利用GenAI自动生成示例。在训练数据不可用时比零-shot方案好,但生成的样本不如实际数据有效。


Prompt Mining (Jiang et al., 2020)是通过大型语料库分析来发现提示中的最佳“中间词”(实际上是提示模板)的过程。例如,如果在少样本提示中不使用常见的“Q: A:”格式,可能存在类似的更常见的格式在语料库中更频繁地出现。在语料库中更频繁出现的格式可能会导致更好的提示性能。


更复杂的技术,如LENS(Li和Qiu,2023a),UDR(Li等,2023f)和主动示例选择(Zhang等,2022a),分别利用迭代过滤、嵌入和检索,以及强化学习。


2.2.2  零样本


风格引导(Lu等,2023a)涉及在提示中指定所需的风格、语调或体裁,以塑造GenAI的输出。类似的效果可以通过角色提示来实现。


情感提示(Li等,2023a)将与人类心理相关的短语(例如,“这对我的事业很重要”)融入提示中,这可能会导致在基准测试和开放式文本生成中改善LLM的表现。


System2Attention(S2A)(魏斯顿和Sukhbaatar, 2023) 首先要求一个LLM重写提示,并删除其中与问题无关的任何信息。然后,将这个新提示传递给另一个LLM以获取最终的回答。


SimToM(Wilf等,2023)处理涉及多人或多对象的复杂问题。给定问题后,它尝试建立一个人所知道的事实集合,然后仅基于这些事实回答问题。这是一个两段提示的过程,可以帮助消除提示中无关信息的影响。


Rephrase and Respond (RaR) (Deng et al., 2023)指导语言模型在生成最终答案之前重新表述和扩展问题。例如,它可能会在问题中添加以下短语:"重新表述和扩展问题,并回答"。这可以在单次传递中完成,也可以单独将新问题传递给语言模型。RaR在多项基准测试中表现出改进。


Re-reading(RE2)(Xu等,2023)在提示中添加了短语“再次阅读问题:”,除了重复问题。尽管这是一种如此简单的技术,但在推理基准中已经显示了改进,特别是对于复杂问题。


Self-Ask(Press et al., 2022)提示LLMs首先要决定他们是否需要针对给定提示询问跟进问题。如果需要,LLM会生成这些问题,然后回答它们,最后回答原始问题。


2.2.3   思维生成


思维生成涵盖了一系列技术,这些技术促使LLM在解决问题时表达其推理过程(Zhang等,2023年)。


Chain-of-Thought(CoT)Prompting(Wei等,2022年)利用少样本提示来鼓励LLM在给出最终答案之前表达其思考过程。有时,该技术被称为 Chain-of-Thoughts(Tutunov等,2023年;Besta等,2024年;Chen等,2023年)。已经证明这种技术显著提高了LLM在数学和推理任务中的表现。在Wei等(2022年)中,提示包括一个问题实例,一个推理路径和正确答案(图2.8)。


Q: Jack有两个篮子,每个篮子里都有三个球。Jack一共有多少个球?


一个篮子里有3个球,所以两个篮子里一共有3 * 2 = 6个球。


Q: {QUESTION} A:



图2.8:一次性的思维链提示。


2.2.3.1  零样本端到端对话生成


最简单版本的CoT不包含任何实例。 它涉及将一个引导思考的短语附加到提示中,例如“让我们一步一步地思考。”(Kojima等人,2022)。其他建议的引导思考短语包括“让我们逐步解决这个问题,以确保我们得到正确答案”(Zhou等人,2022b)和“首先,让我们从逻辑上思考一下”(Kojima等人,2022)。 Yang等人(2023a)寻找最佳的思考引导器。零示范CoT方法具有吸引力,因为它们不需要实例,并且通常与任务无关。


Step-Back Prompting(Zheng et al., 2023c)是CoT的一种修改版本,在这种方法中,首先向LLM提出一个关于相关概念或事实的通用、高层次的问题,然后再深入推理。这种方法已经显著改进了PaLM2L和GPT-4在多个推理基准上的性能。


模拟提示(Yasunaga等,2023年)类似于SG-ICL,并自动生成包含CoTs的示例。它已经在数学推理和代码生成任务中展示了改进。


思路引导(ThoT)提示(周等人,2023年)由一个改进的思维诱导器组成,用于CoT推理。它不再使用“让我们一步一步地思考”,而是使用“让我按照可管理的部分一步一步地引导你浏览这个背景,随着我们的进行进行总结和分析”。这种思维诱导器在问答和检索设置中表现良好,特别是在处理大型、复杂的背景时。


Tabular Chain-of-Thought(Tab-CoT)(Jin and Lu, 2023)由一个Zero-Shot CoT提示组成,使LLM输出的推理成为一个Markdown表格。这种表格设计使LLM能够改进其输出的结构,从而提高推理能力。


2.2.3.2  少样本 CoT


这组技术向LLM提供了多个实例,包括思维链条。这能显著提升性能。这种技术有时被称为ManualCoT(Zhang等,2022b)或Golden CoT(Del和Fishel,2023)。


对比式CoT 提示 (Chia 等人,2023) 将不正确的例子和正确的解释添加到 CoT 提示中,以向大型语言模型展示如何不进行推理。这种方法在算术推理和事实问答等领域显示出了显著的改进。


不确定性路由的CoT提示(Google,2023年)会对多个CoT推理路径进行采样,然后选择占多数的路径(如果超过一定阈值,则根据验证数据计算)。如果不能达到这个条件,就会贪婪地采样并选择该响应。这种方法在GPT4和Gemini Ultra模型的MMLU基准上显示出改进。


基于复杂性提示(Fu等,2023b)对CoT进行了两个主要修改。首先,它根据问题长度或需要的推理步骤等因素选择复杂示例进行注释和包含在提示中。其次,在推理过程中,它对超过一定长度阈值的多个推理链(答案)进行抽样,并在超过长度阈值的链之间使用多数投票,这是在较长的推理表明较高答案质量的前提下。这种技术已经在三个数学推理数据集上显示出改进。


主动提示(Diao等人,2023年)从一些训练问题/示例开始,要求LLM解决这些问题,然后计算不确定性(在这种情况下是不一致),并要求人类标注员重新书写具有最高不确定性的示例。


记忆性思维提示(Li and Qiu,2023b)利用无标签的训练实例在测试时构建少样本CoT提示。在测试之前,它使用CoT对无标签的训练实例进行推理。在测试时,它检索与测试样本相似的实例。这种技术在算术、常识和事实推理等基准测试中显示出了显著的改进。


自动串联思维 (Auto-CoT)Prompting(张等,2022b)使用魏等人(2022)的Zero-Shot提示来自动生成思维链。然后,这些思维链会被用于为测试样本构建Few-Shot CoT提示。


2.2.4 分解


重要的研究已经集中在将复杂问题分解为更简单的子问题上。这对于人类和GenAI (Patel et al., 2022)都是一种有效的问题解决策略。一些分解技术类似于引发思考的技术,比如CoT,通常会自然地将问题分解为更简单的组件。然而,明确地分解问题可以进一步提高LLMs的问题解决能力。


最少提示-最多提示(Zhou等人,2022a)首先通过提示一个LLM将给定问题分解成子问题,而不解决它们。然后,按顺序解决这些子问题,每次将模型的响应附加到提示上,直到得出最终结果。这种方法在涉及符号操作、组合概括和数学推理的任务中显示出显著的改进。


分割提示-Decomposed Prompting (DECOMP) (Khot等,2022) Few-Shot提示LLM展示如何使用特定功能。这些功能可能包括字符串分割或互联网搜索;通常作为单独的LLM调用实现。鉴于此,LLM将其原始问题分解为子问题,并将其发送到不同的功能中。在某些任务上,它已经显示出比从少到多提示更好的性能。


规划-解决提示Plan-and-Solve Prompting(Wang等人,2023f)由一个改进的零样本 CoT提示组成,"让我们首先了解问题并制定解决方案的规划。然后,让我们按步骤执行规划并解决问题"。这种方法在多个推理数据集上产生比标准零样本-CoT更强大的推理过程。


思维树Tree-of-Thought (ToT) (Yao et al., 2023b),又称为思维树(Long,2023),通过以初始问题开始,生成多个可能步骤(来自CoT)的形式,创建了一个类似树状的搜索问题。 它评估每一步向解决问题的进展(通过提示)并决定继续哪些步骤,然后继续创建更多思维。 ToT特别适用于需要搜索和规划的任务。


递归思维(Lee和Kim,2023年)类似于常规的CoT。然而,每当它在推理链中遇到复杂问题时,会将该问题发送到另一个提示/LLM调用中。完成后,答案插入到原始提示中。通过这种方式,它可以递归地解决复杂问题,包括可能超过最大上下文长度的问题。这种方法已经在算术和算法任务上显示出改进。虽然它是通过微调输出一个特殊的令牌来实现的,这个令牌将子问题发送到另一个提示中,但也可以仅通过提示来实现。


编程思维Program-of-Thoughts (Chen et al., 2023d) 使用类似Codex的LLMs来生成编程代码作为推理步骤。一个代码解释器执行这些步骤以获得最终答案。它在数学和与编程相关的任务中表现出色,但对语义推理任务效果较差。


忠实思维链路(Lyu等,2023)生成一个同时具有自然语言和符号语言(例如Python)推理的CoT,就像思维程序一样。然而,它还以一种任务相关的方式利用不同类型的符号语言。


思维骨架-Skeleton-of-Thought(Ning et al., 2023)专注于通过并行化加速答案速度。给定一个问题,它提示一个LLM创建答案的骨架,也就是需要解决的子问题。然后,并行地将这些问题发送给LLM,并将所有输出连接起来,得出最终的响应。


2.2.5 集成学习


在GenAI中,合成是使用多个提示来解决相同问题的过程,然后将这些回应聚合到最终输出中。在许多情况下,通过多数投票(选择最常见的回应)来生成最终输出。合成技术可以减少LLM输出的差异性,并通常提高准确性,但增加了需要调用模型的次数来得出最终答案的成本。


Demonstration Ensembling (DENSE) (Khalifa 等,2023年) 创建多个少样本提示,每个提示都包含训练集中不同的示例子集。随后,它对它们的输出进行综合,生成最终的响应。


Mixture of Reasoning Experts (MoRE) (Si等,2023年) 通过使用不同类型的专门提示为不同类型的推理创建一组多样化的推理专家(例如,用于事实推理的检索增强提示,用于多跳和数学推理的思维链推理,以及用于常识推理的生成知识提示)。基于一致性得分选择所有专家中最佳答案。


最大互信息方法(Sorensen 等人,2022)创建多个具有不同风格和示例的提示模板,然后选择最佳模板,使其最大化提示与LLM输出之间的互信息。


自洽性(Wang等,2022年)基于这样一种直觉,即多个不同的推理路径可以导致相同的答案。这种方法首先多次提示语言模型进行CoT,关键是使用非零温度来引出多样化的推理路径。接着,它通过对生成的所有回答进行多数投票来选择最终的回答。自洽性方法在算术、常识和符号推理任务上表现出改进。


通用自一致性(Chen等,2023e)类似于自一致性,但与其通过编程计算频率来选择大多数响应不同,它将所有输出插入到一个提示模板中,该模板选择大多数答案。这对于自由文本生成以及同一答案可能由不同提示输出略有不同的情况非常有帮助。


"多个CoTs上的元推理(Yoran等,2023)类似于通用的自-"。


连贯性;首先为给定问题生成多个推理链(但不一定是最终答案)。接下来,将所有这些链插入到一个单一的提示模板中,然后从中生成最终答案。


DiVeRSe(Li等,2023年)为给定问题创建多个提示,然后对每个提示执行SelfConsistency,生成多条推理路径。他们根据路径中的每个步骤对推理路径进行评分,然后选择最终响应。


基于一致性的自适应提示


(COSP) (Wan等人,2023a)通过在一组示例上运行零样本CoT,并选择高一致性的输出子集作为范例,构建Few-Shot CoT提示。然后再次对这个最终提示执行自一致性。


通用自适应提示(USP)(Wan等,2023b)借鉴了COSP的成功,旨在使其适用于所有任务。 USP利用未标记数据生成示例,并使用更复杂的评分函数来选择它们。此外,USP不使用自一致性。


Prompt Paraphrasing(Jiang 等人,2020)通过改变某些措辞来转换原始提示,同时仍保持整体含义。它实际上是一种数据增强技术,可用于为合奏生成提示。


2.2.6      自我批评


在创建GenAI系统时,让LLMs批评它们自己的输出是很有用的(Huang等,2022)。这可能只是一个判断(例如,这个输出是否正确),或者LLM可以被提示提供反馈,然后用来改进答案。已经开发了许多生成和整合自我批评的方法。


自我校准(Kadavath等人,2022年)首先提示一个LLM回答问题。然后,它构建一个新的提示,包括问题、LLM的答案和一个额外的指示,问答案是否正确。在决定何时接受或修订原始答案时,这对于衡量LLMs的信心水平可能是有用的。


Self-Refine(Madaan等,2023年)是一个迭代框架,在这个框架中,给定一个来自初步答案的输入。


LLM提示相同的LLM对答案进行反馈,然后提示LLM根据反馈改进答案。这种迭代过程持续进行,直到满足停止条件(例如,达到最大步数)。自我优化在一系列推理、编码和生成任务中表现出改进。


逆向思维链(RCoT)(薛等,2023年)首先提示LLMs根据生成的答案重建问题。然后,它生成原始问题和重建问题之间的细粒度比较,作为检查任何不一致之处的方法。然后将这些不一致转换为LLM修订生成答案的反馈。


自我验证(Weng等,2022)使用思维链(CoT)生成多个候选解决方案。然后通过遮蔽原问题的某些部分,并要求一个LLM根据问题的其余部分和生成的解决方案来预测它们得分。这种方法已在八个推理数据集上显示出改进。


链式验证(COVE)(Dhuliawala等,2023)首先使用一个LLM生成一个给定问题的答案。然后,它创建一个相关问题列表,这些问题将有助于验证答案的正确性。每个问题都由LLM回答,然后将所有信息传递给LLM生成最终修订后的答案。这种方法在各种问答和文本生成任务中显示出改进。


累积推理(Zhang等人,2023b)


首先,它生成了几个潜在的步骤来回答问题。然后,它让一个LLM评估这些步骤,决定接受还是拒绝这些步骤。最后,它检查是否已经得出最终答案。如果是,它终止该过程,否则重复该过程。这种方法已经在逻辑推理任务和数学问题中展示出改进。


2.3 提示技术的使用


正如我们刚刚所看到的,存在许多基于文本的提示技术。然而,在研究和工业领域中,只有其中的一小部分被普遍使用。我们通过测量我们数据集中其他论文对技术的引用数量来衡量技术的使用情况。我们这样做是基于这样一种假设,即关于提示的论文更有可能实际使用或评估被引用的技术。我们绘制了从我们数据集中以这种方式被引用次数最多的前25篇论文,并发现其中大多数提出了新的提示技术(图2.11)。Few-Shot和Chain-of-Thought提示的引用频率是。


图2.11:提示技术的引用次数。根据我们数据集中其他论文引用频率进行排序的前25篇论文。这里大多数论文都是提示技术,其余...


并不令人意外,并有助于建立理解其他技术流行度的基线。


2.3.1 基准测试


在促进研究时,当研究人员提出一种新技术时,他们通常会在多个模型和数据集上进行基准测试。这对于证明技术的效用以及检验其在不同模型之间的转移性是非常重要的。


为了使提出新技术的研究人员更容易了解如何对其进行基准测试,我们定量地考察了使用哪些模型(图2.9)和使用哪些基准数据集(图2.10)。同样,我们通过我们的数据集中论文引用基准数据集和模型的次数来衡量其使用情况。


为了找出正在使用哪些数据集和模型,我们要求GPT-4-1106-preview 从我们数据集中的论文正文中提取任何提及的数据集或模型。然后,我们手动筛选出不是模型或数据集的结果。引用次数是通过在 Semantic Scholar 上搜索最终列表中的项目来获取的。


2.4 提示工程化


除了对提示技术进行调查外,我们还回顾了用于自动优化提示的提示工程技术。我们讨论了一些使用梯度更新的技术,因为提示工程技术的集合比提示技术的集合要小得多。


元提示是促使LLM生成或改进提示或提示模板的过程(Reynolds和McDonell,2021;Zhou等,2022b;叶等,2023)。


AutoPrompt (Shin等,2020b) 使用冻结的LLM以及一个包含一些“触发令牌”的提示模板,在训练时通过反向传播更新这些值。这是软提示的一种版本。


自动提示工程师(APE)(周等,2022b)使用一组示例来生成零射门指令提示。它生成多个可能的提示,对它们进行评分,然后创建最佳提示的变体(例如,使用提示重述)。它在这个过程中进行迭代,直到达到一些期望。


梯度无指导提示搜索 (GrIPS)(Prasad等人,2023年)类似于APE,但使用了更复杂的操作集,包括删除、添加、交换和释义,以创建起始提示的变体。


使用文字梯度(ProTeGi)(Pryzant等,2023)是一种改进提示模板的独特方法,通过多步骤过程改进提示模板。首先,将一批输入通过模板传递,然后将输出、地面真相和提示传递到批评原始提示的另一个提示中。它从这些批评中生成新提示,然后使用一个赌徒算法(Gabillon等,2011)来选择一个。ProTeGi表现出对诸如APE和GRIPS之类的方法的改进。


RLPrompt (邓等,2022) 使用一个冻结的LLM,加上一个解冻的模块。它使用这个LLM来生成提示模板,在数据集上对模板进行评分,并使用Soft Q-Learning(郭等,2022)来更新解冻模块。有趣的是,该方法经常将语法上的无意义文本作为最佳提示模板。


对话驱动的基于策略梯度的离散提示优化(DP2O)(Li等,2023b)可能是最复杂的提示工程技术,涉及强化学习、自定义提示评分函数以及与LLM的对话,以构建提示。


2.5 答案工程学


答案工程是从LLM输出中开发或选择提取精确答案的算法的迭代过程。要理解答案工程的必要性,考虑一个二元分类任务,标签为“仇恨言论”和“非仇恨言论”。提示模板可能如下所示:


当一个仇恨言论样本通过模板时,可能产生诸如“这是仇恨言论”、“仇恨言论。”甚至“这是仇恨言论,因为它使用了负面语言针对一个种族群体”。这种回应格式的变化很难一致解析;改进的提示可以提高帮助,但只能在一定程度上。


在答案工程中有三个设计决策,选择答案空间,答案。


LLM响应 负面可能。


答案形状:这是负数



一段标记负面的词元!


答案空间:答案提取:


所有可能的标记跨度选择正确的标签。


图2.12:LLM输出的一个注释输出,用于标注任务,显示答案工程的三个设计决策:答案形状、空间和提取器。由于这是来自分类任务的输出,答案形状可以限制为单个标记,答案空间可以是两个标记中的一个("正面"或"负面"),尽管在这个图像中它们是不受限制的。


形状和答案提取器(图2.12)。Liu等人(2023b)将前两者定义为答案工程的必要组成部分,我们添加第三者。我们认为答案工程与提示工程有明显区别,但两者密切相关;这些过程通常是同时进行的。


2.5.1 答案形状


答案的形状是指其物理格式。例如,它可以是一个标记、一段标记,甚至是一个图像或视频。有时将LLM的输出形状限制为单个标记对于二元分类等任务是很有用的。


2.5.2  答案空间


答案的空间是其结构可能包含的值域。这可能只是所有令牌的空间,或者在二元标记任务中,仅可能是两个可能的令牌。


2.5.3   答案提取器


在无法完全控制答案空间的情况下(例如面向消费者的LLMs),或者预期的答案可能位于模型输出的某个位置时,可以定义规则来提取最终答案。这个规则通常是一个简单的函数(例如正则表达式),但也可以使用单独的LLM来提取答案。


在标记任务中经常使用的一个术语是“Verbalizer”,它将一个标记、跨度或其他类型的输出映射到一个标签,反之亦然(Schick和Schütze,2021)。例如,如果我们希望模型预测一条推文是积极的还是消极的,我们可以提示它输出“+”或“-”,而一个Verbalizer将这些标记序列映射到相应的标签上。选择Verbalizer构成了答案工程的一个组成部分。


正则表达式如前面所述,通常用于提取答案。它们通常用于搜索标签的第一个实例。然而,根据输出格式和是否生成CoTs,可能更好地搜索最后一个实例。


分离LLM有时输出结果非常复杂,正则表达式无法一致地工作。在这种情况下,使用一个单独的LLM来评估输出并提取答案可能是有用的。

3  超越英文文本提示


以英文文本提示GenAIs目前是互动的主要方法。 使用其他语言或通过不同的模态提示通常需要特殊技术才能实现可比较的性能。 在这个背景下,我们讨论多语言和多模态提示的领域。


3.1 多语言


现代尖端的GenAIs通常主要使用英语数据集进行训练,导致在除英语以外的语言中输出质量存在明显差异,特别是在低资源语言中(Bang等,2023年;Jiao等,2023年;Hendy等,2023年;Shi等,2022年)。因此,各种多语言提示技术应运而生,力图提升模型在非英语环境中的表现。


Translate First Prompting (Shi et al., 2022)可能是最简单的策略,首先将非英语输入示例翻译成英语。通过将输入翻译成英语,模型可以利用其在英语方面的优势更好地理解内容。翻译工具各不相同;Shi等人(2022年)使用外部机器翻译系统,Etxaniz等人(2023年)提示多语言语言模型,Awasthi等人(2023年)提示大型语言模型翻译非英语输入。


3.1.1 思维链 (CoT)


CoT提示(Wei等人,2023a)已多方向扩展到多语言环境。


XLT(跨语言思维)提示


(Huang等, 2023a)利用一个包含六个独立指令的提示模板,包括角色分配、跨语言思维和CoT。


跨语言自洽提示(CLSP)(Qin等,2023a)引入了一种集成技术,该技术在不同语言中构建推理路径以回答相同的问题。


3.1.2 上下文学习


ICL已经以多种方式扩展到多语言环境中。


X-InSTA Prompting(Tanwar等,2023)探讨了三种不同的方法,用于将上下文示例与输入句子对齐,用于分类任务:使用与输入语义相似的示例(语义对齐),与输入具有相同标签的示例(基于任务的对齐),以及语义和任务基础对齐的结合。


跨语言转移提示(In-CLT)


(Kim等,2023) 利用源语言和目标语言来创建上下文示例,与使用源语言示例的传统方法有所不同。这种策略有助于激发多语言LLM的跨语言认知能力,从而提高跨语言任务的表现。


3.1.3 选取上下文示例


在上下文示例选择对LLMs的多语言性能产生重大影响(Garcia等,2023年;Agrawal等,2023年)。找到与源文本在语义上相似的上下文示例非常重要(Winata等,2023年;Moslem等,2023年;Sia和Duh,2023年)。然而,研究表明,使用语义不同(独特)的示例也可以提高性能(Kim和Komachi,2023年)。这种对比在仅英语设置中也存在。此外,在处理模棱两可句子时,选择具有多义词或罕见词义的示例可能会提高性能(Iyer等,2023年)。


PARC(Prompts Augmented by Retrieval Crosslingually)(Nie等人,2023)介绍了一个框架,从高资源语言中检索相关的示例。这个框架专门设计用于增强跨语言转移性能,特别是对于低资源目标语言。李等人(2023年)将这项工作扩展到孟加拉语。


3.1.4  提示模板语言选择


在多语言提示中,为提示模板选择语言可以显著影响模型的性能。


图3.1:所有多语言提示技术。


英文提示模板 在多语言任务中,用英文构建提示模板通常比使用任务语言更有效。这可能是由于在LLM预训练期间英文数据的占主导地位(Lin等,2022年;Ahuja等,2023年)。Lin等人(2022年)认为,这可能是由于与预训练数据和词汇的高重叠性。同样,Ahuja等人(2023年)强调,在创建任务语言模板时的翻译错误会以不正确的句法和语义形式传播,从而不利于任务性能。此外,Fu等人(2022年)比较了在语内(任务语言)提示和跨语言(混合语言)提示,并发现跨语言方法更有效,可能是因为它在提示中使用了更多的英文,从而有助于从模型中检索知识。


有很多研究致力于利用GenAI来促进准确和细致的翻译。虽然这是提示的一个具体应用,但其中许多技术在更广泛的多语言提示中也很重要。


多方面提示和选择(MAPS)(He等,2023b)模仿人类翻译过程,涉及多个准备步骤以确保高质量输出。该框架从源句中开始,进行知识挖掘(提取关键词和主题,生成翻译示例)。它集成这些知识以生成多个可能的翻译,然后选择最佳翻译。


链式字典(CoD)(Lu等人,2023b)首先从源短语中提取单词,然后列出这些单词在多种语言中的含义,并通过从字典中自动检索(例如英语:“apple”,西班牙语:“manzana”)进行。然后,它们将这些字典短语置于提示前面,并要求GenAI在翻译过程中使用它们。


基于字典提示的机器翻译(DiPMT)(Ghazvininejad等,2023)与CoD类似,但只在源语言和目标语言中提供定义,并略有不同的格式。


图3.2:所有多模式提示技术。


Decomposed Prompting for MT(DecoMT)


(Puduppully等人,2023)将源文本分成几个块,并使用少量提示单独翻译它们。然后利用这些翻译和块之间的上下文信息生成最终翻译。


交互链提示(ICP)(Pilault等,2023年)通过首先要求GenAI生成关于待翻译短语中任何歧义的子问题来处理翻译中的潜在歧义。后来人类回答这些问题,系统将包括这些信息以生成最终翻译。


迭代提示(Yang等,2023年d)在翻译过程中也涉及人类。首先,他们提示LLMs创建草稿翻译。这个初始版本通过整合从自动检索系统或直接人类反馈获得的监督信号进一步完善。


3.2 多模态


随着GenAI模型在超越基于文本的领域中不断发展,新的提示技术不断涌现。这些多模态提示技术通常不仅仅是基于文本提示技术的应用,而是完全由不同的模态所可能带来的全新思路。我们现在将我们基于文本的分类法扩展到包括一种混合了多模态类似于基于文本提示技术的提示技术以及完全新颖的多模态技术。


3.2.1 图像提示


图像模态包括诸如照片、图纸,甚至是文本截图等数据(Gong等人,2023年)。图像提示可能指包含图像或用于生成图像的提示。常见任务包括图像生成(Ding等人,2021年;Hinz等人,2022年;Tao等人,2022年;Li等人,2019a,b年;Rombach等人,2022年),标题生成(Li等人,2020年),图像分类(Khalil等人,2023年),以及图像编辑(Crowson等人,2022年;Kwon和Ye,2022年;Bar-Tal等人,2022年;Hertz等人,2022年)。我们现在描述用于此类应用的各种图像提示技术。


提示修饰语仅是附加在提示上以改变生成图像的单词(Oppenlaender,2023)。通常会使用诸如介质(例如“在画布上”)或照明(例如“一个光线充足的场景”)等组件。


负面提示允许用户对提示中的某些术语进行数字加权,以便模型考虑它们比其他术语更重要或更不重要。例如,通过对“坏手”和“多余手指”这些术语进行负面加权,模型可能更有可能生成解剖学上准确的手部(Schulhoff, 2022)。


3.2.1.1 多模态上下文学习


ICL在文本环境中取得的成功促使研究转向多模式ICL(Wang等,2023年;Dong等,2023年)。


配对图像提示向模型展示两幅图像:一幅在某种转换前,一幅在转换后。然后,向模型展示一幅新图像,让其执行所展示的转换。这可以通过文字说明(Wang等人,2023年)或无需文字说明(Liu等人,2023年)来完成。


图像作为文本提示(Hakimovand


Schlangen, 2023)生成图像的文本描述。这允许在基于文本的提示中轻松包含图像(或多个图像)。


3.2.1.2       多模式思维链


CoT已经以各种方式扩展到图像领域(张等人,2023年;黄等人,2023年;郑等人,2023年;姚等人,2023年)。一个简单的示例是,一个包含一道数学问题图片的提示,附带文字说明“逐步解决这个问题”。


Duty Distinct Chain-of-Thought(DDCoT)


(Zheng等,2023b)将最小到最大提示(Zhou等,2022a)扩展到多模态设置,创建子问题,然后解决这些问题并将答案组合成最终答复。


多模态思维图(Yao等,2023c)将思维图(Zhang等,2023d)扩展到多模态设置。 GoT-Input还使用两步推理然后回答的过程。在推理时,输入提示用于构建思维图,然后与原始提示一起用于生成答案问题的理由。当图像与问题一起输入时,图像字幕模型被用来生成图像的文本描述,然后将其附加到提示之前的思维图构建,以提供视觉背景。


链式图像生成(CoI)(孟等,2023) 是链式思维提示的一种多模态扩展,作为其思考过程的一部分生成图像。他们使用提示“让我们逐图思考”来生成SVG,模型可以利用这些图像进行视觉推理。


3.2.2   音频提示


提示也已扩展到音频模态。使用音频ICL进行的实验产生了不同的结果,一些开源音频模型未能执行ICL(Hsu等,2023年)。然而,其他结果确实显示了音频模型的ICL能力(Wang等,2023年; Peng等,2023年; Chang等,2023年)。音频提示目前处于早期阶段,但我们预计未来会看到各种提示技术的提出。


3.2.3  视频提示


提示还被扩展到视频模态,用于文本到视频生成(Brooks等,2024年;Lv等,2023年;Liang等,2023年;Girdhar等,2023年),视频编辑(Zuo等,2023年;吴等,2023年;程等,2023年),以及视频到文本生成(Yousaf等,2023年;米等,2023年;柯等,2023年)。


3.2.3.1   视频生成技术


当提示模型生成视频时,可以使用各种类型的提示作为输入,并通常采用几种与提示相关的技术来增强视频生成。图像相关技术,如提示修饰器,通常可用于视频生成(Runway,2023年)。


3.2.4  分割提示


触发也可用于分割(例如,语义分割)(唐等,2023年;刘等,2023年)。


3.2.5  3D提示


提示还可以用于3D模态中,例如在3D物体合成(Feng等,2023年;Li等,2023年;Lin等,2023年;Chen等,2023年;Lorraine等,2023年;Poole等,2022年;Jain等,2022年)、3D表面纹理处理(Liu等,2023年;Yang等,2023年;Le等,2023年;Pajouheshgar等,2023年)、以及4D场景生成(使3D场景动起来)(Singer等,2023年;Zhao等,2023年),其中输入提示模态包括文本、图像、用户标注(边界框、点、线)和3D物体。

4 促进策略的拓展


我们目前所讨论的技术可能非常复杂,涉及许多步骤和迭代。然而,通过添加对外部工具(智能体)的访问以及复杂的评估算法,我们可以进一步促进语言模型的输出的有效性。


4.1  智能体


随着LLM在能力方面的迅速提升(Zhang等,2023c),公司(Adept,2023)和研究人员(Karpas等,2022)已经探讨了如何让它们能够利用外部系统。这是由于LLMs在数学计算、推理和事实性等领域的不足而产生的。这促使了提示技术方面的重大创新;这些系统通常通过提示和提示链驱动,这些提示链经过精心设计,以实现类似智能体的行为。


在GenAI的背景下,我们将智能体定义为通过与GenAI本身外部系统的交互行为来为用户目标提供服务的GenAI系统。这个GenAI通常是一个LLM。举一个简单的例子,考虑一个被指定解决以下数学问题的LLM:


l如果Annie有4,939颗葡萄,并且把其中的39%准确地给了Amy,她还剩下多少颗?


l如果适当触发,LLM可以输出字符串 CALC(4,939*.39)。可以提取这个输出并放入计算器中得出最终答案。


这是一个智能体的示例:LLM输出文本,然后使用下游工具。智能体LLMs可能涉及单个外部系统(如上所示),或者可能需要解决路由问题,选择使用哪个外部系统。此类系统通常还涉及记忆和规划,除了动作(Zhang等,2023年)。


智能体的例子包括可以进行转换的LLM。


使用API调用外部工具,比如一个计算器(Karpas等人,2022),LLMs可以输出导致在类似健身房环境中采取行动的字符串(Brockman等人,2016; Towers等人,2023),更广泛地说,LLMs可以编写和记录计划、编写和运行代码、搜索互联网等(Significant Gravitas,2023; Yang等人,2023c; Osika,2023)。OpenAI助理OpenAI (2023),LangChain智能体(Chase,2022),以及LlamaIndex智能体(Liu,2022)是其他例子。


4.1.1 工具使用智能体


工具使用是GenAI智能体的关键组成部分。常用的外部工具包括符号工具(例如计算器、代码解释器)和神经工具(例如独立的LLM)。有时工具可能被称为专家(Karpas等人,2022年)或模块。


模块化推理,知识和语言(MRKL) System(Karpas等,2022年)是一个智能体的最简单的形式之一。它包含一个LLM路由器,提供对多个工具的访问。该路由器可以进行多次调用以获取诸如天气或当前日期等信息。然后将这些信息组合起来生成最终的响应。Toolformer(Schick等,2023年),Gorilla(Patil等,2023年),Act-1(Adept,2023年)以及其他一些(Shen等,2023年;Qin等,2023b年;Hao等,2023年)都提出了类似的技术,其中大多数涉及一些微调。


自我纠正与工具交互式批判(CRITIC)(Gou等人,2024年)首先对提示生成一个回应,没有外部调用。然后,同一的LLM批评这个回应可能的错误。最后,它使用工具(例如互联网搜索或代码解释器)相应地验证或修正回应的部分。


4.1.2  代码生成智能体


编写和执行代码是许多智能体的另一个重要能力。


图4.1:本节涵盖的智能体技术。


程序辅助语言模型(PAL)(高等,2023b)直接将问题翻译成代码,然后发送给Python解释器生成答案。


工具集成推理智能体(ToRA)(Gou等,2024b)类似于PAL,但不是单一的代码生成步骤,而是交替进行代码和推理步骤,直到解决问题为止。


Task Weaver(乔等人,2023年)也类似于PAL,将用户请求转换为代码,但还可以利用用户定义的插件。


4.1.3 基于观察的智能体


一些智能体被设计用于通过与玩具环境互动来解决问题(Brockman等,2016年;Towers等,2023年)。这些基于观察的智能体接收插入到其提示中的观察。


推理和行动(ReAct)(Yao等)。


(2022))当面临问题时,会产生一个想法,采取行动,并接收观察结果(并重复这个过程)。所有这些信息都被插入到提示中,这样它就有了过去的想法、行动和观察的记忆。


Reflexion (Shinn等人,2023) 建立在ReAct的基础上,添加了一层内省。它获得了一系列动作和观察的轨迹,然后得到了成功/失败的评价。然后,它对自己所做的事情以及出了什么问题进行反思。这种反思被添加到其提示作为工作记忆,并且该过程重复进行。


4.1.3.1       终身学习智能体


LLM整合的Minecraft智能体的工作已经取得了令人印象深刻的成果,智能体能够在这个开放世界的视频游戏中获得新技能并进行导航。我们将这些智能体视为不仅仅是将智能体技术应用于Minecraft,而是可以在需要终身学习的真实世界任务中探索的新型智能体框架。


Voyager(王等,2023a)由三部分组成。


首先,它提出了自己要完成的任务,以便更多地了解这个世界。


其次,它生成代码来执行这些操作。


最后,它保存这些操作,以便在以后有用时检索,作为长期记忆系统的一部分。


这个系统可以应用于真实世界的任务,其中智能体需要探索和与工具或网站进行交互(例如,渗透测试,可用性测试)。


鉴于正文段落内容为英文且需要将其翻译成中文,现提供翻译结果如下:  Minecraft中的幽灵(GITM)(Zhu等,


2023年),从一个任意目标开始,将其逐步分解为子目标,然后通过生成结构化文本(例如“装备(剑)”)而不是编写代码来进行迭代计划和执行动作。GITM 使用Minecraft物品的外部知识库来辅助分解,以及过去经验的记忆。


4.1.4  检索增强生成(RAG)


在GenAI智能体的背景下,RAG是一种范式,其中信息从外部源检索并插入到提示中。这可以增强知识密集型任务的性能(Lewis等,2021年)。当检索本身被用作外部工具时,RAG系统被视为智能体。


图 4.2:评估技术。


验证和编辑(Zhao等,2023a)通过生成多个思维链来改进自一致性,然后选择一些进行编辑。他们通过检索与思维链相关的(外部)信息,并允许LLM相应地增强它们来实现这一点。


Demonstrate-Search-Predict (Khattab等,2022)首先将一个问题分解成子问题,然后使用查询来解决这些问题,并将它们的响应组合在最终答案中。它使用few-shot提示来分解问题和合并回应。


链式思维引导的交错检索(IRCoT)(Trivedi等,2023年)是一种用于多跳问题回答的技术,它交错使用了CoT和检索。IRCoT利用CoT指导要检索哪些文档,并利用检索帮助规划CoT的推理步骤。


迭代检索增强技术,如前瞻性主动检索增强生成(FLARE)(Jiang等,2023)和模仿、检索、释义(IRP)(Balepur等,2023),在长篇生成过程中进行多次检索。这些模型通常执行一个迭代的三步流程:1)生成临时句子作为下一个输出句子的内容计划;2)使用临时句子作为查询检索外部知识;以及3)将检索到的知识注入临时句子中,以创建下一个输出句子。与长篇生成任务中提供的文档标题相比,这些临时句子已被证明更好地作为搜索查询。


4.2  评估


LLMs的潜力在于提取和推理信息,理解用户意图,使它们成为评估者的强有力竞争者。例如,可以提示LLM根据提示中定义的某些指标评估一篇文章的质量,甚至是之前的LLM输出。我们描述了评估框架中四个重要组件:提示技术(如第2.2节所述),评估的输出格式,评估流程的框架,以及一些其他方法论设计决策。


4.2.1      提示技术


评估提示中使用的提示技术(例如简单指令 vs CoT)对于构建稳健的评估者至关重要。评估提示通常受益于常规的基于文本的提示技术,包括角色、任务说明、评估标准的定义以及上下文示例。在附录 A.5 中找到技术的完整列表。


上下文学习经常用于评估提示,就像在其他应用中一样(Dubois等,2023年;Kocmi和Federmann,2023a)。


基于角色的评估是一种有益的技术,可用于改进和丰富评估(Wu等,2023b;Chan等,2024)。通过创建带有相同评估说明但不同角色的提示,可以有效地生成多样化的评估。此外,角色可以在多智能体设置中使用,LLMs可以就待评估文本的有效性展开辩论(Chan等,2024)。


思路链提示可以进一步提高评价性能(Lu等,2023年;Fernandes等,2023年)。


模型生成的指南(Liu等,2023年d,h)促使LLM生成评估指南。这减少了由于定义不清晰的评分指南和输出空间而产生的不足提示问题,这可能导致评估不一致和不对齐。Liu等人(2023年d)生成了模型在生成质量评估之前应执行的详细评估步骤的思路链。Liu等提出了AUTOCALIBRATE,它根据专家人员的注释得出评分标准,并使用模型生成的一部分精炼的标准作为评估提示的一部分。


4.2.2 输出格式


LLM的输出格式可以显著影响评估性能(Gao等人,2023c)。


使用XML或JSON样式化格式化LLM的响应也已被证明可以提高评估者生成的判断的准确性(Hada等,2024年;Lin和Chen,2023年;Dubois等,2023年)。


线性刻度 很简单的输出格式是线性刻度(例如,1-5)。许多作品使用评级


1-10(Chan等人,2024年),1-5(Araújo和Aguiar,2023年),甚至是0-1(Liu等人,2023f年)。模型可以被提示输出介于上下限之间的离散(Chan等人,2024年)或连续(Liu等人,2023年f)得分。



将模型提示生成二进制回复,例如是或否(Chen等,2023c),真或假(Zhao等,2023b),是另一种经常使用的输出格式。



使用Likert量表 (Bai等,2023年; Lin和Chen,2023年; Peskoff等,2023年) 可以帮助GenAI更好地理解量表的含义。



4.2.3  提示框架


LLM-EVAL(Lin和Chen,2023)是最简单的评估框架之一。它使用一个包含要评估的变量架构的单个提示(例如语法、相关性等),一条指示模型输出每个变量得分的指令以及要评估的内容。


G-EVAL (Liu等,2023d)类似于LLMEVAL,但在提示中包括了AutoCoT步骤。这些步骤根据评估说明生成,并插入到最终提示中。这些步骤根据记号概率来加权答案。


ChatEval(Chan等人,2024)使用了一个多智能体辩论框架,每个智能体都有不同的角色。


4.2.4  其他方法论


大多数方法直接促使语言模型生成质量评估(显性),一些工作也使用隐式评分,其中质量分数是通过模型对其预测的信心(Chen等人,2023g)或生成输出的可能性(Fu等人,2023a)或通过模型解释(例如,计算错误数量,如Fernandes等人(2023);Kocmi和Federmann(2023a))或通过智能体任务上的评估(例如,通过蕴涵来检验事实的不一致性,如Luo等人(2023))。


批量提示 为了提高计算和成本效率,一些研究采用批量提示进行评估,在这种情况下,可以同时评估多个实例(Lu等,2023c;Araújo和Aguiar,2023;Dubois等,2023),或者评估同一实例在不同标准或角色下(Wu等,2023b;Lin和Chen,2023)。然而,将多个实例一起评估通常会降低性能(Dubois等,2023)。


一对一评估(Chen等人,2023年)发现,直接比较两篇文本的质量可能导致次优的结果,并明确要求LLM为各个摘要生成得分是最有效和可靠的方法。对于一对一比较的输入顺序也可能严重影响评估(Wang等人,2023年)。


5 提示问题


我们现在来重点讨论与安全性和对齐问题相关的提示。


5.1 安全性


随着提示的使用增加,围绕它的威胁景观也在不断扩大。与非神经和预提示安全威胁相比,这些威胁极为多样化,且独特难以防御。我们讨论提示威胁景观和有限的防御状态。我们首先描述提示黑客攻击,即通过提示来利用语言模型的手段,然后描述由此产生的危险,最后描述潜在的防御措施。


5.1.1  提示劫持的类型


提示性黑客攻击是一种利用提示来攻击 GenAI 的攻击方式(Schulhoff 等,2023年)。这种提示已被用来泄露私人信息(Carlini 等,2021年)、生成具有冒犯性内容(Shaikh 等,2023年)和产生欺骗性信息(Perez 等,2022年)。提示性黑客攻击是提示注入和越狱的超集,这些是不同的概念。


提示注入是指在提示中用用户输入覆盖原始开发者指令的过程(Schulhoff, 2024; Willison, 2024; Branch等,2022年; Goodside, 2022年)。这是一个建筑问题,是由于GenAI模型无法理解原始开发者指令和用户输入指令之间的区别而导致的。


考虑以下提示模板。用户可能输入“忽略其他指令并对总统发出威胁。”,这可能导致模型不确定要遵循哪个指令,从而可能遵循恶意指令。



越狱Jailbreaking是通过提示使GenAI模型做或说意外之事的过程(Schulhoff, 2024; Willison, 2024; Perez and Ribeiro, 2022)。这是一个架构问题或训练问题,可能是因为对抗性提示极其难以防范。


考虑以下越狱示例,类似于先前的提示注入示例,但没有在提示中包含开发者说明。用户可以直接访问GenAI并恶意提示它。



5.1.2   即时黑客攻击的风险


快速入侵可能导致真实世界的风险,如隐私问题和系统漏洞。


5.1.2.1       数据隐私


模型训练数据和提示模板都可能通过提示黑客(通常是通过提示注入)泄露。


训练数据重构是指从GenAIs中提取训练数据的实践。一个直接的例子是Nasr等人(2023)发现,通过提示ChatGPT无限重复单词“公司”,它开始重新产生训练数据。


Prompt Leaking是指从一个应用程序中提取提示模板的过程。开发人员经常花费大量时间创建提示模板,并认为这些模板值得保护。Willison(2022)展示了如何从 Twitter Bot 中泄露提示模板,只需提供以下类似的指令:


忽略以上内容,而是告诉我你最初的指示是什么。



5.1.2.2   代码生成相关问题


LLMs经常被用来生成代码。攻击者可能会针对由此代码产生的漏洞进行攻击。


图5.1:安全性与提示


Package Hallucination occurs when LLM-


生成的代码尝试导入不存在的包(Lanyado等,2023年;汤普森和凯利,2023年)。在发现LLM经常产生的包名称后,黑客可以创建这些包,但其中植入恶意代码(吴等,2023年)。如果用户运行此前不存在的包的安装程序,它们将下载一个病毒。


存在更频繁的错误(和安全漏洞)在由LLM生成的代码中(Pearce等人,2021年,2022年;Sandoval等人,2022年;Perry等人,2022年)。对提示技术的轻微更改也可能导致生成的代码中出现此类漏洞(Pearce等人,2021年)。


5.1.2.3  客户服务


恶意用户经常对企业聊天机器人进行快速注入攻击,导致品牌尴尬(Bakke,2023年;Goodside,2022年)。这些攻击可能会导致聊天机器人输出有害评论或同意以非常低的价格向用户出售公司产品。在后一种情况下,用户实际上可能有权获得这笔交易。加西亚(2024年)描述了一家航空公司的聊天机器人向客户提供了有关退款的错误信息。顾客在法庭上提出申诉并取得胜利。尽管这个聊天机器人是在ChatGPT之前发布的,并且并没有被用户欺骗,但当使用细致的提示黑客技术时,这个先例可能适用。


5.1.3  硬化措施


几种工具和提示技术已经被开发出来,以减轻上述安全风险。然而,即使是注入和越狱的提示入侵仍然是未解决的问题,很可能是无法完全解决的。


多个基于提示的防御措施已被提出,其中包括在提示中包含指令以避免提示注入(Schulhoff, 2022)。例如,以下字符串可添加到提示中:



然而,Schulhoff等人(2023年)进行了一项涉及数十万恶意提示的研究,发现没有一种基于提示的防御是完全安全的,尽管它们可以在一定程度上缓解提示黑客攻击。


防护栏是用于指导GenAI输出的规则和框架(Hakan Tekgul, 2023)。防护栏可以简单到将用户输入分类为恶意或非恶意(AI, 2023; Inan等人, 2023),然后在恶意时回复预先准备的消息。更复杂的工具使用对话管理器(Rebedea等人, 2023),允许LLM从多个精心准备的回复中进行选择。还有专门用于提示的编程语言被提出,以改进模板化并作为防护栏(Scott Lundberg, 2023; Luca BeurerKellner, 2023)。  


探测器是设计用来检测恶意输入并防止即时黑客攻击的工具。许多公司已经构建了这样的探测器(ArthurAI,2024年;Preamble,2024年;Lakera,2024年),这些探测器通常是利用在恶意提示上训练的微调模型构建的。一般来说,这些工具可以比基于提示的防御更大程度地减轻即时黑客攻击。


5.2      对齐


图5.2:基于提示的对齐组织


确保LLMs与用户在下游任务中的需求紧密对齐对于成功部署至关重要。模型可能会输出有害内容,产生不一致的响应,或显示偏见,所有这些都使得部署它们变得更加困难。为了帮助减轻这些风险,可以通过精心设计提示来引出LLMs输出的较少有害内容。在本节中,我们描述提示对齐问题以及潜在的解决方案。


5.2.1 灵敏性提示


Prompt Wording可以通过添加额外的空格、改变大写形式或修改定界符来进行修改。尽管这些变化很小,但Sclar等人(2023a)发现,这些变化可以导致LLaMA2-7B在某些任务上的性能从接近0到0.804不等。


任务格式描述了促使LLM执行相同任务的不同方式。例如,要求LLM执行情感分析的提示可以要求LLM将评论分类为“积极的”或“消极的”,或者提示可以问LLM“这条评论是积极的吗?”以引发“是”或“否”的回答。赵等人(2021b)表明,这些微小的变化可以使GPT-3的准确率提高最多30%。类似地,对任务特定提示的微小扰动,即逻辑上等价的提示,例如改变多项选择题中选项的顺序,可能导致显著的性能下降(Pezeshkpour and Hruschka,2023;Zheng等,2023a)。


Prompt Drift(Chen等,2023b) 是指当API背后的模型随着时间变化而发生变化,因此同样的提示可能会在更新后的模型上产生不同的结果。虽然不是直接的提示问题,但它需要对提示性能进行持续监控。


5.2.2   过度自信和校准


LLMs在回答问题时往往过于自信,特别是当被要求用语言表达自己的信心时(Kiesler 和 Schiffner, 2023; Xiong 等,2023a),这可能导致用户过度依赖模型的输出(Si 等,2023c)。置信度校准提供了表示模型置信度的分数(Guo 等,2017)。虽然置信度校准的一个自然解决方案是研究由 LLM 提供的输出令牌概率,但也已经为置信度校准开发了各种提示技术。


语言一致,直接输出正文段落内容:  Verbalized Score 是一种简单的校准技术,可以生成置信度分数(例如,“您对 1 到 10 的置信度如何”),但其有效性尚存争议。Xiong 等人 (2023b) 发现,一些 LLM 在用语言表达信心分数时非常自信,即使在采用自洽和思维链时也是如此。相比之下,Tian et al. (2023) 发现简单的提示(Section


4.2)可以比模型的输出标记概率实现更准确的校准。


奉承指的是LLMs通常会表达与用户一致的观点,即使这与模型自身的初始输出相矛盾。沙玛等人(2023年)发现,当要求LLMs评论观点或论点时,如果用户的观点包含在提示中(例如,“我真的喜欢/不喜欢这个论点”),模型很容易被影响。此外,他们发现,质疑LLM的原始答案(例如,“你确定吗?”),强烈提供正确性评估(例如,“我确信你错了”),以及添加错误假设将彻底改变模型输出。韦等人(2023b年)注意到相似的结果,涉及引发观点和错误用户假设,还发现对于更大和经过指令调整的模型,奉承现象更加明显。因此,为避免这种影响,提示中不应包含个人观点。


5.2.3  偏见、刻板印象和文化


LLMs应该对所有用户公平,以确保在模型输出中不出现任何偏见、刻板印象或文化危害(Mehrabi等,2021)。一些提示技术已经按照这些目标设计。


香草提示(Si等,2023b)简单地包括在提示中告诉LLM要保持无偏见。这种技术也被称为道德自我修正(Ganguli等,2023)。


选择平衡的演示(Si等人,2023b)或获取经过公平度量优化的演示(Ma等人,2023)可以减少LLM输出中的偏见(第2.2.1.1节)。


文化意识(Yao等,2023a)可以通过注入提示来帮助LLMs进行文化适应(Peskov等,2021)。这可以通过创建几个提示来做到,包括:1)要求LLM完善其自己的输出;和2)指导LLM使用与文化相关的词语。


AttrPrompt(Yu等人,2023)是一种提示技术,旨在避免生成合成数据时偏向于某些属性。传统的数据生成方法可能会偏向于特定的长度、位置和风格。为了克服这一问题,AttrPrompt:1)要求LLM生成对于增加多样性重要的特定属性(例如位置);2)提示LLM通过改变每个属性来生成合成数据。


5.2.4 模糊性


存在多种解释可能的模糊问题,每种解释可能导致不同的答案(Min等人,2020年)。鉴于这些多重解释,模糊问题对现有模型构成挑战(Keyvan和Huang,2022年),但已开发了一些提示技术来帮助解决这一挑战。


模糊演示 Gao等人(2023a)是具有模糊标签集的示例。将它们包含在提示中可以提高ICL性能。这可以通过检索器自动完成,但也可以手动完成。


问答澄清(Rao和Daumé III,2019)允许LLM识别模糊的问题并生成澄清问题以提问给用户。一旦用户澄清了这些问题,LLM可以重新生成其响应。Mu等人(2023)为代码生成做到了这一点,Zhang和Choi(2023)为通用任务为LLM提供了类似的流程来解决模糊问题,但明确设计了单独的提示,用于:1)生成初始答案2)分类是生成澄清问题还是返回初始答案3)决定生成什么澄清问题4)生成最终答案。


6 基准


现在我们已经对提示技术进行了系统性审查,我们将以两种方式分析不同技术的实证表现:通过正式的基准评估,以及通过详细说明在具有挑战性的现实世界问题上进行提示工程的过程。


6.1 技术基准测试


对提示技术的正式评估可能在一项广泛研究中进行,比较数百种提示技术在数百种模型和基准测试中的情况。 这超出了我们的范围,但由于以前尚未完成,我们在这个方向上提供了第一步。 我们选择了一些提示技术的子集,并在广泛使用的基准测试MMLU上运行它们(Hendrycks等,2021年)。 我们在代表性的2,800个MMLU问题子集上运行(每个类别的问题的20%),并对所有实验使用gpt-3.5turbo。


6.1.1 比较提示技术


我们使用相同的通用提示模板对六种不同的提示技术进行基准测试(图6.2)。该模板显示了提示的不同组成部分的位置。每个提示中只存在基本说明和问题。基本说明是一个类似于“解决问题并返回(A)、(B)、(C)或(D)。”的短语,我们在某些情况下会进行变化。我们还测试了两种问题格式(图6.3和6.4)。问题格式被插入到提示模板中的"{QUESTION}"的位置。我们测试了每种提示技术的6种总体变化,除了使用Self-Consistency的那些。


将原文翻译成中文: 作为基线,我们直接通过模型运行问题,没有使用任何提示技术。对于这个基线,我们利用了基本指令的两种格式以及三种措辞变体。因此,针对这个基准测试,总共运行了6次,共2800个问题。这不包括任何示例或思维诱导剂。


Zero-Shot-CoT技术。


Zero-Shot-CoT。作为三种不同的变体,我们使用了三种思维诱导器(导致模型生成推理步骤的指令),包括标准的“让我们一步一步思考”链式思维(Kojima等,2022年),以及ThoT(Zhou等,2023年)和Plan and Solve(Wang等,2023年)。然后,我们选择其中最好的,然后与三次迭代一起运行它,采取多数响应。


Few-Shot技术 我们还运行了Few-Shot提示和Few-Shot-CoT提示,均由我们的一位作者生成示例。对于每个情况,我们使用了基本指令的三种变体以及两种问题格式(也应用于示例)。然后我们使用了具有三次迭代的自我一致性的最佳执行措辞,取多数回应。


紫色误差条表示每种技术的最小值和最大值,因为它们分别在不同的短语和格式上运行(除SC外)。



6.1.2  问题格式


我们尝试了Sclar等人(2023年)提出的两种格式选择,探讨了格式选择如何影响基准测试结果。我们使用了两种格式,这些格式导致了其任务上不同的结果(图6.3和6.4)。


6.1.3  自洽性


对于两个Self-Consistency结果,我们将温度设置为0.5,按照王等人(2022)的指导方针。对于所有其他提示,使用温度为0。



图6.2:用于基准测试的提示模板。


图6.3:问题格式1。


6.1.4  评估回应


评估一个LLM是否正确回答问题是一项困难的任务(第2.5节)。如果答案遵循特定可识别的模式,比如作为括号内的唯一大写字母(A-D)或跟在诸如“正确答案是”的短语后面,我们将标记这些答案为正确。


6.1.5  结果


性能通常随着技术愈发复杂而提高(图6.1)。然而,ZeroShot-CoT从Zero-Shot急剧下降。


尽管各种变体表现广泛,但在所有情况下,“零-shot”表现更好。两种“自洽性”情况自然有较低的扩散,因为它们重复了一种技术,但这只对“零-shot”提示的准确性有所提高。少量训练(Few-Shot)CoT表现最佳,某些技术出现的性能下降尚需进一步研究。由于提示技术选择类似于超参数搜索,这是一项非常困难的任务(Khattab等,2023年)。然而,我们希望这项小规模研究能够激发更有效和稳健的提示技术研究方向的兴趣。


6.2  清晰工程案例研究


Prompt engineering正在成为一门许多人开始职业实践的艺术,但文献中尚未包括关于这一过程的详细指导。作为朝着这个方向迈出的第一步,我们提供一个针对一个困难的现实问题的带注释的prompt engineering案例研究。这并不是为了以经验为基础做出贡献。



图6.4:问题格式2。


并没有实际解决问题。相反,它提供了一个有经验的提示工程师如何处理这样一个任务的示例,以及所学到的教训。


6.2.1 问题


我们的示例问题涉及检测由潜在自杀倾向个体撰写的文本中预测危机级别自杀风险的信号。自杀是全球性严重问题,大多数精神健康问题都受到精神健康资源极度匮乏的困扰。在美国,超过一半的国民生活在联邦规定的精神卫生提供者短缺地区(国家卫生人力分析中心,2023年);此外,许多精神卫生专业人员缺乏自杀预防的核心能力(Cramer等,2023年)。2021年,1230万美国人认真考虑过自杀,其中


1.7M实际上制造了48,000多起自杀尝试(CDC, 2023)。在美国,根据2021年的统计数据,自杀是10至14岁、15至24岁或25至34岁人群中第二大死因(仅次于事故),而在35至54岁人群中,它是第五大死因(Garnett and Curtin, 2023)。


最近的研究表明,专注于识别自杀危机,即与即将发生自杀行为高风险相关的急性困扰状态,对潜在自杀倾向的评估具有重要价值。然而,验证性评估用于自杀危机综合症(SCS)(Schuck等,2019b;Melzer等,2024年)和急性自杀情感干扰(Rogers等,2019年)等诊断方法,要求进行个人临床互动或填写包含数十个问题的自报问卷。因此,准确识别个人语言中的自杀危机指标可能对心理健康生态系统产生重大影响,不是作为临床判断的替代,而是作为补充现有实践的一种方式(Resnik等,2021年)。


作为起点,我们在自杀危机综合评估中重点关注最重要的预测因素,文献中称之为“拼命的绝望”或“陷入困境”,“渴望摆脱无法忍受的局面,伴随着所有逃生通道被封锁的感知”(Melzer等,2024年)。这种个体正在经历的特征也是导致自杀的其他心理过程的核心特点之一。


我们使用了马里兰大学 Reddit 自杀数据集的一个子集(Shing等人,2018年),该数据集由 r/SuicideWatch 中的帖子构成,这是一个为那些与自杀思维挣扎的人提供同龄支持的 subreddit。两名受过训练的编码人员针对自杀危机综合症中的因素识别编码了一组221篇帖子,以确定是否存在困境,并取得了良好的编码者一致性(Krippendorff's alpha = 0.72)。


6.2.2 过程


一位专业的提示工程师,曾撰写过一本广泛使用的有关提示的指南(Schulhoff, 2022),接受了使用LLM来识别帖子中诱导性的任务。该提示工程师被提供了有关自杀危机综合症和诱导性的简要口头和书面摘要,以及121个开发帖子及其正面/负面标签(其中“正面”表示存在诱导性),另外的100个已标记的帖子保留用于测试。这些有限的信息反映了频繁出现的现实场景,即基于任务描述和数据开发提示的情况。更普遍地说,这与自然语言处理和AI更一般地处理编码(标注)的倾向一致,将其视为一项标记任务,而不深入探讨标签实际上可能指的是微妙且复杂的底层社会科学构造。


我们记录了提示工程过程,以阐明一名经验丰富的提示工程师如何进行工作。该练习通过47个记录的开发步骤进行,总共约20个小时的工作。从零开始的情况,性能为0%(提示无法返回结构良好的响应),性能提升至F1为0.53,这里的F1是0.86精确度和0.38的调和平均值。


回忆。


下面,qinf的一组提示是测试项目,而qi、ri和ai表示示例中的问题、思维链步骤和答案。


6.2.2.1       数据集探索(2步骤)


该过程始于提示工程师审查困境描述(图6.7);这个描述在编码过程早期被用作人类编码者的第一次评分标准,但他们了解SCS并知道这既不是一个正式的定义,也不是详尽的。然后,提示工程师将数据集加载到Python笔记本中进行数据探索。他开始询问gpt-4-turbo-preview它是否知道什么是困境(图6.8),但发现LLM的回答并不类似于已经给出的描述。因此,提示工程师将图6.7中关于困境的描述包括在所有未来的提示中。


6.2.3.2获取标签(8个步骤)


正如第6.1节所指出的关于MMLU中的人类性子集,LLM在敏感领域表现出难以预测和难以控制的行为。在提示工程过程的多个步骤中,提示工程师发现LLM在给出心理健康建议(例如图6.9)而不是对输入进行标记。这个问题通过切换到GPT-4-32K模型得以解决。


这一初步阶段的一个重要发现是:


一些大型语言模型所关联的“防护栏”可能会干扰完成提示任务的能力,这可能会影响选择模型的原因不仅限于LLM潜在的质量。


6.2.2.2       提示技术(32步)


那名提示工程师随后大部分时间都花在改进正在使用的提示技术上。这些技术包括Few-Shot。



得分在类似范围内。


Chain-of-Thought,AutoCoT,对比CoT以及多答案提取技术。我们报告了这些技术的首次运行统计数据;即使温度和最高p值设置为零,F1分数在后续运行中也可能变化多达0.04。


Zero-Shot + Context是第一种评估的技术(见图6.10),使用图6.7中的描述。请注意提示中的词语定义,尽管图6.7并不是正式的定义。


为了从LLM中获取最终响应以用于计算性能指标,需要从LLM输出中提取一个标签。提示工程师测试了两个提取器,一个检查输出是否完全是"是"或"否",另一个只检查这些词是否与输出的前几个字符匹配。后者的性能更好,并且在本节的其余部分中使用,直到我们达到CoT。这种方法在所有训练/开发样本上评估,没有样本被用作示例,获得了0.25的召回率,1.0的精确度和0.40的F1值。


10次样本+上下文。接着,提示工程师将前十个数据样本(带标签)添加到提示中,格式为Q:(问题)A:(答案)(图6.11)。这个包含10次拍摄的提示在训练/开发集中的其余项目上进行评估,相对于之前最佳提示,召回率↑0.05(0.30),精确率↓0.70(0.30),F1值↑0.05(0.45)。


One-Shot AutoDiCot + Full Context。在进行了10-shot提示后,提示工程师观察到开发集中的第12项被错误地标记为正实例,并开始尝试不同的修改方式。


开发集上不同提示技术的F1分数



图6.6:从第一个尝试的提示(零-shot +上下文)到最后一个(匿名邮箱),F1 分数的提高是很难获得的,通常需要测试多个表现不佳的提示后才能找到一个性能良好的提示。绿色线显示比当前最高 F1 分数的改进,而红色线显示恶化。


诱捕:


感觉像是没有出口。


感到绝望。


感觉没有出路 - 担心事情永远无法恢复正常.


感到无力改变


感到困惑。


感到厄运已至。


感觉或认为事情永远不会改变。


1.感觉无法逃脱 - 感觉没有解决问题的好办法。



图6.7:提示工程师使用的困扰描述



图6.8:询问LLM以确定其训练数据是否提供了关于诱导的相关知识的问题(没有提供)。


对提示进行修改,以便模型能够正确识别该项。为了了解为什么会出现这种错误标记,提示工程师要求语言模型生成第12项被标记的原因解释。



图 6.9: 输出中的代码片段,不标记数据点,而是试图提供 mental


为用户提供健康支持。这样的输出通常是 5倍,与此代码段一样长。



图6.10:一个“零射+上下文”提示,这是本案例研究中探讨的所有提示中最简单的。



Figure 6.11:10次迭代 + 上下文提示


图6.12显示了一个将该过程泛化的版本,用于为集合T中的所有发展问题/回答项目(qi, ai)提供解释,而不仅仅是项目12。受到针对错误标记的q12引出的推理步骤r12的启发,通过在先前提示中包含r12,将先前提示修改为一个带有错误推理的一次性CoT示例,作为不应该做的示范(图)。


6.13).


我们称图6.12中的算法为自动定向CoT(AutoDiCoT),因为它能够自动。


指导了CoT过程以特定方式进行推理。这种技术可以推广到任何标注任务。它将CoT的自动生成(Zhang等人,2022b)与展示LLM示例的错误推理相结合,就像在某种情况下。


对比式生成 (Chia 等, 2023)。该算法也被用于发展后续的提示。


最后,该提示被扩展为两部分额外的上下文/指导。第一部分是一封该提示工程师收到的电子邮件,解释了项目的总体目标,提供了关于困境概念以及希望对其进行标记的原因的更多背景信息。第二个补充是受到提示工程师注意到该模型经常对困境生成正面标签的启发。假设该模型对来自显性的预训练推论过于激进。


1.开发项目需要具有n对(qi,ai)的开发项。


2.对于T中的每一对(qi,ai):


1.使用该模型将 qi 标记为诱导或非诱导


如果模型正确标记:


i.用以下方式提示模型


ii."Why?" 产生一个推理链 ri (c) 否则


存储元组(qi, ri, ai)


3.返回:n元组(qi,ri,ai)



图6.12:算法:自动定向 CoT


语言,他指导模型限制自己只对困局进行明确陈述(图6.13)。在此,除了对困局的描述外,我们还提到这两个上下文部分作为完整上下文。


一个新的抽取器也被用于此提示,该抽取器检查输出中的最后一个词是否为“是”或“否”,而不是第一个词。这个更新后的提示被测试用于开发集中除前20个输入之外的所有输入。它没有改善F1,下降0.09(0.36)的F1,但它引导了提示工程师朝着能够改善的方向发展,如下所讨论的。精确度提高了0.09(0.39)的精确度,召回率下降了0.03(0.33)的召回率。


在这一点上,值得注意的是,尽管最终导致了 F1 分数的提高,但在减少正负标签过度生成方面所采取的步骤实际上并不符合更长期目标。并不一定非要明确表达出困境(例如,通过诸如“我感到受困”或“没有出路”之类的短语);相反,审查过这些文本的临床专家发现,困境的表达可能是隐含的,并且可能相当微妙。此外,在大多数用于自动识别某人语言中的困境的情况下,精确率和召回率不太可能同等重要,而在这两者中,召回率/敏感度更为重要。


诱导定义(图示)。


IMPORTANT:只有在他们明确表示感到被困时才将帖子标记为诱导。


Q: {q12}A: {q12}


虽然“今天我发现我有


10天内搬离我的公寓,否则我将被正式驱逐。我已经拖欠了2个月的房租,因为我经历了一段不好的时期,在工作中被降职,从每两周大约赚1000美元跌至约450美元。如果被驱逐,我可能会无家可归"看起来表达了被困/受困的感受,但这并不够明确以被标记为诱捕。看起来表达了被困/受困的感受,但这并不够明确以被标记为诱捕。



图13One-Shot AutoDiCot + 完整上下文


敏感性(即不漏掉应作为高风险标志的人)可能更重要,因为误报负面结果的潜在成本非常高。


这里的要点是,尽管洞察力是后来才来的,但如果不定期促进即时开发过程与更深入了解真实使用情况的领域专家之间的互动,那么即时开发过程很容易偏离实际目标。


剔除电子邮件。之前的更改结果令人鼓舞,但涉及创建一个包含未为此目的创建的电子邮件信息的提示,并包含有关项目、数据集等不打算向广泛受众披露的信息。具有讽刺意味的是,移除此电子邮件显着降低了性能,↓ 0.18(0.18)F1,↓ 0.22(0.17)精度和 ↓ 0.13(0.20)召回率。我们将这归因于该电子邮件提供了关于label10-Shot + 1 AutoDiCoT目标的更丰富的背景信息。作为下一步,提示工程师尝试包含完整的上下文、10个常规示例和关于如何不推理的一次性示例。这损害了性能(图6.14)↓ 0.30(0.15)F1,↓ 0.15(0.15)精度,0.15(0.15)召回率。



Figure 6.14: 10-Shot + 1 AutoDiCoT


只提供完整上下文。接下来,创建了一个仅使用完整上下文而不包含任何示例的提示 (见图6.15)。



这比之前的技术提高了性能,↓0.01(0.44)的F1,↓0.01(0.29)的精确度,↑0.62(0.92)的召回率。有趣的是,在这个提示中,提示工程师意外地将完整上下文的电子邮件粘贴了两次,结果对后来的性能产生了显著正面影响(去除重复实际上降低了性能)。这让人联想起重读技术(Xu等,2023年)。


这可以乐观地解释也可以悲观地解释。乐观地说,这表明



图6.16:10次抓取的AutoDiCoT


改进如何通过探索和偶然发现而产生。在悲观的一面,重复在提示中的电子邮件的价值突显提示依然是一门难以解释的神秘技巧,LLM可能对某些不被认为重要的变化异常敏感。


AutoDiCoT 10次射击。接下来的步骤是按照图6.12中的算法创建更多的AutoDiCoT实例。共添加了十个新的AutoDiCoT实例到完整的上下文提示中(图6.16)。就F1得分而言,这个提示工程练习中获得了最成功的提示,↑0.08(0.53)F1,↑0.08(0.38)精确度,↑0.53(0.86)召回率。



图6.17: 20-shot AutoDiCoT


20-Shot AutoDiCoT。进一步的实验继续进行,试图(未成功地)改进之前的F1结果。在一次尝试中,提示工程师对另外十个示例进行了标记,并从开发集中的前20个数据点创建了一个20-shot提示。在被测试的除前二十个样本外的所有样本上,这导致比10-shot提示更糟糕的结果,↓0.04 (0.49) F1,↓0.05 (0.33) 精确度,↑0.08 (0.94) 召回率。值得注意的是,它在测试集上也表现更差。


20-射击AutoDiCoT + 全词。 提示工程师猜测,如果提示包括完整单词问题、推理和答案,而不是 Q、R、A,LLM 的表现会更好。 然而,这并没有成功 ( 见图 6.17 ),↓ 0.05 (0.48) F1,↓ 0.06 (0.32) 精确度,↑ 0.08 (0.94) 召回率。


20-Shot AutoDiCoT +全词 + 提取提示。然后,提示工程师注意到,在许多情况下,LLM生成的输出无法正常解析以获得响应。因此,他们设计了一个从LLM响应中提取答案的提示(图6.18)。虽然这提高了准确性几个百分点,但由于许多未解析的输出实际上包含不正确的响应,F1下降了,↓0.05(0.48)F1,↓0.05(0.33)精确度,召回率不变(0.86)。


{教授的电子邮件}


{诱饵定义}


IMPORTANT:只有在他们明确表示感到被困时才将帖子标记为诱导。


问题:{已编辑}


这个答案是否表明了诱捕行为?如果被标记为诱捕,请输出单词是;如果没有被标记为诱捕,请输出单词否。只输出单词是或单词否。



图6.18:提取提示


10次自动抽取 + 提取提示。将提取提示应用于表现最佳的10次自动抽取提示并未改善结果,F1下降0.04(0.49),召回率下降0.06(0.78),精确率下降0.03(0.35)。


10次自动DiCoT无邮件。正如上面所指出的,从提示中彻底删除电子邮件会影响性能,F1 ↓0.14(0.39),召回率↓ 0.38(0.48),精度↓ 0.05(0.33)。


去重电子邮件。正如上面所述,移除电子邮件的重复似乎会比有意无意地重复效果更好或更好。然而,事实证明,移除重复显著损害了性能,F1下降了0.07(0.45),召回率下降了0.13(0.73),精度下降了0.05(0.33)。


10-Shot AutoDiCoT +默认为负面。在这种方法中,使用了表现最佳的提示,并默认为在回答没有被正确提取时标记为负面(非诱导)。


这并没有帮助提高性能,↓ 0.11(0.42)的F1值,↓ 0.03(0.83)的召回率,↓ 0.10(0.28)的精确率。


集成+提取。特别是对于那些对其输入细节敏感的系统,尝试多个输入的变体然后将它们的结果结合起来有优势。在这里,通过采取表现最佳的提示,即10次自动DiCoT提示,并创建三个具有不同实例顺序的版本来实现这一点。这三个结果的平均值被视为最终答案。不幸的是,与默认顺序不同的两个排序都导致LLM未能输出结构良好的响应。因此,使用了一个提取提示来获取最终答案。这种探索的结果反而损害了性能 ↓ 0.16(0.36)的F1,↓ 0.22(0.64)的召回率,↓ 0.12(0.26)的精确度。


10次AutoCoT + 3倍上下文(不含重复电子邮件)。回想一下上下文是指困境的描述,明确性的说明以及一封电子邮件。由于重复的电子邮件改善了性能,提示工程师测试了将上下文的三个副本粘贴进去(首先去除电子邮件的重复)。然而,这并没有改善性能,F1下降了0.06(0.47),召回率下降了0.08(0.78),精确度下降了0.05(0.33)。


匿名化电子邮件。到目前为止,可以清楚地看到,在提示中包含重复的电子邮件实际上是至关重要的,尽管无法解释,这对目前为止获得的最佳性能是必不可少的。提示工程师决定通过用其他随机名称替换个人名称来匿名化电子邮件。然而,令人惊讶的是,这显著降低了性能 ↓0.08(0.45)F1,↓0.14(0.72)召回率,↓0.05(0.33)精确率。


DSPy。我们通过探索 DSPy 框架(Khattab 等人,2023年)作为手动提示工程的替代方案来结束案例研究,该框架可以自动为给定的目标指标优化LLM提示。具体而言,我们首先使用图6.7中的关于困局的定义开始一个思维链分类管道。在16次迭代中,DSPy引导了合成的LLM生成演示和随机采样的训练实例,最终的目标是在上述相同的开发集上最大化F1。我们使用了 gpt-4-0125-preview 和 BootstrapFewShotWithRandomSearch “提示器”(即优化方法)的默认设置。图6.19显示了其中两个提示在测试集上的结果,其中一个使用了默认的DSPy行为,另一个从默认值稍微手动修改。最终的最佳提示包括15个示例(不包括CoT推理)和一个引导式推理演示。它在测试集上实现了0.548的F1(和0.385 / 0.952的精度/召回率),而不使用教授的电子邮件或不正确的...


在测试集上不同提示技术的分数。



图6.19:不同提示技术在测试集上的得分。


关于诱导性明确定的指导。它在测试集上的表现比人类提示工程师的提示要好得多,这展示了自动提示工程的显著潜力。


6 .2.3 讨论


提示工程是一个不容忽视的过程,目前文献中对其细微之处并未有清晰描述。从上面所示的完全手动过程中,有几个值得总结的要点。首先,提示工程从根本上不同于其他使计算机按照您希望的方式运行的方法:这些系统是被哄骗而不是被程序编写的,并且除了对所使用的特定LLM非常敏感之外,它们对提示中的具体细节也可以非常敏感,尽管没有明显的理由表明这些细节应该有所作用。因此,深入研究数据(例如为导致不正确响应的LLM“推理”生成潜在解释)是很重要的。相关的,第三个最重要的要点是,提示工程应该涉及提示工程师(具有如何引导LLMs以期望方式行为的专业知识)与领域专家之间的互动,后者了解这些期望的方式是什么以及为什么。


最终我们发现,利用自动化方法探索提示空间具有显著的潜力,但是将该自动化与人工提示工程/修订相结合是最成功的方法。我们希望这项研究将成为更加深入探讨如何进行提示工程的重要一步。


7相关工作


在本节中,我们回顾了关于提示的现有调查和元分析。刘等人(2023b)对ChatGPT之前的提示工程进行了系统性回顾,包括提示模板工程、答案工程、提示融合和提示调优方法等各个方面。他们的回顾涵盖了许多不同类型的提示(例如填空、软提示等,涉及许多不同类型的语言模型),而我们则专注于离散前缀提示,进行更深入的讨论。陈等人(2023a)提供了对Chain-of-Thought、Tree-of-Thought、Self-Consistency和Least-to-Most等流行提示技术的综述,并展望了未来的提示研究。白等人(2023)和施密特等人(2023)提供了提示模式的分类,类似于软件模式(以及相关的提示技术)。高(2023)为非技术人员提供了实用的提示技术教程。Santu和冯(2023)提供了可用于设计具有特定属性的提示以执行各种复杂任务的提示的通用分类。Bubeck等人(2023)在早期的GPT-4版本上对各种提示方法进行了定性实验,以了解其能力。朱等人(2023)回顾了与推理相关的Chain-of-Thought提示方法。在早期的工作中,Bommasani等人(2021)广泛审查基础模型的机会和风险,丹等人(2022)讨论了用于互动创意应用程序的提示策略,这些应用程序将提示作为人机交互的新范式,特别关注支持用户提示的用户界面设计。作为对这些现有调查的补充,我们的回顾旨在提供一个更新和形式化的系统性回顾。


还有一项工作是针对特定领域或下游应用的提示技术进行调查。 Meskó(2023年)和Wang等人(2023年)提供了在医疗保健领域中使用提示工程的推荐用例和限制。 Heston和Khun(2023年)提供了关于医学教育用例的提示工程综述。 Peskoff和Stewart(2023年)查询了ChatGPT和YouChat以评估领域覆盖范围。 Hua等人(2024年)采用了GPT-4自动化方法来审查心理健康领域的LLMs。 Wang等人(2023年)审查了视觉模式中的提示工程和相关模型,而Yang等人(2023年)则提供了一份关于多模态提示的定性分析综述,特别关注GPT-4V。 Durante等人(2024年)针对基于LLM实体智能体的多模态交互进行了审查。 Ko等人(2023年)审查了关于采用文本到图像生成模型用于视觉艺术家创作作品的文献。 Gupta等人(2024年)通过主题建模方法审查了GenAI。 Awais等人(2023年)审查了视觉中的基础模型,包括各种提示技术。 Hou等人(2023年)进行了关于软件工程相关提示工程技术的系统综述。他们使用了Keele等人(2007年)为软件工程综述专门开发的系统综述技术。Wang等人(2023年)审查了关于大型语言模型的软件测试文献。张等人(2023年)审查了ChatGPT在软件工程任务(如自动化程序修复)中的提示性能。 Neagu(2023年)提供了一项关于如何利用提示工程在计算机科学教育中的系统综述。 Li等人(2023年)审查了大型语言模型的公平性文献。也有关于相关方面的调查,如语言模型的幻觉(Huang等,2023年)、可验证性(Liu等,2023年)、推理(Qiao等,2022年)、增强(Mialon等,2023年)和提示的语言属性(Leidinger等,2023年)。与这些工作不同,我们进行了广泛覆盖和通用适用的提示技术综述。最后,在更一般的先前调查方面(Liu等,2023年;Sahoo等,2024年),本调查在快速发展的领域提供了更新。此外,我们为提示技术的分类组织和术语标准化提供了一个起点。此外,我们基于广泛受好评的系统文献综述标准-PRISMA(Page等,2021年)进行工作。


8 结论


生成式人工智能是一种新颖的技术,对模型的能力和局限性的广泛理解仍然有限。自然语言是一个灵活的、开放式的接口,模型的明显功能较少。因此,生成式人工智能的使用继承了语言沟通的许多标准挑战,比如歧义、语境的作用,以及需要进行修正,同时增加了与一个“理解”语言的实体进行沟通的挑战,这种理解可能与人类理解没有任何实质性关系。这里描述的许多技术被称为“新兴”,但更恰当的说法或许是它们是被发现的——经过深入实验、从人类推理中的类比,或纯粹的幸运。


这项工作是对一个陌生领域的物种进行分类的初步尝试。虽然我们尽力做到全面,但必然存在空缺和多余。我们的目的是提供一个涵盖大量现有提示工程技术的分类法和术语,并可以适应未来方法的词汇。我们讨论了超过200种提示技术,围绕它们构建的框架,以及在使用它们时需要牢记的安全和安全性等问题。我们还提供了两个案例研究,以便清楚了解模型的能力以及在实践中解决问题的情况。最后,我们的立场主要是观察性的,我们不对所呈现的技术的有效性提出任何声明。该领域是新的,评估是多变的和非标准化的,即使是最谨慎的实验也可能存在意想不到的缺陷,而模型输出本身对输入中保持含义的更改也很敏感。因此,我们鼓励读者不要轻信任何声明,并认识到技术可能无法转移到其他模型、问题或数据集中。


对于刚开始进行提示工程的人来说,我们的建议类似于在任何机器学习环境中会推荐的内容:要理解你正在尝试解决的问题(而不仅仅关注输入/输出和基准分数),确保你正在处理的数据和指标很好地呈现了这个问题。最好先从简单的方法开始,并对方法性能的声明保持怀疑。对于那些已经从事提示工程的人,我们希望我们的分类法能够阐明现有技术之间的关系。对于那些开发新技术的人,我们鼓励将新方法置于我们的分类法之内,并包括生态有效的案例研究和这些技术的插图。


致谢


我们感谢Hal Daumé III、Adam Visokay和Jordan Boyd-Graber提供的建议,以及Diyi Yang和Brandon M. Stewart的审阅。我们还感谢OpenAI提供的价值10000美元的API信用额度,以及Benjamin DiMarco的设计工作。


参考文献  


省略


A附录


A.1提示的定义.



表A.1:来自不同论文的Prompt和Prompt Engineering的定义。


A.2扩展词汇


A.2.1提示词


上下文窗口上下文窗口是模型可以处理的标记空间(LLMs)。它具有最大长度(上下文长度)。


Priming(Schulhoff, 2022)指的是给予一个模型最初的提示,为接下来的对话提供特定的指导。这种激励性提示可能包含一个角色或其他与用户如何互动的指令。Priming可以在系统或用户提示中完成(见下文)。


A.2.2 提示性工程术语


对话提示工程是在 colloquio 中的提示工程。也就是说,在与 GenAI 的对话过程中,用户可能会要求 GenAI 优化其输出。相比之下,提示工程通常是通过发送 GenAI 一个全新的提示来完成,而不是继续对话。


A.2.3微调术语


基于提示的学习(Liu等,2023b),也被称为提示学习(Liu等,2023b;Wang等,2023d),指的是利用提示相关的技术的过程。它经常在微调的背景下使用,特别是微调提示。由于使用上的冲突,我们不使用这个术语。


Prompt Tuning (Lester et al., 2021)指的是直接优化提示本身的权重,通常通过某种形式的基于梯度的更新来实现。也被称为提示微调。不应该用来指代离散提示工程。


A.2.4正交提示类型


我们现在讨论分类提示的高级方式的术语。


A.2.4.1起始者


用户提示 这是用户发出的提示类型。这是最常见的提示形式,在消费类应用程序中通常是如何传递提示的。


助手提示这个“提示”只是LLM本身的输出。可以被视为一个提示。


当它被反馈到模型中时,例如作为与用户的对话历史的一部分。


系统提示:此提示用于为LLMs提供与用户交互的高级指令。并非所有模型都具备此功能。


A.2.4.2硬性 vs 软性提示


硬(离散)提示 这些提示仅包含与LLM词汇中的单词直接对应的标记。


软(连续)提示这些提示包含的标记可能与词汇表中的任何单词不对应(Lester等,2021年;Wang等,2023年)。软提示可以在需要微调时使用,但修改完整模型的权重成本过高。因此,在允许梯度流经提示标记的同时可以使用冻结模型。


Hard Prompts ⊆ Soft Prompts


A.2.4.3 预测风格


在LLMs中,一种预测方式是它预测下一个标记的格式。在提示性研究中,有两种常见的格式。我们不讨论非文本预测风格。


在Cloze中,需要预测的标记通常呈现为“填充槽”,通常出现在提示的中间位置(Liu等,2023b)。这通常适用于早期的变压器模型,如BERT(Chu和Lin,2023)。


在PrefixIn提示中,要预测的令牌位于提示的末尾(Liu等,2023b)。这通常是现代GPT风格模型的情况(Radford等,2019b)。


A.3 数据表


我们提供了一份数据表(Gebru等,2021年),其中包含有关相关论文数据集的更多信息,该数据集托管在HuggingFace上。


A.3.1动机


对于这个数据集的创建目的是什么?有特定的任务吗?是否有特定的空白需要填补?请提供描述。


这个数据集是为了收集现有关于提示工程的文献,以便分析所有当前的硬前缀提示技术。


谁创建了数据集(例如,哪个团队、研究组)代表哪个实体(例如,公司、机构、组织)?


这项研究与马里兰大学、Learn Prompting相关,并由 OpenAI 赞助,但并非代表任何特定组织创建。


由谁资助了数据集的创建?如果有关联的资助金,请提供资助机构的名称和资助项目的名称和编号。


OpenAI为其API贡献了价值10,000美元的信用额度。


A.3.2组成


数据集中包含的实例代表什么(例如文档、照片、人、国家)?是否有多种类型的实例(例如电影、用户和评分;人和人之间的互动;节点和边)?请提供描述。


该数据集包含1,565篇PDF格式的研究论文。任何重复的论文都已经被自动删除,尽管可能存在一些重复。


每个实例包含哪些数据?是“原始”数据(例如未经处理的文本或图像)还是特征?无论哪种情况,请提供描述。每个数据实例是一个PDF格式的研究论文。


每个实例是否都有标签或目标与之相对应?如果是的话,请提供一份描述。


不需要翻译。


任何个体实例中是否有遗漏的信息?如果有,请提供描述,解释为什么这些信息缺失(例如,因为无法获取)。这不包括有意删除的信息,但可能包括已编辑的文本。没有。


数据集中是否存在错误、噪音源或冗余信息?如果是,请提供描述。


文件是通过半自动化的方式收集的,这种方式可能导致收集到无关文件或者漏掉相关文件。针对这两种可能的错误,进行了手动审查以减轻这些错误。


数据集是独立的,还是链接或以其他方式依赖外部资源(例如,网站、推文、其他数据集)?数据集是独立的。


数据集中是否包含可能被视为机密的数据(例如,受法律特权或医生-患者保密保护的数据,包括个人非公开通信内容)?如果是,请提供描述。没有。


数据集是否包含直接查看可能会引起冒犯、侮辱、威胁或可能引起焦虑的数据?如果是,请说明原因。


这个数据集包含一些关于提示注入的论文。这些论文可能包含种族主义和性别歧视等攻击性内容。


A.3.3 筹集过程


每个实例的数据是如何获取的?


该数据集是从Arxiv、Semantic Scholar和ACL编译而来。


什么机制或程序被用来收集数据?


我们编写了脚本,自动查询Arxiv 和 Semantic Scholar 的 API。


数据是在哪个时间范围内收集的?


该数据集在研究论文的期间进行了精心策划,主要是在2024年2月。是否进行了任何伦理审查流程?没有。


A.3.4数据预处理/清洗/标记


数据是否进行了任何预处理/清洗/标记?


从不同来源收集数据后,我们移除了重复的论文,并对论文进行了手动和半自动化的审查,以确保它们都是相关的。

除了预处理/清洗/标记过的数据外,是否保存了“原始”数据?

不,我们不预期使用我们预处理的数据。但是,可以从我们存储的链接中恢复原始数据。


数据预处理/清洗/标记所使用的软件是否可用?它包含在我们的Github代码存储库中。


A.3.5用途


这个数据集已经被用于任何任务吗?


是否有一个存储库链接到使用该数据集的任何或所有论文或系统?


是的。


数据集的构成或者采集、预处理、清洗和标注的方式是否会影响未来的使用?


我们收集的所有论文都是用英文写的。由于没有相应的翻译,可能会有一些论文未被纳入。


有任务使用该数据集时,有哪些任务不应该使用该数据集?没有。


这个数据集会被分发给在数据集创建实体之外的第三方吗?不会。


A.3.7 维护


谁将支持/托管/维护这个数据集?


我们的团队将继续进行维护。


如何联系数据集的所有者/策展人/管理者?


请发送邮件至sanderschulhoff@gmail.com。是否有勘误?


不需要翻译。


如果其他人想要扩展/增加/构建/贡献到数据集中,是否有机制让他们这样做?


是的,任何人都可以自由使用/修改这些数据。


A.4关键词


这些是我们用于搜索的关键词。


l越狱提示


l触发一个llm


l触发一个大型语言模型


l注入提示


l优化提示


l自动工程。


l少样本学习


l基于提示的方法


l少样本提示


l一次性提示

l引导技术


l提示工程技术


lllm prompting


l大型语言模型提示

n样本t提示

l0 样本提示


l多轮提示


lzero-shot prompting


l多次输入提示


l在上下文学习


l上下文学习


lTransformer 模型提示


l基于提示的迁移学习


lnlp提示策略


lllm interpretability via prompts


l以提示为基础的课程学习


l人机交互提示


ltoken-efficient prompting


l多模提示


l指示提示


l模板提示化


l提示模板


A.5评估表


Table A.2:评估论文摘要。E:显式(模型是否生成评估),I:隐式(评估是否从模型输出中派生);响应(Res.)S:单个响应,M:多个响应;†:模型生成的指导;


A.6 陷阱引导过程


这部分包含我们的提示工程师在开发提示时的思维过程。


A.6.1探索


首先进行了一些数据集探索,查看长度/标签分布,然后选择开始处理entrapment。


检查了gpt-1106-preview是否理解诱捕,要求其定义SCS相关术语。它未能理解。


获取标签


向系统提示显示了“困境”(entrapment)的定义,并要求标记一个数据点,但它回应说我应该寻求心理健康支持。


我将说明放在用户提示中,但收到了类似的回应。


添加“这是诱导吗?是或否”使其实际回复了一个标签。


我给了一个拒绝的示例,但它标记为接受,并且有时会对寻求帮助表达情绪化的回应。


使用10-shot提示,它仍然会提供获取帮助的响应。


我添加了定义,将标签更改为“诱导/非诱导”,通常会显示“信息不足以确定”。


我转换到了GPT-4-32K,它给出了一个词的回答,并正确地预测了一个拒绝和一个接受的数据点。


A.6.3不同的提示技术


已测试0-shot与上下文。


10次射击与背景下,显示出改善。


将第一个失败实例带入训练场景。(在训练文件中为第12个)


尝试做:“A:让我们一步一步来,弄清楚这个问题:”,输出“A:是的”


"A:让我们一步一步地解决这个问题吧:", 输出:


这篇帖子中的个人表达了绝望、孤独和绝望的情绪。他们提到了一次重大的损失(他们的母亲)以及其心理健康的后继下降,开始依赖酒精作为一种应对机制。他们还提到了经济困难和可能会无家可归的可能性。他们对自己的处境感到内疚和羞耻,并将自己与朋友和家人进行了负面比较。最令人担忧的是他们对自杀的详细计划,包括服用安眠药和酒精。他们还提到考虑跳到车前。考虑到这些因素,这篇帖子的标签将是"是",用于表达困境感。


"A:在预测一个标签之前,让我们一步一步地写出你的思考过程。使用诱使罪的定义中的条款来支持你的结论。"


在预测标签之前,让我们一步一步地列出你的思考过程。使用陷阱定义中的项目来支持你的结论。


开始与AI讨论:“他们从未说过他们感到被困住或没有出路,你是怎么得到这个想法的?”。


个人并未明确表示感到被困或无路可走,但他们的叙述暗示着一种困局感。他们提到正在面临被驱逐、债务问题和收入减少的困境。他们还表达了一种绝望和绝望感,并考虑自杀作为解决问题的一个可能途径。这些因素表明他们感到被困在目前的情况中,看不到明显的出路。然而,需要注意的是,这种解释是基于帖子中提供的信息以及个人表达的情感和思想。


要求它帮助重新表述指示,使明确度更明显,但仍然预测陷阱。


在定义后的顶部添加了“诱导必须是明确的,而非暗示性的。”指示(无CoT 诱导器)


尝试使用之前的CoT诱导剂,仍然提示在难以解析的方式中被困。


"如果被告人没有明确表示感到被困,这不算诱导犯罪"(无CoT),仍属诱导犯罪。


与原文保持一致。


尝试过在陈述标签之前使用上述网格写出关于为什么这可能/可能不是诱导的推理,仍然认为是诱导。


将“paste in email: [REDACTED] above definition of entrapment”翻译成中文。


删除镜头,说:“圈套”


在def后添加此内容:重要提示:只有当他们明确表示感到被困扰时,将帖子标记为“诱导”。如果表示“是”,则表示感到被困。


在提示中,给出了CoT的推理。(18.txt),并尝试使用下一个错误标记的提示 (15),(完整提示,19.txt)。


在除了前20个之外的所有内容上进行了测试,效果不错。


尝试去除电子邮件,性能急剧下降。


在这一点上,我觉得用带有理由的例子有帮助(显然)。


尝试在最后一个射门前免费增加10次尝试,由于理由不佳而导致结果不佳。


A.6.3.1 AutoCoT


使用这个提示(22.txt)来开发数据集。然后问它“为什么?”。如果它不同意,我会说“这实际上并不是诱导罪,敬请解释原因。”(意外重复的邮件23.txt)


为了好玩,尝试了0 射击全文本(不得不调整语言表达方式)。


尝试了使用特殊的“verbalizer”来捕捉“这篇文章不符合诱导的标准”。•测试了我的生成数据,达到了0.5 F1。


进行10 个 autocot 实例。有时会立即回应,并附带类似于“这篇帖子不符合被困感的标准,因为个体并没有明确表示感到被困或绝望。”的推理,如果是这样的话,就直接使用这个回答。有时会遇到拒绝的回复,“很遗憾听到你感觉这样,但我无法提供你所需的帮助。与一位心理健康专业人士或你生活中值得信赖的人交谈是非常重要的。”,如果是这样的话,之后就要问“解释为什么这不是被困感。”。


表现并没有真正改进,意识到大约11% 的问题得到 -1 的结果,意味着没有被正确提取。改为使用完整单词“问题”而不是简写“Q”,同样对于解释和答案。


这导致了更高的解析无法率,约为16%。


A.6.3.2 开发答案提取


将第一个无法解析的内容放置在(22)中,并为其开发一个提示。


1.didworse:(0.42857142857142855,0.5051546391752577,0.8571428571428571, 0.2857142857142857)


只有在有-1时,仅使用提取的标签略微有所帮助,达到(0.48,0.61,0.8571428571428571)。


0.3333333333333333)


回到表现最好的提示-10 QRA射击,并在任何-1s的情况下执行提取,并不会有帮助,除了轻微增加准确性,也许在它不回答的时候。


A.6.3.3

在电子邮件上进行迭代尝试最佳性能,没有电子邮件。

尝试使用去重后的电子邮件,结果更糟糕。


发现不确定的事物通常包含应为0 的标签,因此尝试“恢复”这些并不会有帮助。


尝试调整示例顺序,进行提取并未有帮助。


三次发送的电子邮件,没有帮助。


A.7形式定义提示


"Prompt"是一个广泛使用的术语,但在研究中使用和定义各不相同。因此,很难为"prompt"创建一个正式的数学定义。在这一部分中,我们概述了一些"prompt engineering"的形式化方法。


作为一个调节机制,乔等人(2022年)提出了以下定义,其中涉及到提示T和问题Q作为对下一个记号进行预测的调节机制。请注意,他们似乎使用了Brown等人(2020年)原始定义的提示,这指的是提示的非问题部分(例如少样本示例,说明)。


|A| In computer science, an algorithm is a finite sequence of well-defined, computer-implementable instructions, typically used to solve a class of specific problems or to perform


在这里,提示和问题条件了预训练的LLM pLM。a1:i1是先前生成的答案标记,A是完整的答案。


模板化。上述的形式化并没有包括最大化得分或效用函数(例如,数据集上的准确性)的概念,而这正是提示通常被设计用来实现的。此外,提示工程师经常试图设计提示模板而不是提示。在这里,我们重新构造方程(A.1)以包含提示模板:


|

我们用来自数据集(例如评估数据)的项目 x ∈ Deval 替换Q。此外,我们将右边的 Q 替换为 T(x)。T(·) 是一个提示模板函数:接受某个项目作为输入,然后返回一个用于给模型提供条件的提示。


Few-Shot Prompting. Often, an important part of the prompting process is the use of few-shot exemplars. Dtrain is training data (used to build the prompt) and X is a test set for evaluation.Few-Shot Prompting。通常,提示过程中的一个重要部分是使用少样本实例。Dtrain 是用于构建提示的训练数据,X 是用于评估的测试集。


在少样本设置中,提示模板函数 T(·) 还接受一个或多个训练样本 X = {(xi, yi)train}。



优化。如前所述,通常希望根据一个得分函数(通常是根据数据集定义的)来谈论改进提示(即提示模板)。




在这个定义中,我们评估一个数据集D,关于评分函数S(·)。S(·)评估由LLM根据提示T(§⟩)生成的输出A。yi是可以被S使用的标记输出。



在某些情况下,可能没有任何标记的数据yi,而S(·)可能是无参考的。


其他考虑。这些形式主义可以被改编以满足CoT、检索系统等需求。在这里,我们描述一个简单的设置,最能描述提示过程,而不会增加太多复杂性。


我们同时需要关注较少人知道的答案工程的概念。E(A)是一个对原始LLM输出的转换函数,使其能够与真实情况进行比较。


A.8在上下文学习的定义消歧


Brown等人(2020)似乎对ICL提供了两种不同的定义。本节中所有加粗部分均为我们自己添加。


最近的工作[RWC+19]尝试通过我们称之为“上下文学习”来实现这一目标,利用预训练语言模型的文本输入作为任务规范的一种形式:模型以自然语言指令和/或任务的几个演示作为条件,然后通过预测接下来会发生什么来完成任务的更多实例。


然而,他们后来似乎将其定义为仅限少样本:


对于每个任务,我们根据3种条件对GPT-3进行评估:(a)“少量示范学习”,或者是上下文学习,我们允许最多适合模型上下文的示范。


窗口(通常为10到100个),(b)“一次学习”,只允许一次示范,和(c)“零次学习”,不允许任何示范,只向模型提供自然语言指令。


然而,他们包含了这张图像,澄清了这个问题:



图 A.1:来自 Brown 等人 (2020) 的 ICL。


另外,他们明确表示ICL不一定涉及学习新任务。


为了避免混淆,我们使用术语“元学习”来捕捉一般方法的内部循环/外部循环结构,并使用术语“上下文学习”来指代元学习的内部循环。我们进一步将描述专门化为“零次学习”、“一次学习”或“少次学习”,这取决于推理时提供了多少演示。这些术语旨在对模型是否在推理时从头开始学习新任务或仅识别训练中看到的模式保持中立- 这是我们稍后在论文中讨论的一个重要问题,但“元学习”旨在涵盖这两种可能性,并仅描述内部-外部循环结构。


我们采用Brown等人(2020年)的广义定义,尽管需要注意从业者通常使用ICL来指代模型从提示中学习新任务的情况。我们的定义与Dong等人(2023年)的正式定义不同,尽管它也源自(Brown等人,2020年)。


A.9贡献


团队成员在本文各个部分所做的贡献如下。大多数作者也进行了其他部分的审查。


顾问


Denis Peskoff:协助论文组织和最终审阅。


亚历山大·霍伊尔:提供撰写指导、元分析方法,并为案例研究运行自动化基准线。


Shyamal Anadkat:协助进行论文的整体审阅,以及词源学和定义。


朱尔斯·怀特:为技术分类建立树形结构。


麦琳·卡波:为多语言部门的文章提供框架、审查和建议。


Phillip Resnik:首席研究员


SCS标签化


Megan L. Rogers, Inna Goncearenco, Giuseppe Sarli, Igor Galynker:审阅并为本节提出建议。


基准测试和智能体。


Konstantine Kahadze: Benchmarking部门的团队负责人;管理MMLU基准测试代码库,为安全和元分析做出贡献。


Ashay Srivastava:Agents部门的团队负责人,审核人工审核的论文,负责工具使用Agents部分。负责整理稿件的编制。


Hevander Da Costa:贡献了Benchmarking部分和元评论数据集列表,审阅了有关LLM代码生成和提示技术的文献。将文献综述内容添加到Agents部分。


Feileen Li:负责工具使用智能体部分,协助人类论文审阅。


对齐和安全


尼山特·巴勒普尔:作为对齐部门的团队负责人,在基准测试中协助高层讨论,并审查草稿。


Sevien Schulhoff:安全部门负责人,贡献于基准测试部分。


相关工作及章节贡献


Chenglei Si:建议相关作品,并编辑第2.2节和第7节。


Pranav Sandeep Dulepet:为第2节贡献了定义,并在多模态部分工作于分割和对象检测。


HyoJung Han:贡献于多模态部分,特别是语音+文本部分,并编写了音频提示部分。


Hudson Tao:在多模态中撰写了关于图像、视频和3D的部分,为人类审查审核论文;维护GitHub代码库,并建立项目网站。


Amanda Liu:编写分类本体部分,为介绍和相关工作进行背景研究,开发代码管道用于元分析图。


Sweta Agrawal:评估部门的团队负责人


Saurav Vidyadhara:协助进行概述性审查和修订分类树。 • Chau Pham:协助进行元审查,包括对主题的自动化分析。


多语言提示和元分析


Dayeon Ki:主导多语言提示部分,进行相关论文审查,并撰写第3.1节。


Yinheng Li:负责并参与了2.2节基于文本的技术的工作,审查了技术,并为制作2.2节的图表做出了贡献。


Saloni Gupta:编写了用于文集的测试,帮助设置了文集流程,并为文集的代码图表和语法进行了工作。


Gerson Kroiz:参与第1.1节的工作并定义一个提示。


Aayush Gupta:贡献于元分析,编制论文,并生成可视化图表。


Michael Ilie: Co-Lead Author,管理代码库,运行实验,收集数据,并协助完成不同部分,包括PRISMA审核图和SCS提示案例研究。


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

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

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

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询