LLM 提示工程技巧总结
本文基于 Sahoo et al. (2024) 的最新研究成果,系统梳理大型语言模型(LLM)的核心提示工程技术。内容涵盖基础提示策略、推理与逻辑增强方法等多个维度,旨在帮助开发者理解并应用这些技术以提升模型表现。
1. 无需大量训练的新任务
1.1 零样本提示 (Zero-Shot Prompting)
零样本提示技术是 LLM 领域的一项重要创新,由 Radford et al. (2019) 提出。该技术使我们能够在缺乏大规模专门训练数据的情况下,通过巧妙设计的提示来引导模型执行新任务。这意味着,模型接收到的是任务的描述,而不是针对该任务的具体训练标签或资料。这项技术依赖于模型本身预训练的知识库,它可以利用这些提示来对新的任务作出反应和预测。
应用场景:
适用于通用分类、翻译、摘要等任务,当没有特定领域的标注数据时尤为有效。
示例:
Classify the text into neutral, negative or positive.
Text: I think the vacation is okay.
Sentiment:
输出:
Neutral
1.2 少样本提示 (Few-Shot Prompting)
Few-Shot Prompting 是由 Brown et al. (2020) 提出。与零样本提示相比,它透过提供少数输入输出范例,来帮助模型学习特定任务。论文中有描写到,通过精选的高质量范例,能够显著提升模型在执行复杂任务时的表现,尤其是在完全没有示例的情况下更为明显。
尽管这种方法效果显著,但由于需要更多的输入 token,可能会在处理长文本时遇到困难。此外,范例的挑选对于模型的最终表现至关重要,不恰当的范例选择可能会导致模型学习到不精确或有偏见的信息。
示例:
A "whatpu" is a small, furry animal native to Tanzania. An example of a sentence that uses
the word whatpu is:
We were traveling in Africa and we saw these very cute whatpus.
To do a "farduddle" means to jump up and down really fast. An example of a sentence that uses
the word farduddle is:
输出:
When we won the game, we all started to farduddle in celebration.
2. 推理与逻辑增强
在推理与逻辑领域,多种创新技术的诞生使 LLM 能够进行更加深入和复杂的思考过程。技术如 Chain-of-Thought (CoT)、Automatic Chain-of-Thought (Auto-CoT)、Self-Consistency、Logical CoT 等,都旨在促进模型以更结构化和逻辑性的方式处理信息,从而提高问题解决的准确性和深度。
2.1 思维链提示 (Chain-of-Thought Prompting)
为了克服 LLM 在处理复杂推理任务方面的限制,Wei et al. (2022) 提出了一种称为 CoT 的创新方法。该技术通过引入一种特殊的提示策略,旨在促进模型进行更为连续和逐步的思考过程。相较于传统的提示方法,连贯思考技术的主要贡献在于能够更有效地激发 LLM 产出结构化且深入考虑的回答。
通过一系列实验,这一技术证明了其在促进模型执行逻辑推理中的独特效用,特别是在使模型对问题进行更深层次理解的方面。例如,它能详细描绘出解决复杂数学问题所需的逻辑步骤,这一过程非常类似于人类的解题思维。利用 CoT,研究者们在使用 PaLM 540B 模型进行的数学及常识推理测试中,达到了空前的准确率,高达 90.2%。

2.2 自动思维链提示 (Auto-CoT Prompting)
建立手动的 CoT 范例虽然可以提高模型的推理能力,但这个过程既耗时又效率低下。为了解决这一问题,Zhang et al. (2022) 提出了 Auto-CoT 技术。这项技术能够自动生成「让我们一步步来思考」式的提示,从而协助大型语言模型形成推理链。
此技术尤其关注于避免单一推理链中可能发生的错误,通过多样化的样本生成来提升整体的稳定性。它能够针对各种问题产生多个独特的推理链,并将它们组合成一个终极范例集合。这种自动化和多样化的样本生成方法有效地降低了出错率,提升了少样本学习的效率,并避免了手工构建 CoT 的繁琐工作。应用这种技术后,在使用 GPT-3 进行的算术和符号推理任务测试中,相比于传统的 CoT,准确率分别提高了 1.33% 和 1.5%。

