跳至内容

链式思维提示:用大语言模型进行逐步推理

通过我们的链式思维(CoT)提示指南,释放大语言模型(LLM)的全部潜力。了解如何增强 LLM 的推理与问题解决能力。
已更新 2026年10月6日  · 13分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

大语言模型(LLM)使用一种称为自回归的技术生成文本,它会基于前面的词来预测序列中最可能的下一个词。由 LLM 驱动的智能体(如 ChatGPT)还经过微调以遵循用户意图。因此,它们不仅会补全输入序列,还会把握用户在输入中的意图并据此生成响应。

如果您使用过一段时间的 ChatGPT,我相信您已经意识到,给定答案的质量也取决于用户输入的质量,例如,该智能体对某些查询给出的响应会比对另一些“更好”。

获得尽可能好的答案的秘诀在于理解 LLM 如何生成输出,并据此构建输入提示。对用户输入应用的一系列技术,用于充分挖掘模型潜力,被称为提示工程。

在本文中,我们将探讨最强大的提示工程技术之一:链式思维(CoT)提示。该技术通过以一种更易于模型完成需要推理或问题求解的复杂任务的方式来结构化提示。研究表明,没有 CoT 时,即使是同一个模型也无法给出正确答案。

模型的默认能力

尽管 LLM 以其泛化能力著称,模型能力取决于任务。使用 LLM 时,应考虑到每个模型都在庞大但有限的数据库上训练,并针对某些任务进行了优化。因此,模型在某些领域可能表现出色,但在其他领域可能失败。

模型能力也受时间影响。就像人类一样,如果您让我计算一个 5 位数的加法,您需要一些时间思考并给出正确答案。如果匆忙进行,您很容易算错,回答失败。

类似地,如果我们给语言模型一个在计算下一个 token 的时间内过于复杂的任务,它可能无法给出正确答案。

然而,与人类相似,这并不一定意味着模型无法完成该任务。只要给予一些时间或推理指导,模型仍可能可靠作答。

模型的响应以及生成它所需的时间也会受到多种因素影响,例如问题的具体措辞:

  • 如果提示简短而简单,模型生成下一个 token 所需时间可能不多。
  • 如果提示冗长且复杂,模型在生成下一个 token 之前可能需要处理更多信息,从而花费更长时间。

链式思维提示通过选择恰当的提示表述方式,并为模型提供生成正确答案所需的时间或步骤,引导 LLM 成功解决复杂任务。

什么是链式思维提示?

链式思维提示是一种通过明确提示模型在得出最终答案之前先生成逐步解释或推理过程来提升语言模型表现的技术。该方法帮助模型将问题拆解,避免跳过任何中间步骤,从而减少推理失败。

CoT 之所以有效,是因为它有助于聚焦 LLM 的注意力机制。将推理过程拆解,使模型一次专注于问题的一个部分,最大限度降低同时处理过多信息而导致错误的风险。

CoT 的起源

谷歌的研究人员在 2022 年的一篇论文“Chain of Thought Prompting Elicits Reasoning in Large Language Models”中提出了链式思维提示。这项研究强调,通过一系列中间推理步骤来引导模型,能够显著提升其在数学问题求解、逻辑推理和多跳问答等任务上的表现。

让我们看一个提出的示例:

标准提示与 CoT 提示的对比。左侧,模型被指示直接给出最终答案(标准提示)。右侧,模型被指示展示得到最终答案的推理过程(CoT 提示)。我们可以看到,使用标准提示时模型未能完成任务,而使用 CoT 时给出了正确答案。

标准提示与 CoT 提示的对比。左侧,模型被指示直接给出最终答案(标准提示)。右侧,模型被指示展示得到最终答案的推理过程(CoT 提示)。

如我们所见,生成一条思维链——一系列中间推理步骤——有助于模型给出正确答案。

原作者将“思维链”称为通向最终输出的一系列中间自然语言推理步骤,并将这种方法称为链式思维提示。

链式思维提示如何工作?

该过程从精心设计提示开始,鼓励模型以逐步方式思考问题,从而在不直接跳到最终答案的情况下生成中间步骤。这可以通过不同策略实现:

#1. 显式指令

给出显式指令意味着在用户提示中直接分解问题。例如,使用“首先,我们需要考虑……”之类的句子来促使模型详细阐述其思考过程。

让我们看看实际效果!

想象一下,我的西班牙裔母亲给我发来了制作冷萃咖啡的家传食谱:

input_text = """
¡Preparar café Cold Brew es un proceso sencillo y refrescante!
Todo lo que necesitas son granos de café molido grueso y agua fría.
Comienza añadiendo el café molido a un recipiente o jarra grande.
Luego, vierte agua fría, asegurándote de que todos los granos de café
estén completamente sumergidos.
Remueve la mezcla suavemente para garantizar una saturación uniforme.
Cubre el recipiente y déjalo en remojo en el refrigerador durante al
menos 12 a 24 horas, dependiendo de la fuerza deseada.
"""

假设我们希望把所有与咖啡相关的词翻译成英文,并想用 ChatGPT 来完成这项任务:

