06-思维引导总结思维链(CoT) 与 思维树(ToT) 思维引导总结 | 豆包MarsCode AI刷题

312 阅读3分钟

1. CoT:思维链提示

1.1 什么是CoT?

CoT的核心是引导模型生成中间推理步骤,通过分步思考增强推理能力。应用方式包括:

  • Few-Shot CoT:在提示中提供解题示例和中间推理步骤。
  • Zero-Shot CoT:直接提示模型“一步步地思考”,无需示例。

1.2 Few-Shot CoT 示例

针对AI鲜花助手的需求,示例模板如下:

text复制代码AI角色:帮助客户根据需求选择花卉并解释推荐理由。
示例 1:
人类:我想找一种象征爱情的花。
AI:红玫瑰象征爱情,传递强烈情感,适合作为爱情表达。
​
示例 2:
人类:我想要一些独特和奇特的花。
AI:兰花独特且色彩鲜艳,符合你的需求。

通过提示设计引导模型按逻辑思考,生成类似风格的答案。


2. ToT:思维树引导

2.1 什么是ToT?

ToT扩展了CoT的思想,将推理过程视为一棵树,模型通过多条路径探索问题解决方案。核心特点:

  1. 多步骤分解:问题被分为多个子步骤,每个步骤生成多个候选方案。
  2. 搜索与评估:通过搜索算法(如广度优先或深度优先搜索)筛选最佳路径。

2.2 ToT 示例

问题:顾客想为妻子选购花束,要求淡雅颜色和花香。 解决过程

  1. 思维步骤1:理解需求——淡雅颜色和花香。
  2. 思维步骤2:考虑花卉候选——如百合、紫罗兰、粉玫瑰。
  3. 思维步骤3:筛选最佳选择——推荐百合和紫罗兰,解释理由。
  4. 思维步骤4:生成答案——推荐并附加详细解释。

通过ToT框架,模型可系统性探索不同方案,生成清晰、符合逻辑的答案。


3. CoT 与 ToT 的实际应用

3.1 LangChain 中的CoT实现

LangChain 提供了灵活的模板设计和模型集成能力,可以轻松实现Few-Shot CoT和Zero-Shot CoT。代码示例如下:

python复制代码from langchain.prompts import ChatPromptTemplate
cot_template = """
作为一个花店AI助手,我会逐步分析客户需求:
1. 理解需求;
2. 选择合适花卉;
3. 解释推荐理由。
"""
prompt = ChatPromptTemplate.from_template(cot_template)

3.2 ToT 的搜索与决策

通过示例和搜索算法,让模型在多步骤推理中选择最佳答案:

python复制代码from langchain.prompts.example_selector import SemanticSimilarityExampleSelector
​
# 示例选择器,用于ToT的路径选择
example_selector = SemanticSimilarityExampleSelector.from_examples(
    examples, OpenAIEmbeddings(), Chroma, k=3
)
# 使用选择器构建提示模板
prompt = FewShotPromptTemplate(example_selector=example_selector, ...)

4. CoT 与 ToT 的优势总结

特点CoTToT
推理深度生成单一推理路径生成多条推理路径
应用场景简单到中等复杂的任务高复杂度、多步骤问题
技术特点思维链式引导,增强模型逻辑性思维树探索,结合搜索与评估
适用性快速应用于大模型推理任务深入研究复杂问题解决方案

5. 总结与思考

5.1 核心思想

  • CoT通过分步推理提升大模型的复杂问题解决能力,适用于数学、逻辑推理等任务。
  • ToT在CoT基础上扩展了探索能力,使模型能系统性解决多路径问题。

5.2 应用潜力

CoT和ToT可以广泛应用于智能客服、数据分析、复杂决策等领域,结合LangChain进一步优化提示模板设计和推理能力。

5.3 延伸阅读

  • 论文:《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》论文:《大型语言模型中的思维链提示推理》(Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
  • 论文:《Tree of Thoughts: Deliberate Problem Solving with Large Language Models》论文:《Tree of Thoughts:用大型语言模型慎重解决问题》(Deliberate Problem Solving with Large Language Models
  • GitHubtree-of-thoughts 项目