2.3 自洽性 (Self-Consistency)
Wang et al. (2022) 提出了一种新型解码策略-- Self-Consistency,其目标在于「取代链式思考提示中使用的天真贪婪解码」。Self-Consistency 方法从语言模型的 decoder 中提取多条不同的推理路径,从而生成多种可能的推理链。然后,通过综合这些推理链来寻找最为一致的答案。
此策略建立在一个观点之上:那些需要深度分析的问题通常具有更多的推理路径,从而增加找到正确答案的可能性。将 Self-Consistency 与 CoT 结合使用,在多个标准测试中都达到了明显的准确率提升,如在 GSM8K 测试中提高了 17.9%,在 SVAMP 测试中提高了 11.0%,在 AQuA 测试中提高了 12.2 %,在 StrategyQA 测试中提高了 6.4%,以及在 ARC 挑战中提高了 3.9%。

2.4 逻辑思维链提示 (LogiCoT Prompting)
对于 LLM 来说,具备进行逻辑推理的能力,是对于解答跨领域的复杂多步问题的重要关键。Zhao et al. (2023) 提出的 LogiCoT,与之前的逐步推理方法 (例如 CoT) 相比,引入了一个全新的框架。该框架吸取了 symbolic logic 的精髓,以一种更加结构化和条理清晰的方式来增强推理过程。
特别是,LogiCoT 采用了反证法这一策略,也就是通过证明某一推理步骤若导致矛盾则该步骤错误,从而来核查和纠正模型产生的推理步骤。这一「思考 - 核验 - 修正」的循环流程,有效地降低了逻辑错误和不正确的假设。在 Vicuna-33b 和 GPT-4 的测试中,LogiCoT 对推理能力的提升显著,相比传统 CoT,在 GSM8K 资料集上的准确率分别提升了 0.16% 和 1.42%,在 AQuA 资料集上则提升了 3.15% 和 2.75%。

2.5 符号思维链提示 (CoS Prompting)
当面临涉及复杂空间关系的任务时,LLM 经常遇到挑战,部分原因是它们依赖于容易模糊且可能带有偏见的自然语言。为了克服这一限制,Hu et al. (2023) 提出了 CoS 的新方法。这种方法选择不使用自然语言,而是采用简化的符号作为提示,其优势在于使提示变得更加清晰、简洁,同时显著提高了模型处理空间关系问题的能力,也使得模型的运作原理更易于被人理解。
然而,CoS 技术在可扩展性、适用范围、与其他技术的整合,以及基于符号的推理解释性方面,仍存在一定的挑战。值得注意的是,使用 CoS 技术后,ChatGPT 在 Brick World 空间任务的准确率显著提升,从 31.8% 跃升至 92.6%。此外,在简化提示的过程中,所需的符号数量也减少了高达 65.8%,这不仅提升了效率,而且保持了高准确性。

2.6 思维树提示 (Tree-of-Thoughts Prompting)
Yao et al. (2023) 与 Long (2023) 提出了称为 ToT 的新型提示框架,旨在增强模型在处理需要深度探索和前瞻性思考的复杂任务上的能力。ToT 在现有提示方法的基础上作了进一步的扩展,通过创建一个包含中间推理步骤的树状结构来实现,这些步骤被称作「思维」。每一「思维」代表着朝向最终答案前进的一系列连贯语言序列。
这种结构让语言模型能够针对解决问题的进展,有目的地评估这些「思维」。ToT 透过整合产生及评估「思维」的功能与搜索算法 (如宽度优先搜索或深度优先搜索),实现了对推理过程的系统性探索。这使得模型能在找到有潜力的解决方案时进行拓展,或在遇到错误时进行回溯。在「24 点游戏」这一任务上,ToT 的效能尤为显著,成功率高达 74%,大幅超过传统方法的 4%。此外,在处理单词级任务时,ToT 也表现出色,其成功率达到 60%,明显高于传统方法的 16%。

