大型语言模型中的提示工程系统综述:技术与应用

摘要

提示工程已成为扩展大型语言模型(LLMs)和视觉语言模型(VLMs)能力的不可或缺的技术。这种方法利用任务特定的指令(称为prompt),在不修改核心模型参数的情况下增强模型效能。与更新模型参数不同,prompt 仅通过给定指令即可引出所需的模型行为,从而实现预训练模型在下游任务中的无缝集成。prompt 可以是提供上下文以引导模型的自然语言指令,也可以是激活相关知识的学习向量表示。这一新兴领域已在诸如问答、常识推理等多种应用中取得了成功。然而,目前仍缺乏对提示工程中各种方法和技术的系统组织与理解。本文通过按应用领域分类,提供对提示工程近期进展的结构化综述以填补这一空白。对于每种提示方法,我们提供一份摘要,详细说明其提示方式、适用任务、所用模型及使用的数据集。我们还探讨了每种方法的优缺点,并附上分类图与总结表格,概述各提示技术所使用的数据集、模型及关键要点。本系统性分析有助于深入理解该快速发展的领域,并通过揭示提示工程中的未解挑战与潜在机会,为未来研究提供指引。

1 引言

提示工程已成为增强预训练大型语言模型(LLMs)和视觉语言模型(VLMs)能力的重要技术。它涉及对任务特定指令(即 prompt)的策略性设计,以在不更改模型参数的前提下引导模型输出。提示工程的重要性体现在其对LLMs和VLMs适应能力的变革性影响上。通过精心构造的指令机制,提示工程使这些模型能够在各种任务和领域中表现出色。这种适应性不同于传统范式,后者往往需要针对特定任务重新训练或进行大规模微调。这正是提示工程的变革性承诺,它突破了人工智能的边界,开启了充满可能性的未来。在持续演变的研究格局中,提示工程不断涌现出创新方法和应用。

提示工程之所以重要,是因为它能够引导模型响应,从而提升LLMs在各个领域的适应性与应用价值。当今提示工程的技术谱系广泛,从基础方法如零样本提示(zero-shot prompting)和少样本提示(few-shot prompting),到更复杂的方式如"代码链式"提示(chain of code prompting)等。提示工程这一概念最初在LLMs中被研究并推广(Liu et al., 2023;Tonmoy et al., 2024;Chen et al., 2023),随后扩展到VLMs(Wu et al., 2023;Bahng et al., 2022)。尽管LLMs和VLMs中关于提示工程的文献丰富,但在以应用为中心的提示工程技术方面,仍存在显著的系统性综述空白。

随着提示工程的迅猛发展,迫切需要一份全面的综述,深入理解当前研究中的应用与进展。本文深入分析提示工程快速演进的格局,涵盖按应用划分的29种提示技术。我们采用系统综述方法,详细探讨各类前沿提示方法的细节,分析其应用场景、所用语言模型及实验中使用的数据集,提供对提示工程发展态势的详尽洞察。同时,我们也探讨这些技术的优劣势,比较其相对有效性,并提出一套完整的分类图,揭示各技术如何在LLMs的广阔能力空间中展开。

从语言生成与问答,到代码生成与推理任务,提示工程使LLMs具备了过去难以想象的能力。通过填补现有文献空白,本综述旨在为研究者和实践者提供有价值的参考,帮助其了解最新发展,深入掌握提示工程不断演进的格局。本文结构安排如下:第2节根据应用领域,介绍从基础到高级的提示工程技术;第3节总结全文并探讨未来研究方向。

2 提示工程

在本节中,我们根据应用领域对 prompt engineering 技术进行了整理,并简要概述了从 zero-shot prompting 到最新进展的 prompt 技术演变过程。

2.1 新任务无需大量训练

Zero-Shot 提示

Zero-shot prompting 为利用大型 LLM 提供了一种范式转变。这种技术 [Radford et al., 2019] 省去了大量训练数据的需求,而是依赖精心设计的 prompt 来引导模型完成新任务。具体来说,模型在 prompt 中接收到任务描述,但没有用于特定输入-输出映射训练的标注数据。然后模型利用其已有知识,根据给定的 prompt 对新任务进行预测。

Few-Shot 提示

