论文翻译 | ART: Automatic multi-step reasoning and tool-use for large language models

摘要 

        大型语言模型(LLMs)通过生成中间的思考链(CoT)推理步骤,可以在少量和零样本设置中执行复杂的推理。此外,每个推理步骤都可以依赖外部工具来支持超出LLM核心能力的计算(例如搜索/运行代码)。先前关于CoT提示和工具使用的工作通常需要手工制作特定任务的演示,并仔细编排模型的生成与工具使用的交错。我们引入了自动推理与工具使用(ART)框架,该框架使用冻结的LLM自动生成作为程序的中间推理步骤。给定一个要解决的新任务,ART从任务库中选择多步骤推理和工具使用的演示。在测试时,每当调用外部工具时,ART都能无缝暂停生成,并在恢复生成之前整合它们的输出。ART在BigBench和MMLU基准的未见任务上,比少量样本提示和自动CoT取得了实质性的改进,并在大多数这些任务上与手工制作的CoT提示性能相匹配。ART也是可扩展的,并且使得人类通过纠正任务特定程序中的错误或融入新工具来提高性能变得容易,我们通过在最少的人类干预下显著提高选定任务的性能来证明这一点。

1 引言

        上下文学习允许大型语言模型(LLMs)通过使用自然语言指令和几个演示作为LLM的提示,快速适应新任务(Xie等人,2021;Brown等人,2020;Chowdhery等人,2022)。尽管这绕过了标注大型数据集甚至托管LLM本身(因为许多模型都可以通过API获得),但在多步骤推理(Liu等人,2022)、数学(Patel等人,2021)、拥有最新信息(Komeili等人,2022)等方面存在严重的性能限制。为了解决这些限制,最近的工作提出了让LLMs模仿用于多步骤推理的思考链(CoT)(Wei等人;Zhou等人,2022;Wang等人,2022;Press等人,2022;Khot等人,2022;Arora等人,2022)或向它们提供工具访问权限(例如计算器或QA模型),以实现更复杂的推理步骤(Gao等人,2022;Chen等人,2022;Press等人,2022;Wei等人;Schick等人,2023)。然而,现有用于链式推理和工具使用的方法很难扩展到新任务和新工具,需要针对特定任务(Parisi等人,2022)或工具(Schick等人,2023)进行微调或提示工程。

         在本文中,我们提出了自动推理与工具使用(ART)框架,该框架自动为新任务的实例生成分解(多步骤推理)。该框架还选择并使用最合适的可用工具(如搜索引擎和代码执行)在每个单独的步骤中。给定一个新任务,ART从任务库中检索相关任务的演示,以实现少量样本的分解和工具使用。这些演示遵循一种灵活但有结构的查询语言(Beurer-Kellner等人,2022),使得解析中间步骤、停止生成以调用外部工具,并在包括此类工具的输出后恢复生成变得容易(图1)。ART为LLM提供了如何分解几个相关任务实例的演示,以及如何从这些演示中代表的功能库中选择和使用任何工具。这鼓励了模型从演示中泛化,以分解新任务并在适当的地方零样本使用工具。它还使用户能够通过简单地更新任务和工具库,以及必要时提供新的演示(例如,对于手头的任务)来修复推理链中的任何错误或添加新工具。
        我们为15个不同的BigBench(Srivastava等人,2022)任务构建了一个任务库,并在BigBench的19个未见测试任务、6个MMLU任务以及相关工作中使用的各种工具使用任务(SQUAD、TriviaQA、SVAMP、MAWPS)上评估ART。ART在32/34个BigBench任务和所有MMLU任务上始终匹配或优于自动生成的CoT推理链,平均提高了超过22个百分点。特别是,与不允许使用工具时相比,工具使用在测试任务上的性能提高了平均超过12.3个百分点(表3)。ART在未见BigBench和MMLU任务上比直接少量样本提示平均提高了10.8个百分点。在需要算术和算法推理的未见任务上,改进尤为显著,ART比直接少量样本提示提高了12.5%,比使用分解和/或工具使用的监督的GPT3最佳已知结果提高了6.1个百分点(表3)。
        最后,ART通过简单地用新的演示更新任务和工具库,使人类干预和改进推理过程变得非常容易,从而可以在任何特定任务上通过少量的反馈提高性能。在12个测试任务上,带有额外人类反馈的ART超过了GPT3的最佳已知结果,平均提高了超过20个百分点(表6)。