2.7 思维图提示 (Graph-of-Thoughts Prompting)
我们的思考过程往往是非线性的,并非一步接一步地推进,这给基于传统的 ToT 方法带来了挑战。针对这一点,Yao et al. (2023) 提出了一种创新的「图思维」(GoT) 提示方法。该方法通过构建思维图谱来模拟人类大脑的非线性思考模式,使得在不同的思维路径之间可以自由跳跃、回溯和整合资讯。
这使得从多个角度进行思考成为可能,从而突破了传统线性思维的局限。GoT 的核心创新在于将推理过程视为一个有方向的图结构,并通过灵活的模块化设计来支持思维的多样化转换。这种方法不仅更加贴近人类的思考模式,还显著增强了模型在处理复杂问题上的能力。实际应用中,GoT 相比于传统的连贯思考 (CoT) 提示,在多个任务上展现出显著的效能提升。例如,在 GSM8K 资料集上,T5-base 和 T5-large 模型的准确率分别提升了 3.41% 和 5.08%。同时,在 ScienceQA 上,相较于最先进的多模态 CoT 方法,准确率分别增加了 6.63% 和 1.09%。

2.8 系统 2 注意力提示 (System 2 Attention Prompting)
在 LLM 的应用中,soft attention 有时会吸引不相关的信息,这可能会降低模型生成答案的准确度。为了克服这一挑战,Weston and Sukhbaatar (2023) 提出了一种称为 S2A 的创新方法。这种方法通过重构输入的上下文,让模型能够集中于最关键的信息部分,从而显著提高了信息处理的质量和回应的相关性。
S2A 特别通过一个两阶段过程来改进注意力机制和提高回答质量— — 首先是对上下文的重新生成,接着是在这个精炼的上下文上进行答案的生成。这个方法在包括事实性问答、长文本生成和解决数学问题等多个任务上进行了测试。在事实性问答任务中,S2A 达到了 80.3% 的高准确率,明显提升了信息的准确性;而在长文本生成方面,它同样提升了文本的客观性,其得分达到 3.82 分(满分为 5 分)。

2.9 思考线程提示 (Thread of Thought Prompting)
Zhou et al. (2023) 提出的 ThoT,这是专为提高 LLM 在处理复杂情境下的推理能力而设计的技术。这一方法模仿人类的思考过程,通过将复杂的情境分解成更小、更易于管理的部分来逐步进行分析。它采用了一种双阶段策略,即首先对每一个小部分进行概括和审视,随后进一步细化资讯以得出最终的答案。
ThoT 的灵活性是其一大亮点,使其能够作为一个多功能的「即插即用」组件,有效地提升了多种模型和提示技术的推理效率。在对问答和对话类资料集进行测试时,特别是在复杂的情境中,ThoT 展现了显著的效能提升,分别达到了 47.20% 和 17.8%。

2.10 表格链式提示 (Chain-of-Table Prompting)
传统的方法如 CoT、PoT 和 ToT 在展示推理步骤时,多依赖于自由文本或程式码形式,这在处理复杂表格资料时往往会遇到挑战。针对这一问题,Wang et al. (2024) 开发了一种创新的表格链式 (Chain-of-Table) 提示方法。该方法通过对表格进行逐步的 SQL/DataFrame 操作,实现了动态的表格推理过程,其中每一次的迭代都旨在改善中间结果,从而提升了 LLM 利用逻辑推理链进行预测的能力。
值得注意的是,表格链式提示方法在 TabFact 和 WikiTQ 这两个标准的表格资料集上实现了显著的效能提升,分别达到了 8.69% 和 6.72%。

3. 最佳实践与总结
在实际开发中,选择合适的提示工程策略至关重要。以下是针对不同场景的建议:
- 简单任务:优先尝试 Zero-Shot Prompting,减少 Token 消耗。
- 复杂推理:必须使用 Chain-of-Thought 或其变体(如 Auto-CoT),以获得更高的准确率。
- 空间关系处理:考虑使用 CoS 符号化提示,以提高精确度。
- 多步规划:Tree-of-Thoughts (ToT) 适合需要回溯和探索的任务。
- 表格数据处理:Chain-of-Table 是处理结构化数据的最佳选择。
随着大模型技术的发展,提示工程已成为连接用户意图与模型能力的桥梁。掌握上述技巧,能够帮助开发者更高效地构建智能应用。