prompt = f"""
Give me a numbered list of all coffee-related words in English from the text below:
Text: <{input_text}>
"""
response = chatgpt_call(prompt)
print(response)

以下是该提示的响应:

如果我们让模型直接执行这个任务,可以看到它做错了。不仅输出了与咖啡无关的词,而且还用西班牙语输出,而不是英语。

我们可以认为这个任务是复杂的,因为它需要两个步骤:

  1. 将文本从西班牙语翻译成英语。
  2. 识别与咖啡相关的词。

然而,模型直接跳到了最终的识别步骤,忽略了翻译。通过将翻译指定为一个中间任务,或把任务分解为上述两步,我们可以引导模型得到正确输出:

prompt = f"""
Give me a numbered list of all coffee-related words in English from the text below:
The task requires the following actions:
1 - Translate the given text into English.
2 - List each coffee-related word from the English text.
Text: <{input_text}>
"""
response = chatgpt_call(prompt)
print(response)

加入上述链式思维后,得到了正确答案:

如果您有兴趣在非 ChatGPT 或 OpenAI API 的其他 LLM 上尝试此技术(如本文所示),课程“开发大语言模型”适合您!

#2. 隐式指令

有时,我们无需在提示中亲自分解问题。东京大学与 Google Research 提出了一种改进 LLM 响应的简洁方法,只需在原提示末尾添加“Let’s think step by step”。

这句简单的话会促使模型“出声”推理,走过完成任务所需的全部步骤。

让我们分析作者在原论文“Large Language Models are Zero-Shot Reasoners”中提出的一个示例:

标准提示与使用隐式 CoT 指令的对比。左侧,模型直接给出问题的最终答案(零样本提示)且失败。右侧,模型加入隐式 CoT 指令(CoT 提示)后得到正确响应。

标准提示与使用隐式 CoT 指令的对比。左侧,模型直接给出问题的最终答案(零样本提示)且失败。右侧,模型加入隐式 CoT 指令(CoT 提示)后得到正确响应。

[a] 在第一个示例中,作者让模型解决一道算术题,但它失败了。

[b] 然后,仅在原问题后附加“Let’s think step by step”,模型便开始出声推理并成功解答。

将这一简单技巧应用于 MultiArith 数学数据集时,作者发现该隐式指令将准确率从 18% 提高到了 79%!

如果您感兴趣,可以在“用这一短提示提升 ChatGPT 的产出”中了解更多。

#3. 示范性示例

我们在上一节多次使用了“零样本(zero-shot)”一词。零样本指模型在未针对该特定任务示例进行过明确训练的情况下,仍能完成该任务的能力。

它依赖于模型的泛化能力,能够对全新且前所未见的任务生成合适的响应。这意味着当我们打开 ChatGPT 的用户界面并直接提问时,我们就是在进行零样本提示。

不过,也有办法向模型展示若干与目标任务相似的示例。提供一系列示范性示例称为单样本(one-shot)和少样本(few-shot)提示,取决于提供示例的数量。

单样本提示

单样本提示指向模型展示一个与目标任务相似的示例以提供指导。

例如,如果回到本文第一幅图,我们可以看到,模型正是借助提示中提供的示范性示例来生成链式思维。

少样本提示

少样本学习与单样本类似,但提供的示例数量更多,通常在百例左右。模型性能会随示例数量线性提升。

少样本提示由谷歌的 Jason Wei、Denny Zhou 等人进行研究。该方法对需要更专业或特定领域知识的任务尤为有用,此类任务中模型可能缺乏足够的背景知识,无法仅通过零样本或单样本提示完成。少样本提示有时被视为对模型在一组新的或特殊数据上的小规模微调。

在“用提示工程提升 ChatGPT 表现”中查看更多单样本与少样本提示示例。

少样本 CoT 提示

单样本和少样本提示本身并不是 CoT。然而,研究人员探索了如何将少样本学习与 CoT 提示结合,即“少样本 CoT 提示”。在少样本 CoT 中,会向模型提供若干带有逐步解答的示例问题,以引导其推理过程。

将少样本 CoT 提示与其他技术(如检索增强生成或交互式查询)结合,可以进一步提升模型的性能与可靠性。集成外部知识库、数据库或信息检索系统,能够让模型用事实且最新的信息增强其推理。

在实践中实现链式思维提示

用数学迷宫来比喻 CoT 如何帮助模型在知识空间中导航并解决复杂任务。

用数学迷宫来比喻 CoT 如何帮助模型在知识空间中导航并解决复杂任务。使用 ChatGPT 4o 图像生成功能自制,提示为 “Imagine a Language Model agent through a maze of mathematical problems”。

在提示中加入 CoT 有多种方式:

  • 结构化模板:使用明确列出模型应当采取的步骤的模板,就像我们在咖啡示例中看到的那样。更多提示模板和条件提示示例,参见提示指南一文。
  • 交互式提示:与模型进行对话,要求其解释每一步,或在每一步提供反馈或更正以引导模型的推理过程。这也被称为“人类在环(Human-in-the-Loop)”方法。
  • 反馈回路:引入反馈机制,对模型的中间步骤进行评估并在必要时优化。这也被称为多阶段提示(Multi-Stage prompting)。