2 相关工作 

        缩放微调以适应低资源场景 最近的工作表明,在广泛的公共NLP数据集(带有预固定的指令)上微调LLMs是一种有效的跨任务泛化技术(Mishra等人,2021;Sanh等人,2021;Khashabi等人,2020;Wei等人,2021),适用于零样本和少量样本设置。Ouyang等人(2022)显示,通过使用人类反馈对期望的模型行为进行微调(InstructGPT),在广泛的任务上调整语言模型以符合用户意图,可以进一步改进复杂NLP任务的上下文学习性能。Chung等人(2022)显示,在聚合的任务混合(T0、CoT、对话和代码数据集)上微调,并将模型扩展到540B参数,可以在BigBench和MMLU等多个基准上实现最先进的上下文学习性能。ART使用API访问InstructGPT和Codex(在代码上微调的LLM(Chen等人,2021))来利用它们新兴的上下文学习能力。LLMs中的缩放微调的未来改进可能会提高ART的性能。
        使用中间推理步骤提示 思考链(CoT)提示(Wei等人,2022;Suzgun等人,2022)是一种流行的无梯度技术,它鼓励LLMs在最终答案之前生成中间推理步骤,有多种特定于任务的变体(例如,从最少到最多的提示(Zhou等人,2022)、自我提问(Press等人,2022)、问我任何事(Arora等人,2022)、连续提示(Dua等人,2022)、分解提示(Khot等人,2022))。虽然这些提示最初是手工制作的,但最近的工作(Kojima等人,2022)显示,当使用“让我们一步一步思考”的前缀提示时,LLMs可以在零样本方式下生成CoT风格的多步骤推理。Zhang等人(2022)使用LLMs自动生成这样的CoT风格提示——AutoCoT,在算术和常识推理任务上的性能与手工制作的提示相媲美。我们在表1中比较了ART、CoT和AutoCoT。ART在此基础上工作,引入了一种通用语言,使得跨任务演示和灵活可扩展的工具使用成为可能,提高了中间推理步骤的准确性。

     工具使用 越来越多的兴趣在于使用外部工具如搜索引擎、网页浏览器、计算器、翻译系统和Python解释器等来克服LLM的限制(Komeili等人,2022;Thoppilan等人,2022;Lazaridou等人,2022;Shuster等人,2022;Nakano等人,2021;Thoppilan等人,2022;Cobbe等人,2021;Thoppilan等人,2022;Gao等人,2022;Chen等人,2022)。这些方法大多数要么需要大量的人类监督(Thoppilan等人,2022;Komeili等人,2022),要么需要针对特定任务和特定工具精心构建的提示。而最近的一条工作线使用自监督来教LLMs使用搜索、翻译和计算器(Schick等人,2023)——Toolformer。相比之下,由于ART不需要任何额外的训练或工具特定的提示,它使用户在替换底层LLM(例如,当发布GPT-3的新版本时)以及在替换或添加新工具(无论是通用工具还是对特定兴趣任务重要的工具)方面具有灵活性。我们在表1中比较了ART和Toolformer。在3.4节中,我们展示了人类反馈循环——分析和调试LLM生成并扩展工具使用——如何在提高ART性能的同时,也用新工具扩展它。ART内置的反馈循环和适应能力扩展了遵循指令和使用工具的LLMs的能力。 

