跳到主要内容 提示工程 39 种方法与应用全解析 | 极客日志
Python AI 算法
提示工程 39 种方法与应用全解析 总结了提示工程的 39 种方法,涵盖数学问题解决、逻辑推理、常识推理等 29 个自然语言处理任务。通过对比基础提示、思维链、自洽性等多种技术在不同数据集上的性能,分析了零样本与少样本设置下的差异,并指出了各任务的最佳实践策略。文章详细阐述了从基础提示到复杂推理链、程序辅助及验证机制等各类技术的原理与应用场景。
忘忧 发布于 2025/2/7 更新于 2026/4/20 1 浏览大型语言模型(LLMs)在许多不同的自然语言处理(NLP)任务上表现出了显著的性能。提示工程在提升 LLMs 已有能力方面发挥着关键作用,使其在各种 NLP 任务上取得了显著的性能提升。提示工程需要编写自然语言指令,即提示,以结构化的方式从 LLMs 中提取知识。
与以往的最先进(SoTA)模型不同,提示工程不需要根据给定的 NLP 任务进行广泛的参数重新训练或微调,而是仅依赖于 LLMs 的内嵌知识。
此外,LLMs 的爱好者可以通过基本的自然语言对话交换或提示工程,智能地提取 LLMs 的知识,使得越来越多的人即使没有深厚的数学机器学习背景,也能与 LLMs 进行实验。随着提示工程在过去两年中越来越受欢迎,研究人员提出了许多围绕设计提示以提高从 LLMs 中提取信息准确性的工程技术。
在本文中,我们总结了不同的提示技术,并将它们根据不同的 NLP 任务进行分类。我们进一步详细突出了这些提示策略在各种数据集上的性能,讨论了相应的 LLMs 的使用情况,展示了分类图,并讨论了特定数据集的可能 SoTA。总的来说,我们阅读并展示了 44 篇研究论文的调查,其中讨论了 29 个不同 NLP 任务上的 39 种不同的提示方法,其中大部分已在最近两年内发表。
1 引言
随着 LLMs 的引入,人工智能取得了显著的进步。LLMs 在包含数百万甚至数十亿个标记的大量文本文档上进行训练。已经证明,随着模型参数数量的增加,机器学习模型的性能会提高,LLMs 也是如此。由于这些原因,它们在广泛的 NLP 任务上取得了前所未有的性能(Chang 等人,2023 年),因此吸引了学术界和包括医学、法律、金融等多个行业的极大兴趣。目前对 LLMs 的研究重点在于通过提示而不是仅仅预测下一个标记来提高它们的推理能力,这开辟了提示工程的新研究领域。
提示工程是创建自然语言指令或提示的过程,以有组织的方式从 LLMs 中提取知识。与早期的传统模型不同,提示工程仅依赖于 LLMs 的内嵌知识,不需要根据底层 NLP 任务进行广泛的参数重新训练或微调。理解模型参数在现实世界知识中的含义超出了人类的能力,因此这个新的提示工程领域引起了所有人的注意,因为它允许研究人员与 LLMs 之间通过自然语言交换来实现底层 NLP 任务的目标。
在这项工作中,我们列举了几种提示策略,并根据它们被使用的不同的 NLP 任务对它们进行分组。我们提供了一个分类图,列出了在不同 NLP 任务的不同数据集上尝试的各种提示技术,讨论了所使用的 LLMs,并列出每个数据集的潜在 SoTA 方法。作为这项调查的一部分,我们总共回顾并分析了 44 篇研究论文,其中大部分在前两年发表,涵盖了 29 个不同的 NLP 任务上应用的 39 种提示技术。以前没有很多系统的提示工程调查。Sahoo 等人(2024 年)基于它们的应用调查了 29 种提示技术论文。这是一个非常广泛的分类,因为一个单一的应用可以包含许多 NLP 任务。例如,他们讨论的一个应用是推理和逻辑,这可以包含诸如常识推理、数学问题解决、多跳推理等众多 NLP 任务。这与我们的方法不同,我们根据 NLP 任务对提示策略进行了更细粒度的分类。Edemacu 和 Wu(2024)提供了一个隐私保护提示方法的概述,因此专注于提示工程的相对较小的子领域。Chen 等人(2023)将提示策略的讨论限制在一些 9-10 种方法上,并且也没有将它们根据 NLP 任务进行分类。
本文的其余部分组织如下。第 2 节讨论了各种提示工程技术;第 3 节突出了不同的 NLP 任务。第 3 节的小节讨论了在给定 NLP 任务上应用的不同提示策略及其相应的结果。第 4 节总结了本文。
2 提示工程技术
在本节中,我们将简要讨论不同的提示方法以及它们如何在发布时带来现有性能的改进。一个重要的注意事项是,以下大多数提示策略都至少在两种不同的变体或设置中进行了实验,如果没有更多的话。这些变体包括零样本(zero-shot)和少样本(few-shot)。一些提示技术可能本质上存在于零样本或少样本变体中,可能没有其他变体存在的可能性。在零样本设置中(Radford et al., 2019),没有涉及训练数据,而是要求 LLM 通过提示指令执行任务,同时完全依赖于其在预训练阶段学习到的内嵌知识。另一方面,在少样本变体中(Brown et al., 2020),提供了少量训练数据点以及基于任务的提示指令,以更好地理解任务。各种提示工程工作的结果表明,少样本变体有助于提高性能,但这需要仔细准备少样本数据点,因为 LLM 可能对策划的少样本数据点表现出无法解释的偏见。
2.1 基础提示(Basic/Standard/Vanilla Prompting)
基础提示是指直接向 LLM 提出查询的方法,无需对其进行任何工程改进以提高性能,这是大多数提示策略背后的核心目标。基础提示在不同的研究论文中也被称为标准或香草提示。
2.2 思维链(Chain-of-Thought, COT)
在这种提示策略中(Wei et al., 2022),作者们建立了一个想法,即人类如何将复杂问题分解为更小、更容易的子问题,然后才到达复杂问题的最终解决方案。同样地,作者们研究了 LLMs 通过产生思维链或一系列中间推理步骤来增强其复杂推理能力的能力。结果显示,与基础提示相比,COT 有相当大的改进,COT 和基础提示结果之间的最大差异在数学问题解决任务中约为 39%,在常识推理任务中约为 26%。这项工作为提示工程领域开辟了一个新的研究方向。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
2.3 自洽性(Self-Consistency)
自洽性提示技术(Wang et al., 2022)基于这样一个直觉:复杂推理问题可以通过多种方式解决,因此可以通过不同的推理路径达到正确答案。自洽性使用了一个新颖的解码策略,与 COT 使用的贪婪策略不同,包括三个重要步骤。第一步需要使用 COT 提示 LLM,第二步从 LLM 的解码器中采样多样化的推理路径,最后一步涉及在多个推理路径中选择最一致的答案。与 COT 相比,自洽性在数学问题解决任务上平均提高了 11%,在常识推理任务上提高了 3%,在多跳推理任务上提高了 6%。
2.4 集成精炼(Ensemble Refinement, ER)
这种提示方法在 Singhal et al. (2023) 中进行了讨论。它建立在 COT 和自洽性之上。ER 包括两个阶段。首先,给定一个少样本 COT 提示和一个查询,通过调整其温度,使 LLM 产生多个生成。每个生成包含对查询的推理和答案。接下来,LLM 被条件化到原始提示、查询和前一阶段的连接生成上,以生成更好的解释和答案。这个第二阶段会多次进行,然后像自洽性一样对这些第二阶段生成的答案进行多数投票,以选择最终答案。ER 在许多属于上下文无关问答任务的数据集上的表现优于 COT 和自洽性。
2.5 自动思维链(Automatic Chain-of-Thought, Auto-COT)
在这项工作中(Zhang et al., 2022),作者们解决了少样本 CoT 或手动 CoT 面临的问题,即需要策划高质量的训练数据点。Auto-CoT 包括两个主要步骤。第一步要求将给定数据集的查询分成几个簇。第二步涉及从每个簇中选择一个代表性查询,然后使用零样本 CoT 生成相应的思维链。作者声称 Auto-CoT 在数学问题解决、多跳推理和常识推理任务上的表现要么优于要么匹配少样本 CoT。这表明可以排除为少样本或手动 CoT 策划训练数据点的步骤。
2.6 复杂思维链(Complex Chain-of-Thought, Complex CoT)
Fu 等人(2022)介绍了一种新的提示策略,旨在选择复杂数据点提示而不是更简单的提示。这里定义的数据点的复杂性是通过涉及的推理步骤数量来衡量的。作者假设,如果使用复杂数据点作为上下文训练示例,可以增加 LLMs 的推理性能,因为它们已经包含了更简单的数据点。Complex CoT 除了使用复杂数据点作为训练示例外,另一个重要方面是,在解码过程中,就像自洽性一样,在 N 个采样的推理链中,选择前 K 个最复杂链的多数答案作为最终答案。本文还介绍了另一种基线提示方法,称为随机 CoT。在随机 CoT 中,数据点是随机采样的,而不考虑它们的复杂性。Complex CoT 在数学问题解决、常识推理、基于表格的数学问题解决和多跳推理任务的各种数据集上平均提高了 5.3% 的准确率,最高可达 18%。
2.7 思维程序(Program-of-Thoughts, POT)
Chen 等人(2022a)在 CoT 的基础上构建,与 CoT 使用 LLMs 执行推理和计算不同,POT 生成 Python 程序,从而将计算部分交给 Python 解释器。这项工作认为,减少 LLMs 的责任使其在数值推理方面更准确。POT 在数学问题解决、基于表格的数学问题解决、上下文问答和对话上下文问答任务上比 CoT 平均提高了约 12% 的性能。
Zhou 等人(2022)的提示技术试图解决 CoT 在准确解决比示例更难的问题时失败的问题。它包括两个阶段。首先,LLM 被提示将给定问题分解为子问题。接下来,LLM 被提示按顺序解决子问题。任何子问题的答案都依赖于前一个子问题的答案。作者表明,Least-to-Most 提示在常识推理、基于语言的任务完成、数学问题解决和上下文问答任务上显著优于 CoT 和基础提示方法。
2.9 符号链(Chain-of-Symbol, CoS)
Hu 等人(2023)在 CoT 的基础上构建。在传统的 CoT 中,中间推理步骤以自然语言表达。这种方法在许多情况下都取得了显著的结果,但可能包含错误或冗余信息。本文的作者提出假设,空间描述在自然语言中难以表达,这使得 LLMs 难以理解。相反,使用符号在单词序列中表达这些关系可能是 LLMs 更好的表示形式。CoS 在空间问答任务上实现了高达 60.8% 的准确率提升。
2.10 结构化思维链(Structured Chain-of-Thought, SCoT)
SCoT 背后的直觉是(Li et al., 2023b),使用程序结构如序列化、分支和循环来结构化中间推理步骤,比在传统 CoT 中使用自然语言的中间推理步骤更有助于更准确的代码生成。作者声称前者比后者更接近人类开发人员的思维过程,并且最终结果证实了这一点,SCoT 在代码生成任务上比 CoT 高出最多 13.79%。
2.11 计划与解决(Plan-and-Solve, PS)
Wang 等人(2023)讨论并试图解决 CoT 的三个缺点:计算错误、遗漏步骤错误和语义理解错误。PS 包含两个组成部分,其中第一个部分需要制定一个计划,将整个问题分解为更小的子问题;第二个部分需要根据计划执行这些子问题。一个更好的 PS 版本称为 PS+,它增加了更详细的指令,有助于提高推理步骤的质量。PS 提示方法在零样本设置下几乎所有数学问题解决任务的数据集上比 CoT 至少提高了 5% 的准确率。同样,在常识推理任务中,它在零样本设置下至少比 CoT 提高了 5%,而在多跳推理任务中,它的准确率大约提高了 2%。
Imani 等人(2023)试图解决 CoT 在数学问题解决任务中的两个关键问题:(1)CoT 解决问题所遵循步骤的有效性缺乏;(2)LLM 对其预测的置信度如何。MathPrompter 提示策略总共包括 4 个步骤。(I)给定一个查询,第一步需要为查询生成一个代数表达式,将数值替换为变量。(II)接下来,LLM 被提示通过推导出代数表达式或编写 Python 函数来解析解决查询。(III)第三步,通过给变量分配不同的值来解决第一步中的查询。(IV)如果第三步在 N 次迭代中的解决方案是正确的,那么变量最终被替换为原始查询值并计算答案。如果不是,那么重复步骤(II)、(III)和(IV)。MathPrompter 能够在数学问题解决任务的数据集上将性能从 78.7% 提高到 92.5%。
2.13 对比思维链/对比自洽性(Contrastive Chain-of-Thought/Contrastive Self-Consistency)
Chia 等人(2023)的作者声称,对比思维链或对比自洽性是对传统思维链或自洽性的一般性增强。这种提示方法的灵感来自于人类如何从正面和负面例子中学习。同样地,在这种提示技术中,提供正面和负面的示例以增强 LLMs 的推理能力。对比思维链在多个数据集上平均能够为数学问题解决任务带来 10% 的改进。类似地,对比自洽性在多个数据集上能够比传统自洽性在数学问题解决任务上高出超过 15%。对于多跳推理任务,对比思维链和对比自洽性都比它们的传统对应物提高了超过 10%。
2.14 联邦化相同/不同参数自洽性/思维链(Federated Same/Different Parameter Self-Consistency/Chain-of-Thought, FED-SP/DP-SC/COT)
Liu 等人(2023)介绍的这种提示方法基于使用同义词众包查询来提高 LLMs 推理能力的核心思想。这种提示方法有两种略有不同的变体。第一种是 Fed-SP-SC,其中众包查询是原始查询的释义版本,但具有相同的参数。在这里,参数可以指数学问题解决任务数据点中的数值。对于 Fed-SP-SC,首先直接生成答案,然后在此之上应用自洽性。另一个是 Fed-DP-CoT。在 Fed-DP-CoT 中,LLMs 首先用于生成对不同查询的答案,然后通过形成思维链来为 LLMs 提供提示。这些方法在数学问题解决任务上的结果表明,它们能够比传统 CoT 至少提高 10%,最高可达 20%。
2.15 类比推理(Analogical Reasoning)
Yasunaga 等人(2023)的工作从心理学概念类比推理中汲取灵感,人们使用相关的以往经验来解决新问题。在 LLMs 的领域中,作者首先提示它们生成与原始问题相似的例子,然后解决它们,再继续回答原始问题。结果表明,类比推理在与 CoT 相比时,在数学问题解决、代码生成、逻辑推理和常识推理任务上平均能够实现 4% 的准确率提升。
2.16 合成提示(Synthetic Prompting)
Shao 等人(2023)提出了使用 LLMs 生成合成示例的合成提示,这些示例被增强并添加到传统少样本设置中看到的现有手工制作示例中。这种提示方法包括两个步骤:(1)后向步骤,其中 LLM 基于自生成的思维链合成查询;(2)前向步骤,其中 LLM 为合成的查询生成思维链,使思维链更准确。最后,为了选择最佳示例,这项工作使用簇内复杂度和最长推理链的最复杂示例在推理中使用。结果表明,合成提示在与不同数学问题解决、常识推理和逻辑推理任务数据集的实验中实现了高达 15.6% 的绝对增益。
2.17 思维树(Tree-of-Thoughts, ToT)
Yao 等人(2024)的思维树提示技术源自于这样一种观点,即任何问题解决都需要通过搜索表示为树的组合空间,其中每个节点代表一个部分解决方案,每个分支对应于修改它的运算符。现在,选择哪个分支的决定是由帮助导航问题空间并引导问题解决者朝着解决方案前进的启发式方法确定的。基于这个想法,作者提出了 ToT,它积极维护一个思维树,其中每个思维是作为问题解决的中间推理步骤的连贯语言序列。这个框架允许 LLMs 在尝试解决问题时评估由思维生成的进展。ToT 进一步结合了搜索技术,如广度优先或深度优先搜索,与模型生成和评估思维的能力。ToT 在数学问题解决任务上的成功率比 CoT 提高了 65%,在不同的逻辑推理任务数据集上提高了约 40%。ToT 在自由响应任务上的一致性得分为 7.56,而 CoT 平均只有 6.93。
2.18 逻辑思考(Logical Thoughts, LOT)
在这项工作中(Zhao et al., 2023b),作者们研究了使用逻辑等价以提高 LLMs 零样本推理能力的方法。除了允许 LLMs 逐步推理外,LOT 还允许 LLMs 根据归谬法原则逐步验证,并在需要时修正推理链以确保有效的推理。LOT 能够在数学问题解决任务上超过 CoT 最多 3.7%,常识推理任务上最多 16.2%,逻辑推理任务上最多 2.5%,因果推理任务上最多 15.8%,社会推理任务上最多 10% 的准确率。
2.19 助产士提示(Maieutic Prompting)
通过使用深度递归推理来引出各种假设的演绎性解释,Jung 等人(2022)的助产士提示鼓励 LLM 产生一致的响应,通过协作消除相互矛盾的替代方案。助产士提示的生成过程衍生出一个生成命题的树状结构,其中一个命题为另一个命题的正确性建立逻辑基础。最后,为了推断原始查询的答案,测量 LLM 相信每个命题的程度以及助产士树中命题之间的逻辑联系。助产士提示在常识推理任务上的结果表明,与基础提示、CoT、自洽性和 GKP Liu 等人(2021)相比,它能够实现高达 20% 的更好准确率,同时与监督模型表现竞争。
2.20 验证与编辑(Verify-and-Edit, VE)
Zhao 等人(2023a)专注于开发一种技术,可以对 CoT 生成的推理链进行后续编辑,以获得更符合事实的输出。该方法包括三个阶段:(1)决定何时编辑阶段,作者使用自洽性找到不确定的输出;(2)如何编辑理由阶段,作者通过从外部知识源搜索支持事实来编辑不确定输出的 CoT 推理链;(3)推理阶段,使用上一阶段编辑的理由来得出最终答案。VE 在多跳推理任务上能够比 CoT、自洽性和基础提示高出最多 10%,在真实性任务上高出最多 2%。
2.21 推理 + 行动(Reason + Act, REACT)
Yao 等人(2022b)提出了 REACT,它结合了推理和行动,使 LLM 能够解决多样的语言推理和决策任务。为了使模型能够进行动态推理,构建和修改高层次的行动计划(推理以行动),REACT 提示 LLM 以交错的方式生成与任务相关的口头推理轨迹和行动。Yao 等人(2022b)讨论了一种类似于 REACT 的提示方法,称为 Act,它基本上去除了 REACT 轨迹中的思想或推理,但在所有讨论的任务中表现次优。对于多跳推理和真实性任务,REACT 能够比基础提示表现得更好,并且与 CoT 竞争。当 REACT 与 CoT 或自洽性结合时,它能够获得比 CoT 更好的结果。对于基于语言的任务完成任务,REACT 在不同数据集上的成功率分别提高了超过 10%。
Diao 等人(2023)提出了活跃提示,以帮助 LLM 通过识别最相关的数据点作为示例,在少样本设置中适应不同任务。活跃提示是一种四步技术。第一步,LLM 被提示对训练集中的每个查询进行 k 次提示,生成 k 个可能的答案及其相应的推理链。下一步需要基于第一步生成的答案计算不确定性度量。第三步,选择前 n 个最不确定的查询并由人工进行注释。最后一步,使用新注释的示例对测试数据进行少样本提示。作者还介绍了活跃提示的不同版本,称为随机 CoT,其中在第三步中,选择前 n 个查询是基于随机选择而不是基于不确定性度量。结果表明,活跃提示在多个数据集上的数学问题解决、常识推理、多跳推理、常识推理任务中比自洽性、CoT、自动 CoT 和随机 CoT 获得更好的结果。
2.23 思维线索(Thread-of-Thought, THOT)
Zhou 等人(2023)提出了一种专注于处理长篇混乱上下文的提示方法。它基于这样一个想法:人们在处理大量信息时保持一种不间断的思维流,这使得他们能够选择性地提取相关数据并排除不相关的信息。在文档的不同部分之间平衡注意力对于准确解释和响应提供的信息至关重要。THOT 包括两个步骤。第一步要求 LLM 分析和总结上下文的不同部分。第二步,LLM 被提示根据第一步的输出回答所提出的问题。THOT 能够通过在上下文无关问答任务中实现约 0.56 的精确匹配得分,超越了 CoT 和基础促进技术。对于对话系统任务,THOT 能够获得最高的平均得分 3.8,再次超越了其他讨论的提示技术。
2.24 隐式检索增强生成(Implicit Retrieval Augmented Generation, Implicit RAG)
与传统的 RAG Lewis 等人(2020)相反,隐式 RAG Vatsal 和 Singh(2024);Vatsal 等人(2024)要求 LLM 自己从给定的上下文中检索重要的部分或部分,然后继续回答所提出的问题。这种技术需要调整两个超参数。第一个是提取的部分数量,第二个是每个部分中的单词数量。隐式 RAG 在 Vatsal 等人(2024)的患者病例报告数据集上实现了 SoTA 结果,而在 Vatsal 和 Singh(2024)的生物医学上下文问答任务数据集中实现了 SoTA 或接近 SoTA 的结果。
2.25 系统 2 注意力(System 2 Attention, S2A)
LLMs 在面对无关上下文时经常会做出错误的判断。Weston 和 Sukhbaatar(2023)尝试用两步提示策略解决这个问题。第一步指示 LLM 重新生成给定的上下文,以便重新生成的版本不包含可能对输出产生不利影响的任何无关部分。第二步则指示 LLM 使用第一步中重新生成的上下文产生最终响应。结果表明,S2A 能够在不同的真实性任务数据集上超越基础、CoT 和指导提示 Shi 等人(2023)。
2.26 指导提示(Instructed Prompting)
指导提示 Shi 等人(2023)再次围绕与 S2A 相同的理念,即解决 LLMs 被无关上下文分散注意力的问题。它只包括一个步骤,明确指示语言模型在问题描述中忽略无关信息。指导提示在真实性任务上能够实现 88.2 的标准化微准确率,并且能够超越所有它的对应物,包括 CoT、最少到最多、程序提示和自洽性。程序提示 Chowdhery 等人(2023)的策略在这里尝试通过编写 Python 程序来解决问题。稍后,通过使用外部 Python 解释器运行 Python 代码来验证编写的程序的正确性,以获得最终答案。
2.27 验证链(Chain-of-Verification, COVE)
LLMs 容易产生事实上不正确的信息,称为幻觉。Dhuliawala 等人(2023)的作者尝试通过 CoVe 解决幻觉问题并提高性能。CoVe 执行四个核心步骤。首先,LLM 为给定查询生成基线响应。其次,使用原始查询和第一步的基线响应,生成能够检查基线响应中是否有错误的验证查询列表。第三步,为第三步生成的所有验证查询生成答案。第四步,纠正第三步检测到的基线响应中的所有错误,并产生修订后的响应。结果表明,CoVe 能够在上下文无关问答、上下文问答和自由响应任务上至少比 CoT 和基础提示高出 10%。
2.28 知识链(Chain-of-Knowledge, COK)
与 CoVe 类似,Li 等人(2023c)尝试通过 COK 解决幻觉问题以获得更准确的结果。它是一种三阶段的提示技术。第一阶段是推理准备,在此阶段,给定一个查询,COK 准备几个初步的理由和答案,同时识别相关的知识领域。第二阶段是动态知识适应,如果答案中没有大多数共识,COK 会逐步更正理由,通过适应第一阶段识别的领域的知识。第三阶段是答案整合,使用第二阶段更正的理由作为最终答案整合的更好基础。CoVe 在上下文无关问答、基于表格的问答、多跳推理和真实性任务上超越了 CoT、自洽性、VE 和基础提示,并且分别至少提高了 3%、3%、1% 和 1%。
2.29 代码链(Chain-of-Code, COC)
在这项工作中(Li et al., 2023a),作者提出了一个扩展,使 LLM 的代码导向推理更好。在这里,LLM 不仅编写程序代码,还选择性地模拟解释器,产生某些代码行的预期输出,这些代码行不能由解释器实际执行。主要思想是激励 LLM 将程序中的语义子任务格式化为灵活的伪代码,这些伪代码可能在运行时被明确捕获并传递给 LLM 进行仿真,作者称其为 LMulator。实验表明 COC 在包括推荐系统、因果推理、常识推理、空间问答、情感/情绪理解、机器翻译、逻辑推理、基于表格的数学问题解决和数学问题解决等多种任务中都超越了 CoT 和其他基线。
2.30 程序辅助语言模型(Program-Aided Language Models, PAL)
Gao 等人(2023)提出了一种提示策略,使用 LLM 阅读自然语言问题并生成交错的自然语言和编程语言语句作为推理步骤。最后,使用 Python 解释器执行编程语句以获得答案。结果表明,PAL 在包括数学问题解决、基于表格的数学问题解决、常识推理和逻辑推理在内的多个 NLP 任务上,比 CoT 和基础提示表现得更好。
作者声称 Binder Cheng 等人(2022)是一种无需训练的神经符号技术,将输入映射到程序,该程序(I)使 LLM 功能的单个 API 绑定到编程语言(如 Python 或 SQL)以增加其语法覆盖范围并解决更广泛的问题;(II)在执行期间使用 LLM 作为底层模型以及程序解析器;(III)只需要少量的上下文样本注释。Binder 管道有两个阶段。首先,在解析阶段,LLM 根据查询和知识源将输入映射到程序。其次,在执行阶段,LLM 返回所选编程语言中的值,最后使用解释器运行程序。与需要显式训练或微调的先前方法相比,Binder 在基于表格的真实性和基于表格的问答任务上能够获得更好的准确性。
Ye 等人(2023)探索了 LLMs 的少样本学习理念,以分解证据和查询,进行高效的基于表格的推理。这种提示策略涉及三个重要步骤。它从将大型表格分解为与查询相关的较小子表格开始。接下来,使用 SQL 编程语言将复杂的自然语言查询分解为逻辑和数值计算。最后,使用前两个步骤中的子表格和子查询来以少样本设置得出最终答案。结果表明,Dater 在基于表格的真实性任务上能够比需要显式微调的先前方法至少提高 2%。同样,对于基于表格的问答任务,它能够比这些方法至少提高 1%。Dater 在上述两项任务上也比 Binder 表现得更好。
在 Wang 等人(2024)中,作者在著名的 CoT 提示技术上进行了构建,并将其引入到表格设置中。这种多步骤的表格提示方法导致更准确的表格理解。表格链是一种三步提示技术。第一步指示 LLM 通过上下文学习动态规划下一个表格操作。这里的操作可能包括从添加列到排序行的任何操作。第二步为选定的表格操作生成参数。前两个步骤有助于转换表格并创建各种中间表格表示,目标是回答原始查询。在最后一步中,使用前两个步骤中的最后一个表格表示来最终回答问题。表格链在基于表格的问答和基于表格的真实性任务上实现了 SoTA 性能。对于基于表格的问答任务,它比之前 SoTA 结果平均提高了约 3% 的性能;对于基于表格的真实性任务,它能够平均提高约 1.5% 的性能。
2.34 分解提示(Decomposed Prompting, Decomp)
Khot 等人(2022)提出了 Decomp 技术,将复杂问题分解为更简单的子问题,然后将这些子问题委托给具有自己提示和分解器的特定子问题的 LLMs,这些分解器可以进一步分解子问题。分解器可以采用层次分解、递归分解或进行外部 API 调用来解决子问题。Decomp 在常识推理任务上平均比 CoT 和最少到最多高出 25% 的精确匹配率。对于多跳推理任务,Decomp 在四个不同的数据集上轻松地超越了 CoT。
2.35 三跳推理(Three-Hop Reasoning, THOR)
Fei 等人(2023)的作者提出了 THOR,以模仿人类类似的推理过程,用于情感/情绪理解任务。THOR 包括三个步骤。第一步,LLM 被要求识别给定查询中提到的方面。接下来,基于前一步的输出和原始查询,LLM 被要求详细回答查询中嵌入的潜在观点。最后,将上述所有信息结合起来,LLM 被要求推断与给定查询相关的情感极性。THOR 能够在多个情感/情绪理解任务数据集上显著超越先前的 SoTA 监督和零样本模型。
2.36 元认知提示(Metacognitive Prompting, MP)
MP Wang 和 Zhao(2023)基于元认知概念,这是从认知心理学中衍生出来的,与个体对自己认知过程的意识和自我反思有关。它包括五个阶段。1)理解输入文本,2)做出初步判断,3)批判性地评估这个初步分析,4)伴随着推理解释做出最终决定,5)评估整个过程的信心水平。结果显示,MP 在多个 NLP 任务中始终优于 CoT 和 PS,包括释义、自然语言推理、上下文问答、词义消歧、命名实体识别、关系提取和多标签文本分类。
2.37 事件链(Chain-of-Event, COE)
Bao 等人(2024)为摘要任务提出了 COE。COE 有四个连续步骤。第一个步骤专注于特定事件提取。接下来,第一步中提取的事件被分析并概括成更简洁、更精炼的形式。第三步,概括的事件被过滤,只选择覆盖大部分文本的事件。在最后一步中,第三步中选择的事件根据它们的重要性的顺序进行整合。结果显示,COE 在两个摘要数据集上的表现优于 CoT,同时在 rouge 分数上也更简洁。
这是 Vatsal 等人(2024)讨论的一种提示方法。在这种方法中,基础提示指令通过添加基于假设的医学术语定义得到增强,即添加这些定义将帮助 LLM 在回答问题时获得更多上下文。但结果显示,这些术语定义并没有真正帮助,可能是因为它们的知识范围狭窄,可能与 LLM 的更大知识库发生冲突。此外,医学术语的定义可能会随着上下文的变化而变化,因此为医学术语固定定义并不能真正帮助 LLM,反而可能会让它们感到困惑。
2.39 基础 + 注释指南基础提示 + 错误分析基础提示
Hu 等人(2024)测试了 LLM 在临床命名实体识别任务中的能力。这种提示策略有三个不同的组成部分。基础部分告诉 LLM 关于任务的基本信息以及 LLM 应以何种格式输出结果。注释指南部分包含从注释指南中得出的实体定义和语言规则。错误分析部分在训练数据中使用 LLM 输出进行错误分析后,增加了额外的指令。作者还通过创建上述组成部分的不同组合,尝试了这种提示方法的不同版本。这种提示方法在多个命名实体识别任务的数据集上平均获得了 0.57 的精确匹配 F1 分数。
不同的研究论文在对数据集进行 NLP 任务分类时使用了不同的度量标准,这在不同的工作中不断变化。在本节中,我们尝试通过定义不同的 NLP 任务并将不同的数据集归入这些任务中,从而对这些先前分类方式进行标准化。我们进一步讨论了这些任务上应用的各种提示方法。图 1 显示了反映这一点的分类图。这里需要注意的一个重点是,一个数据集可能同时属于不同的 NLP 任务。但这可能导致对不同 NLP 任务上提示技术表现的结构化分析的复杂纠缠。因此,在我们的工作中,我们确保一个数据集只属于它最强关联的 NLP 任务。以下小节每个都定义了不同的 NLP 任务、相应的数据集和应用于这些数据集的各种提示策略。它们进一步包含了每个数据集的潜在 SoTA 提示技术。提示方法的表现因使用的 LLM 而异。因此,我们还包括了与给定数据集上的提示策略一起使用的 LLM 列表。对于 SoTA,我们只提到了提示方法的名称,因为在许多情况下,特定的 LLM 尚未与给定的提示方法一起进行实验,因此不清楚它是否能够实现 SoTA 表现。因此,如果任何 LLM 从 LLM 列表中与提示策略一起使用,并在给定数据集上实现了最佳表现,我们将其指定为 SoTA,而不管用于该技术的确切 LLM 是什么。同样,我们在列出 SoTA 时没有提到评估指标,因为它们可能因不同的研究论文而异。
这项任务衡量模型在非表格设置中执行任何数学计算的能力。我们在阅读不同提示方法时遇到的不同数据集包括 GSM8K、MATH、SVAMP、ASDiv、AQuA、MAWPS、MultiArith、AddSub、SingleEq、Game of 24、Multi-Step Arithmetic、GSM-HARD、SingleOp 和 MathQA。表 1 列出了上述数据集以及在它们上尝试的不同提示策略,以及表现最佳的提示策略。
逻辑推理任务检查模型的自然语言理解能力,以遵循一组命令和输入并解决给定问题。我们在阅读不同提示策略时涵盖的不同数据集包括 Word Sorting、Temporal Sequences、Formal Fallacies、Mini Crosswords、Object Counting、Logical Deduction、Boolean Expressions、Tracking Shuffled Objects、Web of Lies、Dyck Languages、Geometric Shapes 和 Repeat Copy Logic。表 2 包含了上述数据集和在它们上尝试的不同提示技术,以及表现最佳的提示方法。
与逻辑推理任务相反,常识推理任务衡量模型在人类常称为常识的实用知识方面的能力,以做出任何判断。它不涉及解决问题以得出答案。相反,它更多地是一种固有的一般知识形式。我们在调查不同提示方法时发现的各种数据集包括 Reasoning about Colored Objects、CSQA、Date Understanding、Sports Understanding、Last Letter Concatenation、Coin Flip、Odd One Out、Disambiguation QA、Hyperbaton、Com2Sense、CSQA 2.0、Creak Onoe 等人(2021)和 List Reversal。表 3 显示了上述数据集和在它们上尝试的不同提示策略,以及表现最佳的提示方法。
多跳推理任务评估模型将来自不同上下文部分的证据片段连接起来回答给定查询的能力。我们在阅读不同提示策略时涵盖的不同数据集包括 StrategyQA、HotpotQA、BambooGle、CommaQA-E、MuSiQue、2WikiMultihopQA。表 4 列出了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示策略。
因果推理任务检查模型处理因果关系的能力。我们在阅读不同提示技术时遇到的两个数据集是 Cause And Effect 和 Causal Judgement。表 5 显示了上述数据集和在它们上尝试的不同提示技术,以及表现最佳的提示方法。
这项任务测试模型推理人类社会互动的能力。我们在调查不同提示技术时只发现了一个数据集,即 SocialQA。表 6 包含了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示策略。
这项任务衡量模型仅依靠给定上下文回答问题的能力。我们在阅读不同提示方法时涵盖的不同数据集包括 ProcessBank、BioMRC、MASH-QA、CliCR、MultiSpanQA、FinQA、TAT-QA、Patient Case Reports、Drop 和 BoolQ。表 7 列出了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示技术。
与上下文问答任务相反,上下文无关问答任务依靠模型的内嵌知识库或任何开源知识库(如维基百科)来回答查询,而不是仅使用提供的上下文。我们在调查不同提示技术时发现的各种数据集包括 PopQA、EntityQ、Wikidata、Wiki-Category List、MedMCQA、MMLU Physics、MMLU Biology、USMLE Sample Exam、USMLE Self Assessments、MedQA、PubMedQA、MMLU 和 AI2 Reasoning Challenge。表 8 列出了上述数据集和在它们上尝试的不同提示策略,以及表现最佳的提示策略。
空间问答任务衡量模型处理空间推理的能力,这是一种基于构建空间对象、关系和转换的心理表征的认知过程。我们在阅读不同提示技术时遇到的各种数据集包括 Brick World、NLVR-Based Manipulation、Natural Language Navigation、Spartun 和 Navigate。表 9 包含了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示策略。
在这项任务中,模型的评估基于其对给定文本摘录的理解以及它如何能够回答以对话格式出现的一系列相互关联的查询。这里需要注意的一个关键是,每个查询可能依赖于之前查询的答案。我们在阅读不同提示方法时只涵盖了一个数据集,即 ConvFinQA。表 10 显示了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示策略。
对话系统任务检查模型在用户到机器的对话设置中执行语言生成的能力,或者在已经生成的对话中回答查询。可能的情况是,当对话上下文问答中的文本摘录变成对话时,这两个任务之间会有强烈的重叠,但根据我们在调查中遇到的数据集和提示技术,我们决定将这两个任务保持为单独的任务。我们在调查不同提示方法时只发现了一个数据集,即 Multi-Turn Conversation Response (MTCR)。表 11 列出了上述数据集和在它们上尝试的不同提示策略,以及表现最佳的提示技术。
这项任务涉及所有输入或最终输出到模型是编程语言代码的案例。我们在阅读不同提示策略时遇到的不同数据集包括 Codeforce Scraping、HumanEval、MBPP 和 MBCPP。表 12 包含了上述数据集和在它们上尝试的不同提示技术,以及表现最佳的提示策略。
这项任务评估模型在生成不受限制的文本响应方面的能力。我们在阅读不同提示方法时涵盖的各种数据集包括 Creative Writing 和 Longform Generation of Biographies。表 13 列出了上述数据集和在它们上尝试的不同提示策略,以及表现最佳的技术。
这项任务评估模型传达事实的能力,不传播任何形式的错误信息。这项任务并不代表模型理解给定上下文的能力,而是更侧重于它们不基于理解做出虚假陈述。我们在调查不同提示策略时发现的各种数据集包括 SycophancyEval、GSM-IC 和 Fever。表 14 显示了上述数据集和在它们上尝试的不同提示技术,以及表现最佳的提示技术。
这项任务是真实性任务的扩展,衡量模型在表格设置中传达事实的能力,不传播任何形式的错误信息。我们在阅读不同提示方法时遇到的唯一数据集是 TabFact。表 15 包含了上述数据集和在它们上尝试的不同提示策略,以及表现最佳的提示策略。
这项任务涉及在表格设置中的任何形式的问答。它可以被视为其他类型基于表格任务(如基于表格的真实性或基于表格的数学问题解决)的超集。但为了在这项工作中避免任何混淆,我们捕获了所有不属于更具体的基于表格任务(如基于表格的真实性或基于表格的数学问题解决)的数据集。我们在阅读不同提示策略时遇到的两个数据集是 FeTaQA 和 WikiTQP。表 16 显示了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示策略。
这项任务是数学问题解决任务的扩展,衡量模型在表格设置中执行任何数学计算的能力。我们在阅读不同提示技术时涵盖的不同数据集包括 TabMWP 和 Penguins in a Table。表 17 列出了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示策略。
这项任务衡量模型处理给定输入并从可能的项目列表中建议最相关项目集的能力。我们在调查不同提示技术时只发现了一个数据集,即 Movie Recommendation。表 18 列出了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示技术。
这项任务检查模型理解人类情感或情绪的能力。我们在阅读不同提示方法时遇到的各种数据集包括 Ruin Names、SemEval14 Laptop and Restaurant 和 Forex。表 19 包含了上述数据集和在它们上尝试的不同提示技术,以及表现最佳的提示策略。
在这项任务中,模型在两种语言之间的翻译能力受到测试。我们在阅读不同提示技术时遇到的各种数据集包括 Salient Translation Error Detection、FLORES、WMT21、Multi-Domain 和 PDC。表 20 列出了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示策略。
命名实体识别任务旨在识别给定输入文本中预定义类别或类别的对象。我们在调查不同提示技术时发现的不同数据集包括 MTSamples、VAERS、Research Papers 和 BC5CDR-chem。表 21 显示了上述数据集和在它们上尝试的不同提示策略,以及表现最佳的提示方法。
词义消歧任务检查模型在不同上下文环境中理解一个词不同含义的能力。我们在调查不同提示方法时只发现了一个数据集,即 WiC。表 22 显示了上述数据集和在它们上尝试的不同提示技术,以及表现最佳的提示方法。
这项任务测试模型将长篇输入文本分解为更小的块,同时确保这些更小的块中保留关键信息的能力。我们在阅读不同提示方法时只发现了一个数据集,即 CCTC。表 23 包含了上述数据集和在它们上尝试的不同提示技术,以及表现最佳的提示策略。
释义任务旨在使用不同的词语重写给定的输入文本,同时保持原始输入文本的真实语义。释义任务与摘要任务的主要区别在于,摘要任务的主要目标是缩短输出文本与输入文本的长度比,而释义任务只关注在重写过程中使用不同的词语。我们在调查不同提示方法时只发现了一个数据集,即 QQP。表 24 列出了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示技术。
这项任务评估模型从文本中确定作者对某个主题或目标或评估对象是支持还是反对的能力。我们在阅读不同提示技术时遇到的不同数据集包括 SemEval-2016、VAST 和 P-Stance。表 25 显示了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示技术。
这项任务的主要目标是确定给定前提条件下的假设是真实的(蕴含)、虚假的(矛盾)还是不确定的(中立)。我们在阅读不同提示方法时涵盖的不同数据集包括 QNLI 和 MedNLI。表 26 包含了上述数据集和在它们上尝试的不同提示策略,以及表现最佳的提示方法。
关系提取评估模型识别预定义类别或类别的对象或命名实体之间的语义关系的能力。我们在调查不同提示技术时只发现了一个数据集,即 DDI。表 27 显示了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示策略。
这项任务的主要目标是检查模型在遵循一系列基于语言的导航命令以决定其完成任务所需采取的行动方面的表现。我们在调查不同提示策略时发现的不同数据集包括 ALFWorld、WebShop、SayCan 和 Scan。表 28 列出了上述数据集和在它们上尝试的不同提示方法,以及表现最佳的提示方法。
这项任务衡量模型将每个输入分配到一组预定义目标标签的能力。这项任务可以涵盖许多上述任务,如立场检测、命名实体识别等,但为了使任务定义尽可能不重叠,以便更好地调查提示方法,我们只包括了那些不能适当归类到上述讨论的任何任务中的数据集。我们在阅读不同提示策略时涵盖的不同数据集包括 EUR-LEX、UNFAIR-ToS 和 LEDGAR。表 29 包含了上述数据集和在它们上尝试的不同提示策略,以及表现最佳的提示方法。
提示工程在当前 LLMs 领域中变得不可或缺。它在实现 LLMs 的全部潜力方面发挥着关键作用。在这项工作中,我们深入调查了 44 篇研究论文,讨论了 29 个不同 NLP 任务上的 39 种提示策略。我们通过分类图形象地展示了这一点。我们尝试将不同的数据集标准化为 29 个 NLP 任务,并讨论了最新的提示技术在这些任务上的整体效果,同时列出了每个数据集的潜在 SoTA 提示方法。