有多种框架可以帮助您实现 CoT 和其他提示工程技术,而LangChain是我最喜欢的。如果您希望在 LLM 驱动的项目中使用 LangChain,课程“用 LangChain 开发 LLM 应用”是理想的起点。

链式思维提示的优势

链式思维提示带来多重益处,尤其能提升语言模型在复杂任务中的性能与可靠性。

#1. 提高准确性

通过将问题拆解为更小、可管理的步骤,模型可以更准确地处理复杂任务。中间步骤提供了检查点,可在此发现并纠正潜在错误,从而得到更准确的最终答案。

数学问题、逻辑谜题或多跳问答等任务之所以受益于这种方法,是因为它们本身就自然需要多步推理。

#2. 增强可解释性

逐步的推理过程是透明的,用户可以理解模型如何得出结论。这种透明性有助于建立对模型输出的信任。

它也有助于调试,因为用户更容易发现模型在推理中可能出错的地方。

局限与注意事项

当然,与任何技术一样,总有一些需要权衡的缺点:

对模型的依赖性

需要注意,CoT 是一种依赖模型的技术。因此,CoT 提示的有效性在很大程度上取决于底层语言模型的能力。

提示构造

构建有效的 CoT 提示也颇具挑战。它需要精心设计,以确保提示能正确引导模型完成推理过程。为不同类型的任务和领域更新与维护提示可能耗时,并可能需要持续打磨。

性能

对于不具备清晰序列化推理过程的任务,CoT 提示可能不够有效。此外,它可能无法很好地泛化到全新或出乎意料的问题类型,除非进行额外训练或适配,因此保持最新的知识库和合适的提示至关重要。

权衡

尽管 CoT 提示通过提供逐步解释提升了可解释性,但也可能导致输出更长、更冗长,这并不总是适用于所有应用场景。

结语

在本文中,我们看到链式思维提示如何显著增强大语言模型的推理能力,并结合一些实践示例进行了说明。

无论使用提示模板、交互式提示,还是反馈回路,这些方法背后的理念都是引导模型完成推理过程,充分发挥其能力。

此外,我们还探讨了单样本与少样本等强大技术,它们可进一步提升模型表现并与 CoT 结合使用,同时也介绍了其带来的益处与不可忽视的一些局限。

不妨尝试文中讨论的技术,打造更可靠、高性能的提示,并请牢记:提示工程会对您的输出产生重大影响!

您可以通过 DataCamp 的课程Understanding Prompt Engineering与ChatGPT Prompt Engineering for Developers进一步学习提示工程。您还可以查看另一份提示工程认证指南,找到最适合您的学习路径。

链式思维提示常见问答

链式思维提示适用于所有类型的问题吗?

链式思维提示对复杂的多步推理任务尤为有效,但对于可以直接回答的简单问题并非总是必要。它在那些本就需要详细、逐步过程才能得出正确答案的问题中最有价值。

链式思维提示可以用于任何 AI 模型吗?

可以。例如,在训练机器人穿越迷宫时,可以采用 CoT 方法将导航分解为若干步骤,如识别当前位置、评估可行路径,并选择障碍最少的路径。

链式思维提示是否有助于 AI 可解释性?

可以。它有助于用户跟随模型的推理过程,使其更加透明且可解释。这在医疗、金融等领域尤为重要,因为理解 AI 决策背后的依据至关重要。

链式思维提示与多步骤提示有什么区别?

链式思维提示通过引导模型按照一系列逻辑推理步骤来解决问题。相比之下,多步骤提示是在问题的各个阶段依次提供额外的提示或线索,逐步引导模型走向解答。

什么是与链式思维提示结合的自一致性?

在自一致性中,与 CoT 只生成一条思维链不同,模型会针对同一问题生成多条思维链,每条链代表一条不同的推理路径。最终答案依据这些不同推理路径中出现频率最高的结果来确定。这有助于减轻单一推理链中可能出现的错误。


Andrea Valenzuela's photo
Author
Andrea Valenzuela
LinkedIn
Twitter

Andrea Valenzuela 目前在瑞士日内瓦的欧洲核子研究中心(CERN)粒子加速器的 CMS 实验工作。她在过去六年深耕数据工程与数据分析,主要职责包括数据分析与软件开发。她现正通过 Medium 出版物 ForCode'Sake 推动数据相关技术的学习大众化。

她拥有加泰罗尼亚理工大学工程物理学学士学位,以及庞培法布拉大学智能交互系统硕士学位。她的研究经历包括基于早期 OpenAI 图像生成算法(如 Normalizing Flows)的专业工作。

主题
人工智能

DataCamp 热门课程

课程

使用 LangChain 开发 LLM 应用

3 小时
51.3K
了解如何使用 LLM、提示、链和代理在 LangChain 中构建 AI 驱动的应用程序。
查看详情Right Arrow
开始课程
查看更多Right Arrow