3 ART 

        使用ART,冻结的LLM将新任务的实例分解为多个步骤(在适当的时候使用外部工具),尽管没有对分解或工具使用的明确监督。在本节中,我们将介绍ART的概述,然后对每个单独的组件进行更全面的描述。我们使用物理问答(PQA)任务作为运行示例,该任务由高中物理问题组成。

3.1 概述 

        在图2中,ART被展示了一个新的任务描述和输入实例。我们还假设可以访问少量的输入-输出对(未显示),且没有分解或工具使用的监督。


        构建提示。ART从任务库中检索相似的任务(图2(A);第3.2节),并将这些任务的实例作为演示添加到提示中。
        任务库中的一个演示按照特定的格式编写,该格式由自定义的解析表达式语法(PeG)(第3.2节)定义。该语法被定义得每个任务实例都被分解为一序列的子步骤。这些子步骤中的一些包含对应于工具库(第3.3节)中的工具的符号。我们将这些分解称为程序,因为顺序的推理步骤和对工具的符号调用类似于带有函数调用的传统程序。
        结果提示由相关任务的程序组成,并教导LLM如何有效地分解新任务的实例——这些程序中的相关子步骤和工具可以被LLM用于跨任务的泛化。在图2(A)中,演示包括了调用搜索和代码工具。
        生成。在生成时(图2(B)),LLM编写自己的程序。ART在生成时解析程序,并在生成的文本中遇到工具调用时暂停生成,工具被调用并且其输出被重新整合回程序后,继续生成。如图所示,使用搜索引擎找到合适的物理公式,然后LLM使用代码生成和执行来替换给定的值并计算答案。
人类反馈(可选)。人类可以向任务库中添加新的分解演示,或者添加/编辑工具库中的工具,以提高特定感兴趣任务上的性能,或者一般性地提高性能。在图3(C)中,用户通过包含一个添加测量单位的步骤来纠正特定的程序,并将这个(修改后的)程序添加到任务库中。虽然我们的大多数实验没有使用这种反馈,但我们展示了当任务泛化没有自动发生时,它非常有效地大幅提高性能。此外,它给用户提供了在不重新训练LLM的情况下添加自定义工具的灵活性。

3.2 任务库 

        我们为Big-Bench(Srivastava等人,2022年)中的一小部分任务种子集构建了一个程序库,Big-Bench是一个合作型基准测试,用于衡量语言模型的能力和局限性。Big-Bench任务涵盖了传统NLP、数学、常识推理和问答等类别。
        构建任务库。我们确定了五种在BigBench中超过一半任务都有用的技能,这些技能包括英语文本分类或短答案生成(见附录A.1)。我们根据这些技能将基准测试中的任务分组为以下集群:

  •  算术:算术和代数问题。
  • 代码:生成和执行python代码。
  • 搜索和问题分解:需要搜索的单步骤或多步骤问题。
  • 自由形式推理:用自然语言逐步解释推理。
  • 字符串操作:重格式化/编辑字符串,检查字符串蕴涵等。

        然后我们从每个集群中选择2-4个任务,并为每个任务的几个实例编写程序(分解),包括对外部工具的调用和这些工具的实际输出。每个集群中的程序示例见附录A.1。这些程序遵循特定的语法,如下所述。
        程序语法 程序格式必须灵活,能够适应任务输入、步骤和工具调用,以便涵盖各种NLP任务。为此,我们定义了一种查询语言(Beurer-Kellner等人,2022年),它扩展了Khot等人(2022年)的分解提示格式,因为它可以顺序表示分解的推理步骤,并包含对外部工具的函数调用(像其他LLMs一样)。每个程序由一系列节点组成——一个任务输入节点,几个子步骤节点和一个答案节点。输入节点包含任务名称、描述任务的简单指令和任务实例的输入:“回答这个高中物理问题。输入:Hector猛拉...”。输入节点后面是一系列子任务节点,表示为(查询,答案)对“Qi : :::; #i : :::”。子任务查询Qi包含子任务名称和子任务输入(“Q1: [search] 公式是什么...”),而子任务答案#i简单是子任务的输出(“#1: 水平分量(Fx)可以计算...”)。程序以一个虚拟子任务(“Q3: [EOQ]”)结束,后面是最终的答案节点(“Ans: 59N”)。所有图1和图2中的示例都遵循这个格式。
        任务检索 给定一个新任务,ART从任务库中检索N个任务来构建一个动态的多任务提示。我们探索了两种检索相似任务的策略,取决于可用数据。如果新任务只有少量标记示例(≈50),我们就遍历所有五个任务集群,并从每个集群中选择一些任务程序来组成提示。最终,在所有未标记示例上进行预测时,选择在保留集上性能最高的任务集群。虽然这个策略需要一个输入-输出对的保留集,但生成分解程序不需要额外的监督。
        在第二种策略中,我们用任务对构建了一个少量样本提示(附录A.2),每个任务包括名称、指令和几个输入-输出示例。对于每对任务,我们提供一个“相似”或“不相似”的标签,并附上推理(例如:“这些任务是相关的,因为它们需要解决算术文字问题”)。在运行时,我们将测试任务与任务库中的每个任务配对,并根据“相似”和“不相似”之间的对数概率比选择排名最高的任务。我们在附录A.2中探讨了这两种策略。