Few-shot prompting 向模型提供少量输入-输出示例,以引导其理解给定任务,这与 zero-shot prompting 不同,后者不提供任何示例 [Brown et al., 2020]。即使是少量高质量示例的提供,也已被证明在复杂任务上比不提供示例时有更好的模型表现。然而,few-shot prompting 需要额外的 token 来包含这些示例,对于较长文本输入来说可能变得不可行。此外,prompt 示例的选择和组成会显著影响模型行为,并且诸如偏好高频词汇等偏差仍可能影响 few-shot 的结果。虽然 few-shot prompting 提升了大型预训练模型(如 GPT-3)在复杂任务中的能力,但要实现最优性能并减轻模型偏差的影响,仍需谨慎设计 prompt。

2.2 推理与逻辑

Chain-of-Thought (CoT) Prompting

LLM 在面对复杂推理时常常表现不佳,限制了其潜力。为弥合这一差距,[Wei et al., 2022] 提出了 Chain-of-Thought (CoT) prompting,这是一种促进连贯、逐步推理过程的 prompting 技术。其主要贡献在于提出并探索了 CoT prompting,展示了该技术在引导 LLM 生成结构化且有逻辑的响应方面相较传统 prompt 更具成效。通过一系列实验,作者展示了 CoT prompting 的独特优势,强调其引导 LLM 沿着逻辑链推理的能力。例如,在 prompt 中展示多步骤数学文字题的推理过程和最终答案,模仿人类如何将问题分解为逻辑中间步骤。作者在使用 CoT prompt 对 PaLM 540B 进行实验时,在数学和常识推理基准测试中取得了 90.2% 的准确率,达到了 state-of-the-art 的水平。

自动思维链提示

高质量 CoT 示例的手动构建既耗时又不理想。[Zhang et al., 2022] 引入了 Auto-CoT,通过自动使用 "Let's think step-by-step" 的 prompt 来生成推理链,从而对 LLM 进行指导。考虑到单个生成链可能存在错误,Auto-CoT 通过多样化采样增强鲁棒性。它对多个问题进行采样,并为每个问题生成多个不同的推理链,从而构建出最终的示例集。这种自动化的多样性采样减少了错误,并提升了 few-shot 学习性能,省去了人工构建推理链的繁琐工作。Auto-CoT 在使用 GPT-3 时,在算术和符号推理任务上的平均准确率分别提高了 1.33% 和 1.5%,超过了 CoT 模式。

自洽性

