在这一部分中,详细介绍了我们的“思维缓冲区”(Buffer of Thoughts),并且在图2中展示了核心“思维增强推理”过程。针对一个特定任务,使用问题提炼器(第3.1节)提取关键的任务特定信息以及相关约束。基于提炼出的信息,在包含一系列高级思维(思维模板)的元缓冲区(第3.2节)中搜索,并检索一个最相关的思维模板用于该任务。随后,用更多任务特定的推理结构实例化检索到的思维模板,并进行推理过程。最后,使用缓冲区管理器(第3.3节)来总结整个问题解决过程和提炼高级思维,以增加元缓冲区的容量。
3.1 问题提炼器
大多数复杂任务包含隐含约束、复杂的对象关系以及其上下文中的复杂变量和参数。因此,在推理阶段,LLMs需要克服三个主要挑战:提取重要信息、识别潜在约束以及进行准确的推理。这些挑战对单个LLM来说将是一个巨大的负担。因此,将任务信息的提取和理解阶段与最终的推理阶段分离开来,通过在推理过程中预置一个问题提炼器来实现这一点。更具体地说,设计了一个元提示ϕ来首先提炼和形式化任务信息。提炼后的任务信息可以表示为:
xd = LLM(ϕ(x))
其中是任务陈述。由于篇幅限制,关于问题提炼器的详细元提示放在了附录A.2中。
xd = LLM(ϕ(x))
其中是任务陈述。由于篇幅限制,关于问题提炼器的详细元提示放在了附录A.2中。

问题浓缩与转化
使用问题提炼器从输入任务中提取关键元素,重点关注:(1) 解决问题必需的参数和变量;(2) 输入任务的目标及其相应的约束。然后,将这些提炼出的信息重新整理成一个清晰、易于理解的格式,以便用于后续的推理阶段。接着,将特定问题转化为高级概念和结构。这个转换过程将复杂的现实世界问题,如复杂的数学应用场景,分解为更简单的、多步骤的计算,从而使得后续高级思维的检索变得更加容易。
3.2 利用元缓冲区的思维增强推理
动机:人类在解决问题时经常会总结和归纳出更高层次的指导原则,然后将它们应用到相关问题上。受此启发,提出了元缓冲区(meta-buffer),这是一个轻量级库,它包含了一系列用于处理各种类型问题的高级思维(思维模板)。与需要特定指令或示例的传统方法不同,我们的高级思维模板在解决不同问题时可以被自适应实例化,从而为LLMs提供了更高的精确性和灵活性。
思维模板:作为一种高层次的指导原则,思维模板存储在元缓冲区中,并由缓冲区管理器从各种问题解决过程中获得。关于获取思维模板的详细信息将在3.3节中介绍。由于BoT旨在为各种任务提供一个通用的推理方法,相应地将思维模板分类为六个类别:文本理解、创造性语言生成、常识推理、数学推理、编码编程和应用排程。我们在附录A.1中提供了一些示例思维模板。这样对思维模板的分类可以促进模板检索,为不同问题找到最合适的解决方案。这里我们将思维模板、模板描述及其相应类别表示为(Ti, DTi, Ck),其中i表示元模板的索引,k ∈ Z+且1 ≤ k ≤ 6,表示Ck属于六个类别中的一个,DTi是思维模板的描述。
模板检索:对于每个任务,BoT通过计算描述DTi和xd之间的嵌入相似度来检索一个与提炼问题xd高度相似的思维模板Ti。检索过程可以表示为:
其中
N是元缓冲区的大小,是一个普通文本嵌入模型,Tj表示检索到的思维模板。我们设置了一个阈值δ(推荐0.5~0.7)来判断当前任务是否为新任务。因此,如果,我们将任务x识别为一个新任务。
其中
N是元缓冲区的大小,是一个普通文本嵌入模型,Tj表示检索到的思维模板。我们设置了一个阈值δ(推荐0.5~0.7)来判断当前任务是否为新任务。因此,如果,我们将任务x识别为一个新任务。
实例化推理:对于每个具体任务,根据当前任务是否为新任务来讨论实例化推理的两种情况:第一种情况是我们成功检索到任务的思维模板Tj。在这种情况下,如图2所示,思维增强推理将会被自适应地实例化为适合的推理结构,通过设计的实例化提示(见附录A.3)。例如,在一个一步将死的问题中,实例化更新棋盘状态的模板来逐步解决问题。因此,我们使用提炼信息xd和检索到的模板Tj进行任务x的实例化推理,并产生其解决方案Sx为:
实例化
其中LLM实例化表示具有LLM的实例化推理器。
实例化
其中LLM实例化表示具有LLM的实例化推理器。
在第二种情况下,任务被识别为一个新任务。为了使适当的实例化推理成为可能,准备了三个通用的粗粒度思维模板以供使用。根据提炼的任务信息xd,BoT将自动分配一个合适的思维模板到推理过程中。详细的预定义思维模板包含在附录A.3中。