3.3 工具库 

        每当子任务查询名称与任务库中的工具名称匹配时(例如“Qi : [search]”),生成过程就会停止,并在调用工具并将其输出合并到部分完成的程序后继续。我们用以下工具种子化了工具库(所有这些工具在任务库中都有演示)。特别是,我们描述了用于表示这些工具及其输入的符号。我们还指定了工具输出如何被重新整合到程序中。特定于工具的实现细节以及在反馈过程中(3.4节)添加到ART的其他工具都在附录A.3中。
        搜索 我们使用SerpAPI2,它提供了一个用于Google搜索的API。搜索的输入是LLM在“Qi : [search]”之后生成的序列。我们提取答案框片段(如果可用),或者将前两个搜索结果片段合并在一起。对于图2(B)中的PQA,搜索查询是原始输入后跟随的“What is the formula for the horizontal component of tension force?”,输出是“... horizontal component (Fx) can be calculated as Ftens*cosine(θ) ...”。
        代码生成 我们使用Codex(Chen等人,2021年)模型进行代码生成。代码生成的输入是LM在子任务查询符号“Qi : [generate python code]”之后生成的序列。这个参数是一个代码生成的指令,被提示给Codex作为Python中的多行注释。例如,在图2中,Codex被提示的指令是“Use the formula Fx = Ftens * cosine(θ) to solve...”作为注释,并生成了“T = 72.0, theta = 35.0, ..., Fx = T*math.cos(radians)”的代码,这被附加到不完整的程序中。
        代码执行 我们在一个预装了算术、符号和科学计算包的虚拟Python环境中运行Python代码。代码执行的参数是前一个子任务的答案序列“#(i − 1) : : : : ”,即要执行的python代码片段。对于i = 1,任务输入被用作参数,因为它可能包含要执行的代码片段。在图2中,前一步生成的代码片段被执行,变量“Fx”的值被添加到不完整的程序中。

3.4 人类反馈 

        ART是专门为适应人类反馈而设计的,因为它不需要额外的微调。因此,用户可以通过编辑任务库和/或工具库,将反馈立即合并到ART中。由于ART生成可解释的多步骤推理程序,因此我们以调试的形式探索反馈,即用户编辑现有程序而不是从头开始创建程序。这些编辑可以以更正子步骤输出、添加/删除子步骤(带有适当的输入和答案)、添加对新工具的调用等形式进行。


        例如,在图3(a)中,用户通过添加两个子步骤来编辑程序,以便将答案四舍五入到最接近的整数,并在答案中包含适当的度量单位。此反馈演示了任务的适当分解,因为这些操作仍然由LLM执行(工具库没有“[arithmetic]”或“[add unit]”api)。相反,在图3(b)中,用户演示了字典“[lookup]”的使用,并将其作为工具库中的工具实现。虽然我们的大多数实验不依赖于这样的反馈(因此测量“零射击”任务转移,没有对推理/工具使用的监督),但我们表明,像这样的简单操作可以极大地提高目标任务的性能。