Wang et al., 2022\] 提出了 self-consistency,一种相较于 CoT prompting 中贪婪解码更能提升推理性能的解码策略。对于具有多种有效路径的复杂推理任务,self-consistency 通过对语言模型的解码器进行采样,生成多个多样化的推理链。随后通过对这些链的最终答案进行边缘化处理,识别出最一致的答案。该方法利用了一个观察结果:需要深入分析的问题通常伴随更多样的推理过程,最终导向正确解。将 self-consistency 与 chain-of-thought prompting 结合,在多个基准测试中显著提升了准确率:在 GSM8K 上提高了 17.9%,在 SVAMP 上提高了 11.0%,在 AQuA 上提高了 12.2%,在 StrategyQA 上提高了 6.4%,在 ARC-challenge 上提高了 3.9%,相较于 CoT 基线均有明显优势。 **逻辑思维链提示** 具备逻辑推理能力对于 LLM 在多个领域中解决复杂多步骤问题至关重要。现有方法如 CoT prompting 鼓励逐步推理,但缺乏有效的验证机制。\[Zhao et al., 2023\] 提出了 Logical Chain-of-Thought (LogiCoT) prompting,一种融合符号逻辑原理的神经符号框架,旨在以连贯和结构化的方式增强模型推理能力。具体而言,LogiCoT 应用了"反证法"的概念来验证模型生成的每一步推理,并在发现错误时提供针对性反馈以修正错误步骤。LogiCoT 通过 "思考-验证-修正" 的循环过程,能够减少逻辑错误和幻觉。在 Vicuna-33b 和 GPT-4 的实验中,LogiCoT 显著增强了模型的推理能力,在 GSM8K 数据集上分别提升了 0.16% 和 1.42%,在 AQuA 数据集上分别提升了 3.15% 和 2.75%,相较于 CoT 均有所改善。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/14c5581cf9124388b48dea84accd197c.png) **符号链提示(Chain-of-Symbol,CoS Prompting)** 大型语言模型(LLMs)在处理复杂空间关系任务时常常表现不佳,原因在于它们依赖自然语言,而自然语言易受歧义和偏差影响。为克服这一限制,Hu 等人(2023)提出了 CoS,该方法使用简化符号代替自然语言。CoS 具有以下显著优势:提示更清晰简洁、显著提升 LLMs 的空间推理能力、并改善人类的可解释性。但 CoS 也面临一些挑战,例如可扩展性、泛化能力、与其他技术的整合能力以及基于符号的模型推理过程的可解释性。值得注意的是,CoS 的实现显著提升了 ChatGPT 在 Brick World 任务中的表现,准确率从 31.8% 提高至 92.6%。此外,CoS 将提示 token 数量最多减少了 65.8%,在保持高准确率的同时精简了推理流程。 **思维树提示(Tree-of-Thoughts,ToT Prompting)** Yao 等人(2023a)与 Long(2023)提出了 Tree-of-Thoughts(ToT)框架,以增强提示在复杂任务中的能力,特别是那些需要探索与前瞻性推理的任务。ToT 是对 CoT 提示的扩展,其通过管理中间推理步骤的树结构(称为"thoughts")来组织推理过程。每个 thought 是一段朝向最终解答推进的连贯语言序列。该结构使得语言模型可以有意识地推理,通过评估每个 thought 对问题解决进展的贡献来指导接下来的生成。ToT 将模型生成和评估 thought 的能力与搜索算法(如广度优先或深度优先)结合,使其能够系统性地探索推理链,并可前瞻性地扩展可能的方向,或在遇到错误解时回溯。ToT 在 Game of 24 任务中表现突出,成功率达到 74%,远超 CoT 的 4%;在词级任务中,ToT 的成功率为 60%,而 CoT 仅为 16%。 **思维图提示(Graph-of-Thoughts,GoT Prompting)** 人类思维过程的非线性特性对传统 CoT 提示的线性方式提出了挑战。为更好模拟人类非线性思维,Yao 等人(2023b)提出了"Graph of Thoughts"提示框架。这一图结构框架超越了传统的线性和树状结构,允许思想间的动态交互、回溯与评估,可整合并组合来自不同分支的 thought,从而更贴近人类思维方式。其核心贡献包括:将推理过程建模为有向图结构,并提供一个模块化架构,支持多种变换操作。该框架作为一种灵活且动态的提示方式,不仅能捕捉思维的复杂性,也进一步增强了模型能力。实验证明,在 GSM8K 数据集上,GoT 模型相较于 CoT 基线提升了 T5-base 模型 3.41%、T5-large 模型 5.08%;在 ScienceQA 数据集上相比多模态 CoT(Multimodal-CoT)提升了 T5-base 模型 6.63%、T5-large 模型 1.09%。 **系统2注意力提示(System 2 Attention,S2A Prompting)** Transformer 架构中基于 soft attention 的 LLMs 容易引入无关上下文信息,导致生成 token 的质量下降。为了解决这一问题,Weston 与 Sukhbaatar(2023)提出了 System 2 Attention(S2A),该方法利用 LLMs 的推理能力对上下文进行再生成,从而有选择地关注相关信息。S2A 通过一个两步流程增强注意力机制与生成质量:首先重建上下文,然后基于精炼后的上下文生成响应。S2A 在多个任务中表现优异,包括事实性问答、长文本生成和数学文字题。在事实问答中,S2A 达到 80.3% 的准确率,显示出对事实性的显著提升;在长文本生成中,也提升了客观性,获得 3.82/5 的评分。 **思维线程提示(Thread of Thought,ThoT Prompting)** Zhou 等人(2023)提出了 Thread of Thought(ThoT),这是一种专为增强 LLMs 在混乱上下文中推理能力而设计的提示技术。ThoT 受到人类认知机制启发,采用系统性方法将庞大的上下文分解为可管理的段落,逐步分析。这一方法包括两个阶段:模型首先总结并分析每个上下文片段,然后再整合并精炼信息以生成最终响应。ThoT 的灵活性使其可作为通用的"即插即用"模块,增强不同模型和提示方法的推理效果。在问答与对话数据集上的评估显示,ThoT 在混乱情境中将性能分别提升了 47.20% 和 17.8%。 **表格链提示(Chain-of-Table Prompting)** 传统方法如 CoT、PoT 和 ToT 使用自由文本或代码表示推理步骤,但在处理复杂表格场景时存在困难。Wang 等人(2024)提出了一种创新提示方法:Chain-of-Table。该方法通过动态生成并执行 SQL 或 DataFrame 操作,在表格上进行逐步推理。这种迭代过程增强了中间结果,使 LLMs 能够通过逻辑可视化的推理链做出预测。Chain-of-Table 在两个基准表格数据集上的表现显著提升:TabFact 上提升 8.69%,WikiTQ 上提升 6.72%。 ### 2.3 减少幻觉现象 **Retrieval Augmented Generation (RAG)** 尽管LLM在文本生成方面取得了突破性进展,但其依赖有限的、静态的训练数据,阻碍了其在需要外部知识的任务中的准确性。传统的prompting方法难以应对这类问题,往往需要代价高昂的再训练。Retrieval Augmented Generation(RAG)\[Lewis et al., 2020\]作为一种新颖的解决方案,将信息检索无缝融合到prompting过程中。RAG会分析用户输入、生成一个有针对性的查询,并在预构建的知识库中搜索相关资源。检索到的片段被纳入原始prompt中,从而提供丰富的上下文背景。这种增强后的prompt使LLM能够生成更具创造性、且事实准确的响应。RAG克服了静态知识的限制,对于需要最新知识的任务来说具有颠覆性的意义。RAG在ODQA基准测试中超越了seq2seq模型和任务特定架构,在TriviaQA和Natural Questions上分别达到了56.8%和44.5%的exact match得分。 **ReAct Prompting** 与将推理和行动分开处理的以往研究不同,ReAct \[Yao et al., 2022\]使LLM能够同时生成推理轨迹和任务特定的操作。这种交织的过程增强了推理与行动之间的协同作用,使模型能够在处理异常时进行推理、跟踪并更新行动计划。ReAct被应用于多种语言和决策任务中,表现出优于最先进基线的效果。特别是在问答(HotpotQA)和事实验证(Fever)任务中,ReAct通过与一个简单的Wikipedia API交互,有效解决了幻觉和错误传播问题,生成了更具可解释性的任务解决路径。此外,在交互式决策任务如ALFWorld和WebShop中,ReAct分别实现了34%和10%的成功率,超过了模仿学习和强化学习的方法,且仅使用了极少量的in-context示例。 **Chain-of-Verification (CoVe) Prompting** 为了解决LLM中的幻觉问题,\[Dhuliawala et al., 2023\]提出了Chain-of-Verification(CoVe),该方法包括系统性的四步流程:模型生成初步响应,规划验证性问题以检查自身回答,独立地回答这些问题,并在最后结合验证结果生成修正后的响应。通过这一多步骤、自我验证的过程,LLM增强了逻辑推理能力,并能在面对矛盾信息时减少错误。CoVe模拟了人类的验证方式,以增强LLM输出的连贯性与精确性。该方法在列表问题、问答任务和长文本生成实验中表现出显著成效,能够在保持事实的同时减少幻觉。聚焦的验证问题有助于模型识别并纠正自身的不准确性。 **Chain-of-Note (CoN) Prompting** 尽管retrieval-augmented language models(RALMs)通过引入外部知识来减少事实幻觉,但所检索信息的可靠性并不总是有保障,这可能导致误导性的回答。标准的RALMs难以评估其知识的充足性,往往无法在缺乏信息时做出"未知"的响应。为了解决这些问题,\[Yu et al., 2023\]提出了一种新方法,提升RALMs在处理嘈杂、无关文档时的鲁棒性,并准确识别无法回答的场景。CoN系统性地评估文档的相关性,强调关键和可靠的信息,从而过滤掉无关内容,生成更加精确和具有上下文相关性的响应。该方法在多个开放域问答数据集上的测试显示出显著提升:对于嘈杂检索文档的exact match得分平均提高了+7.9,对于超出预训练知识范围的问题拒答率提高了+10.5。 **Chain-of-Knowledge (CoK) Prompting** 传统的prompting技术虽然在基础任务上表现强大,但在面对复杂推理任务时效果下降,常出现事实幻觉和推理不透明的问题。这些限制源于对固定知识源的依赖、结构化查询生成效率低下,以及缺乏逐步修正机制,导致对LLM引导不足。受到人类问题解决策略的启发,CoK \[Li et al., 2023d\]将复杂任务系统性地分解为协调有序的多个步骤。其过程从详尽的推理准备阶段开始,建立上下文并对问题进行框定;随后进入动态知识适配阶段,模型从内部知识库、外部数据库以及用户prompt中多渠道收集证据。 **温馨提示:** 阅读全文请访问"**AI深语解构** " [大型语言模型中的提示工程系统综述:技术与应用](https://www.aizhuanlan.net/blog/detail/48fcab5f-9be7-46b2-89dc-ab2cb86c7201)