前言
在大型语言模型(LLM)的应用实践中,如何编写高质量的提示词(Prompt)是获取理想回答的关键。本文主要探讨在使用 ChatGPT 等大模型时,如何通过进阶的提示工程技巧来提升模型的推理能力,特别是针对逻辑、数学和算术等复杂场景。
了解了大模型提示词的基本原则并善用模板,能显著提升生产力。然而,面对复杂的推理任务,基础提示往往力不从心,需要引入更高级的策略。
题外话
在研究进阶 Prompt 的同时,社区中出现了许多所谓的'咒语'或自动化工具(如 Prompt Creator),旨在辅助完善提示词。虽然这些工具有一定参考价值,但理解底层原理才是掌握提示工程的核心。
大模型的能力缺陷与涌现能力
在面对逻辑推理、数学计算和算术应用场景中,基础的大模型表现往往无法满足需求。这引出了另一个重要概念:大模型的涌现能力。
大模型(LLM)的涌现能力,指的是模型未经过特定任务数据的训练,但在某些技术手段下,仍然能够解决特定领域问题的能力。
提示工程和微调同属对模型涌现能力的引导和优化方法。相比微调,提示工程成本更低、使用更加灵活,且对于提升模型在小语义空间内的复杂语义理解效果更好。这也是提示词工程兴起的根本原因。
One-shot 和 Few-shot 最早由 OpenAI 研究团队提出,不仅介绍了提示工程的两大核心方法,也详细阐述了背后的原理。
Zero-shot, One-shot & Few-shot 提示学习法
Zero-shot(零样本)
Zero-shot Prompt 使得我们在无需做特定训练的情况下,依然可以让大模型完成一些简单任务。我们无需提供额外数据或微调,在很多情况下能得到不错的效果。这是一种快速便捷的方式,适合验证新想法。
在简单的场景中,优先考虑 Zero-shot。
经典推理问题测试
在 Zero-shot 情况下,模型的逻辑推理能力较弱,通常只能处理线性运算过程。对于经典的四道推理题,模型往往只能正确回答第一个,其余答错。这说明模型的基础推理能力存在局限,需要进阶技术。
One-shot & Few-shot(少样本)
Few-shot 提示方法并不复杂,只需要将一些类似的问题 + 答案作为 prompt 的一部分进行输入即可。
Few-shot 的编写格式:
当需要输入多段问答作为提示词时,以 Q 作为问题的开头、A 作为回答的开头,
并且不同的问答对话需要换行以便于清晰展示。
示例的作用在于让模型模仿给定的模式。例如,在不带示例的情况下,模型可能无法输出期望结果;而在加入示例后,模型能明显得到预期的输出效果。
思维链提示法(Chain of Thought, CoT)
思维链(Chain of Thought)是一种提示工具,用于帮助语言模型进行复杂的推理和思考过程。它通过引导模型逐步解决问题,以一系列连贯的步骤展示推理的思路和逻辑关系。
基本思想是将推理过程分解为多个步骤,并在每个步骤中指导模型逐步进行推理。每个步骤都通过自然语言描述,使模型能够理解和执行每个推理阶段所需的操作。
具体而言,思维链提示通常由多个中间步骤组成,每个中间步骤解释了问题的一个方面或子问题。模型根据前一步的结果推断下一步。通过这种逐步推理,模型可以累积正确的推断。
Zero-shot-CoT 提示方法
Zero-shot-CoT 是在零样本提示下,通过修改提示词后缀激发模型的思维链。一种非常简单而有效的方式是在提示词尾部追加一句 "Let's think step by step"。
如果切换到中文语境,经过大量测试,结论表明:'请一步步进行推理并得出结论' 要远远好于 '请让我们一步步进行思考' 等类似的提示词语句。
Few-shot-CoT 提示方法
Zero-shot-CoT 是通过修改后缀激发思维链,而 Few-shot-CoT 则是通过编写思维链样本作为提示词,让模型学会思维链的推导方式,从而更好地完成推导任务。
思维链改良方法:Least-to-Most Prompting (LtM)
提出的背景
在谷歌大脑提出的 CoT 被验证能大幅提升推理能力后,另一团队发表了论文《LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS》,提出了 Least-to-Most (LtM) 提示方法。