4 实验设置 

        评估数据集 除了任务库中的15个任务(第3.2节),我们还评估ART在BigBench的19个额外测试任务上的表现,这些任务也属于第3.2节中确定的五个任务集群。为了检查跨基准测试的泛化能力,我们进一步在MMLU基准测试(Hendrycks等人,2020年)的任务随机子集上评估ART。最后,我们还评估了用于评估Toolformer(Schick等人,2023年)的一组任务子集,以便将ART与用于工具使用的微调模型进行比较。
        细节 我们使用InstructGPT(text-davinci-002)作为冻结的LLM,并使用Codex作为代码生成工具,温度设置为0:3。我们将提示中的种子任务数量设置为N = 3,并从每个任务中使用2个演示程序。
        我们按照Srivastava等人(2022年)的方法测量每个任务的偏好评分指标,并报告5次运行的平均性能。
        基线 ART提出了一个自动化的框架,用于生成多步骤推理分解并在这些分解中使用相关的外部工具。我们与以下基线进行比较:

  • 少样本/直接:使用输入-输出对提示LLMs(但没有中间推理)。对于BigBench我们使用3个示例,对于MMLU我们使用5个示例,如先前的工作(Suzgun等人,2022年)所做。我们评估这个基线,包括GPT-3和Codex,并报告两者中的较高者。
  • Auto-CoT:一个自动生成多步骤自然语言推理的基线。首先使用随机子集的5个示例来引出CoT风格的推理(输入 + 我们一步步来思考。)。这些示例及其生成的输出形成了其他未见任务示例的提示。这个基线是自由形式的,不包括工具,因此允许我们验证我们的查询语言和任务库的有效性。我们评估这个基线用于GPT-3。
  • ART-tool:关闭工具使用的ART,即LLM生成每个子步骤的输出,以验证工具使用的收益。
  • GPT-3最佳:最佳发布的GPT-3/Codex(175B)结果,包括多步骤分解和/或工具使用。这些通常包括额外的 human 监督来分解推理步骤,以及外部工具来提升性能(带有精心构建的提示)。

关于基线和GPT-3最佳模型的额外细节在附录A.4中。

5 结果 

        我们评估了ART(无人类反馈)在任务库中的任务(5.1)以及来自BigBench、MMLU和QA基准测试的各种测试任务(5.2)上的表现。然后,我们展示了ART可以通过更多的计算(自一致性)和人类反馈(5.3)进一步改进。

5.1 任务库查询结果 

        对于任务库中的任务,提示中的演示包括任务本身的两个实例,以及来自同一集群中任务的其他实例。我们在表2中展示了结果,其中任务是按技能集群组织的。即使只有两个实例的分解演示,ART也大大提高了少量学习的性能(平均+ 14.9%),这与之前在CoT上的工作一致。它在语言游戏、代码描述和自动调试(使用代码生成和/或代码编辑模型的任务)方面做得并不好。我们观察到代码生成错误经常导致推理中的级联错误。


        同样,即使不使用任何工具,ART在大多数任务上的表现也优于AutoCoT(平均高出8%)。我们假设程序格式(和PeG语法)在从模型中引出多步骤推理方面比自由格式的CoT更好,因为在推理中添加了结构。当开启工具使用时,ART在所有任务上的表现都优于AutoCoT(+ 17.7%) - 1。在≈95%的测试实例中调用工具,并且显著提高性能(+ 7.91%)。对于算术任务来说,使用工具的好处尤其显著,因为算术任务可以将算术问题表示为精确执行复杂算术的代码(平均+21.85)。在之前的工作中也注意到了这一点(Chen et al ., 2022;Gao et al ., 2022)。
        与已公布的最佳GPT-3结果相比,ART在5/8的任务中更强或可比。对于其他人,进一步的调查表明,Khot等人(2022)和Suzgun等人(2022)提供的演示比我们为这些任务编写的两个程序更有效(我们在附录A.5中进一步探讨了这些程序的人类反馈)。
        总之,在库任务上,ART比few-shot learning和AutoCoT更强(我们提供了2个标记分解),并且与已发表的最佳GPT-3结果相当。

5.2 测试任务(跨任务转移) 

        我们测量了ART在测试任务上的跨任务泛化能力,其中ART没有使用显式的监督来进行任务分解和工具使用。ART根据第3.2节中的第一种策略从任务库中检索演示,该策略使用少量的标记输入-输出对来选择一个任务集群并从该集群中抽样演示程序。

         BigBench测试任务 尽管没有任务分解或工具使用的监督,但表3中的结果与任务库中的任务相似。ART的表现优于少样本学习(6.9个百分点)。特别是,ART在算术任务上有了显著的改进(+19.0),并且在搜索任务上的表现与少样本学习相当。非语法性的毁灭名称选择和不在输入中的时间序列选择通常是错误的,少样本基线可能会潜在地学习忽略这些,而ART则试图明确地对它们进行推理。与库任务一样,我们观察到像简单文本编辑、单词解谜和重复复制逻辑这样的字符串操作任务容易受到代码生成错误的影响。
        正如库任务中的观察到的,ART在几乎所有任务上都比AutoCoT表现更好(24.6个百分点)。工具的使用频率再次非常高(89%的实例),并且是超过基线的大部分收益的原因。
        与最佳发布的GPT-3结果相比,ART在平均表现上更为有利,特别是在算术任务上(+6.1个百分点)。和之前一样,在Suzgun等人(2022年)提供的如何分解任务本身的好的人类演示对结果有较大影响的情况下,它的表现较差。我们将在5.3节中对这些任务使用更多人类反馈重新评估ART,但即使没有这些反馈,我们也得出结论,即使没有手头任务的分解监督(即存在跨任务泛化),ART在BigBench上的表现也是具有竞争力的。
        其他基准测试 为了确保ART没有过度适应BigBench风格的任务,我们在额外的基准测试上评估了性能。我们在表3中报告了在MMLU基准测试(Hendrycks等人,2020年)随机选择的任务上的表现,其中ART在5/6的任务上比所有基线都更有效(平均比少样本基线好8.5个百分点),尽管没有演示或工具使用的监督。MMLU需要广泛的世界知识,因此大多数任务从搜索工具中受益最大。


        在表4中,我们将ART与用于评估Toolformer(Schick等人,2023年)的一组随机子集任务进行了比较,Toolformer是一种微调后使用多种工具的模型。比较并不精确,因为Toolformer使用的是较小的GPT-J模型,但值得注意的是,ART在这些任务中的5/6上以较大优势超过了Toolformer。为了确保这些收益不仅仅是模型规模的结果,我们还使用了普通的GPT-3作为基线,它在所有任务上的表现都比ART差得多。除了性能的改进,我们再次注意到,当引入新的工具或新的基础LLM时,ART不需要额外的微调,并且可以通过计算或人类反馈的代价进行进一步的改进。 

5.3 改进ART

        先前的工作已经注意到生成多个LLM输出并获得最频繁的答案(称为自一致性的过程)的好处,特别是对于具有多步骤推理的设置(Khot等人,2022;Wang et al, 2022)。在表5中,我们给出了任务子集上ART的自一致性结果(生成15个输出),并看到它以额外的计算为代价不断提高性能。

 

        我们还在表6中试用了特定于任务的反馈,方法是让其中一位作者编辑5个随机的模型生成程序实例,这些实例会导致每个任务出现错误。在编辑时,我们纠正子步骤中的错误(表示为“C:”),添加缺失的子步骤(“A:”),或者定义一个新工具并演示其使用(“T:”)。 
        例如,这涉及到为PQA任务引入一个“添加单元”子步骤,并实现一个字典查找功能,作为“Word unscramble”任务的工具(两者如图3所示)。
        我们还比较了应用于cot式推理的人类反馈。Suzgun等人(2022)已经为一些任务提供了参考cot式推理。对于不可用人工编写的CoT推理的数据集,我们纠正自动CoT基线的输出,如表6所示。
        同一作者编辑了5个随机的AutoCoT分解实例,这些实例导致了相同任务中的错误,纠正了子步骤中的错误或添加了新的子步骤。作为参考,编辑包括基线中35%的代币,以及ART计划中15.7%的代币。这包括在72%的选择任务中修正子步骤参数和输出,并在44%的任务中添加额外的子步骤。为两个任务添加了新的工具定义-用于单词解析的字典查找和用于形式谬误的Prolog引擎。
        在这两种情况下,编辑程序并将它们添加为演示可以显著提高手头任务的性能。然而,抗逆转录病毒治疗的获益更为显著,导致其在当前任务中持续优于已公布的最佳GPT-3基线。此外,这些修正后的程序和工具可以添加到任务和工具库中,我们在表3中的先前结果表明,它们也可能有助于改进其他任务上的ART。该试验表明,除了在跨任务泛化方面具有竞争力外,ART非常适合在最小的人为干预下进行特定任务的改进。我们在A.5的任务库中报告了类似的结果。

6 结论

        我们介绍了ART,一种无梯度的方法,用于自动多步推理生成和大型黑箱语言模型的自动工具使用。我们的主要贡献包括将多步骤推理表示为程序(带有工具调用和参数)的轻量级语法,为其编写程序的可扩展种子任务库,以及由有用的外部实用程序(如搜索、代码生成和执行)组成的工具库。可解释推理框架还允许人们改进任务分解和工具使用,以提高性能。在BigBench和MMLU基准测试中,ART实现了对未见任务的少量提示和自动生成CoT推理的实质性改进,并且在结合人类反馈时大大超过了手工制作的CoT提示的性能。ART还受益于自一致性等方法,或者受益于经过工具使用培训的新的、更强大的语言模型。 

 

 

 


      
 

 

 

 

 

 

 
       

 

### Chain-of-Thought Prompting Mechanism in Large Language Models In large language models, chain-of-thought prompting serves as a method to enhance reasoning capabilities by guiding the model through structured thought processes. This approach involves breaking down complex problems into simpler components and providing step-by-step guidance that mirrors human cognitive processing. The creation of these prompts typically includes selecting examples from training datasets where each example represents part of an overall problem-solving process[^2]. By decomposing tasks into multiple steps, this technique encourages deeper understanding and more accurate predictions compared to traditional methods. For instance, when faced with multi-hop question answering or logical deduction challenges, using such chains allows models not only to generate correct answers but also articulate intermediate thoughts leading up to those conclusions. Such transparency facilitates better interpretability while improving performance on various NLP benchmarks. ```python def create_chain_of_thought_prompt(task_description, examples): """ Creates a chain-of-thought prompt based on given task description and examples. Args: task_description (str): Description of the task at hand. examples (list): List containing tuples of input-output pairs used for demonstration purposes. Returns: str: Formatted string representing the final prompt including both instructions and sample cases. """ formatted_examples = "\n".join([f"Input: {ex[0]}, Output: {ex[1]}" for ex in examples]) return f""" Task: {task_description} Examples: {formatted_examples} Now try solving similar questions following above pattern. """ # Example usage examples = [ ("What color do you get mixing red and blue?", "Purple"), ("If it rains tomorrow, will we have our picnic?", "No") ] print(create_chain_of_thought_prompt("Solve logic puzzles", examples)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值