思维链(CoT)理解分享

摘要

CoT (Chain-of-Thought)通过生成中间推理步骤来提升模型的推理能力,主要包括 Few-Shot CoTZero-Shot CoT 两种应用方式。ToT(Tree of Thought)是对CoT思想的扩展,通过构建思维树提供多种解决方案,帮助分析和解决复杂问题。

什么是思维链

思维链是一种引导大模型像人类一样,按照顺序一步步思考问题解决方案的方法。

有什么效果

  • 提升大模型的回答正确率(质量),减少幻觉。
    • 前提条件:目标模型参数需大于20b才能有效。

备注:GPT-3的参数数量是175b,3.5版本则更多。

如何实现

通过优化提示词,将用户输入的问题拆解成多个步骤,引导大模型按顺序逐步执行。

  • CoT:通过生成中间推理步骤来强化模型的推理能力。应用方法包括 Few-Shot CoT(通过提供链式思考示例)和 Zero-Shot CoT(直接告知模型按部就班推理)。

  • ToT:进一步拓展了CoT思想。ToT框架为每个任务定义具体思维步骤和候选项数量,通过多思考路径解决复杂问题,结合语言模型生成能力、搜索算法和强化学习达到更好效果。

Few-Shot CoT(少量示例)

模板设计总结:

  • 首先阐述AI角色为xxx助手,目标是xxx。
  • 接着描述思考步骤,先理解客户需求,再考虑目标,最后给出推荐并解释原因。同时提供示例。这些示例展示AI如何依思维链思考给出答案。

例如:

cot_template = """ 作为一个为水果电商公司工作的AI助手,我的目标是帮助客户根据他们的喜好做出明智的决定。

我会按部就班的思考,先理解客户的需求,然后考虑各种水果的涵义,最后根据这个需求,给出我的推荐。 同时,我也会向客户解释我这样推荐的原因。

示例 1: 人类:我想找一种象征爱情的水果。

AI:象征爱情的水果之一是草莓。草莓以其鲜艳的红色和心形外观,成为爱情的象征,通常与浪漫和情感联系在一起。因此,考虑到这一点,我会推荐草莓。草莓心形外观:草莓的心形轮廓与爱情的传统符号------心形------相吻合,使其成为爱情的自然象征。鲜艳的红色:草莓的红色在许多文化中与激情和爱情联系在一起,象征着热情和浓烈的感情。甜美的味道:草莓的甜味象征着爱情的甜蜜和愉悦。这是你在寻找的。

示例 2: 人类:我想要一些独特和奇特的水果。

AI:从你的需求中,一种独特和奇特的水果是"火龙果"。这种水果以其独特的外观和口感而闻名,通常具有明亮的粉红色皮肤和点缀着黑色种子的白色或红色果肉。因此,我建议你考虑火龙果。火龙果独特性:火龙果的外形和味道与众不同,为寻求新奇体验的水果爱好者提供了完美选择。而且,火龙果视觉吸引力:其鲜艳的颜色和特殊的形状在视觉上吸引人,常常成为餐桌上的焦点。也可能会吸引你。

"""

langchain中的COT相关demo


Zero-Shot CoT(没有示例)

简单地增加一句提示词即可:

让我们一步步的思考(Let's think step by step)

ToT

目前主流的有两种实现方式:

1.(通用版)像langchain那样

  1. 生成可能的解决方案
  2. 评估每个解决方案
  3. 深入分析评估每个解决方案
  4. 最终排名

参考资料:https://arxiv.org/pdf/2305.08291

langchain中的tot相关实现

参考:

tot --- 🦜🔗 LangChain documentation

Demo(非langchain官方)

https://medium.com/@astropomeai/implementing-the-tree-of-thoughts-in-langchains-chain-f2ebc5864fac

提问代码
python 复制代码
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.chat_models import ChatOpenAI


template ="""
Step1 :
 
I have a problem related to {input}. Could you brainstorm three distinct solutions? Please consider a variety of factors such as {perfect_factors}
A:
"""

prompt = PromptTemplate(
    input_variables=["input","perfect_factors"],
    template = template                      
)

chain1 = LLMChain(
    llm=ChatOpenAI(temperature=0, model="gpt-4o-mini"),
    prompt=prompt,
    output_key="solutions"
)

template ="""
Step 2:

For each of the three proposed solutions, evaluate their potential. Consider their pros and cons, initial effort needed, implementation difficulty, potential challenges, and the expected outcomes. Assign a probability of success and a confidence level to each option based on these factors

{solutions}

A:"""

prompt = PromptTemplate(
    input_variables=["solutions"],
    template = template                      
)

chain2 = LLMChain(
    llm=ChatOpenAI(temperature=0, model="gpt-4o-mini"),
    prompt=prompt,
    output_key="review"
)

template ="""
Step 3:

For each solution, deepen the thought process. Generate potential scenarios, strategies for implementation, any necessary partnerships or resources, and how potential obstacles might be overcome. Also, consider any potential unexpected outcomes and how they might be handled.

{review}

A:"""

prompt = PromptTemplate(
    input_variables=["review"],
    template = template                      
)

chain3 = LLMChain(
    llm=ChatOpenAI(temperature=0, model="gpt-4o-mini"),
    prompt=prompt,
    output_key="deepen_thought_process"
)

template ="""
Step 4:

Based on the evaluations and scenarios, rank the solutions in order of promise. Provide a justification for each ranking and offer any final thoughts or considerations for each solution
{deepen_thought_process}

请用中文回答
A:"""

prompt = PromptTemplate(
    input_variables=["deepen_thought_process"],
    template = template                      
)

chain4 = LLMChain(
    llm=ChatOpenAI(temperature=0, model="gpt-4o-mini"),
    prompt=prompt,
    output_key="ranked_solutions"
)



from langchain.chains import SequentialChain

overall_chain = SequentialChain(
    chains=[chain1, chain2, chain3, chain4],
    input_variables=["input", "perfect_factors"],
    output_variables=["ranked_solutions"],
    verbose=True
)

print(overall_chain({"input":"human colonization of Mars", "perfect_factors":"The distance between Earth and Mars is very large, making regular resupply difficult"}))
回答结果
json 复制代码
{
  "input": "human colonization of Mars",
  "perfect_factors": "The distance between Earth and Mars is very large, making regular resupply difficult",
  "ranked_solutions": [
    {
      "rank": 1,
      "title": "闭合生态生命支持系统(CELSS)",
      "evaluation": "CELSS 被认为是最有前途的解决方案,因为它直接解决了火星殖民过程中的基本生存需求,包括食物和空气的自给自足。成功的生态管理能够确保殖民者的健康与福祉,为建立可持续的社区奠定基础。",
      "pros": [
        "潜力大:能够在本地生产食品和氧气,减少对地球补给的依赖,是长期生存的关键。",
        "创新性:与农业生物技术公司合作,能加速开发适合火星条件的作物品种。",
        "可学习性:在地球进行模拟实验可以及时调整策略,降低在火星试验中的风险。"
      ],
      "final_thought": "尽管面临生态崩溃和心理健康挑战的风险,采用灵活的补救措施(如水培系统与心理健康监测)可以增强系统的韧性。"
    },
    {
      "rank": 2,
      "title": "模块化栖息地设计与3D打印",
      "evaluation": "模块化栖息地设计和3D打印技术的整合提供了快速适应与扩展的可能性,但相较于CELSS,其生存性与可持续性依赖于材料的可用性与性能。",
      "pros": [
        "精确性与扩展性:能够迅速建立适宜的居住环境并根据需要进行扩展,促进社区的聚集与互助。",
        "资源利用:强调在火星原材料的现场使用(ISRU),有助于减少运输、建造的经济负担。"
      ],
      "final_thought": "虽然存在设备故障和环境挑战的隐忧,适应性的设计能帮助应对火星的极端条件,促进创新与文化融合。"
    },
    {
      "rank": 3,
      "title": "建立太空经济与资源网络",
      "evaluation": "建立火星经济网络能激励投资与资源开采,但相比之下,依赖外部市场和资源的方式较为脆弱,容易受到全球经济波动的影响。",
      "pros": [
        "经济激励:通过法律框架与投资激励,可以吸引私营部门的参与与开发。",
        "国际合作:促进国际间的合作与资源开发,有助于在火星建立国际化的社区。"
      ],
      "final_thought": "尽管其潜力巨大,一旦市场不稳定可能会导致发展的停滞,因此需要注意平衡经济增长与环境可持续性的矛盾。"
    }
  ],
  "overall_conclusion": "这三种解决方案各自具有不同的优缺点和实施挑战。闭合生态生命支持系统在生存需求的自给自足上具备最高的潜力,适合长期的人类火星殖民。模块化栖息地设计为栖息环境的快速适应提供了可能,而建立太空经济则更依赖于外部因素。通过有效的规划和合作,各种解决方案的结合使用,能够促进火星殖民的成功实施。"
}

2.(提示词版)提供示例,让大模型按照示例的讨论去分析、解决问题

模板设计总结
  1. 理解用户问题、需求。
  2. 考虑可能的选项或解决方案并说明原因。
  3. 根据需求筛选最佳选择,分析各候选方案是否符合。
  4. 给出建议,如推荐xxx方案等。
优点:速度快、成本低、灵活性高(可以根据不同类型的问题采用相应的tot示例)

直接给出一个tot示例(这个示例可以从上面通用版使用高级模型一步步提问得出),告诉AI就按照这种方式去思考、分析和解决用户给出的问题。


总结

思维链(CoT)和思维树(ToT)为大模型的推理能力提供了强有力的支持,通过系统化的思考步骤和多路径分析,能够有效提升模型的准确性和可靠性。这种方法不仅推动了人工智能技术的发展,也为解决复杂问题提供了新的思路。随着技术的不断进步,我们有理由相信,未来的AI将能够更好地理解和服务于人类的多样化需求,为社会带来更多的创新和改变。让我们期待一个更加智能和高效的未来!


💥 更多精彩文章:期待与您一起共同成长。✨加入我们的旅程,共同发现更多精彩!🌟🌟


参考文档

基于langchain实现的COT demo:

思维链的介绍文章(写的很全面):

思维链作用论文:

思维链的原理:

AutoGPT的原理(大白话):

总结笔记

相关推荐
砚边数影1 小时前
AI数学基础(一):线性代数核心,向量/矩阵运算的Java实现
java·数据库·人工智能·线性代数·矩阵·ai编程·金仓数据库
Darkbluelr2 小时前
[开源发布] Dev-PlayBooks:让 AI 编程不再“抽卡”,面向 Claude/Codex等 的确定性Spec+TDD开发工作流框架
人工智能·软件工程·ai编程
github.com/starRTC2 小时前
Claude Code中英文系列教程:在云上虚拟机并行运行多个会话
ai编程
HyperAI超神经3 小时前
【vLLM 学习】Rlhf Utils
人工智能·深度学习·学习·机器学习·ai编程·vllm
小雨青年6 小时前
开篇 2026 开发者新范式 本地逻辑引擎结合云端国产大模型架构详解
ai编程
cloud studio AI应用8 小时前
CodeBuddy 一周更新亮点丨IDE 新增 Hooks 等功能、CLI 新增Prompt 建议、SDK 自定义工具支持
腾讯云·ai编程·codebuddy
大闲在人9 小时前
Trae builder 实战: 让 C++ 函数像 Python 一样返回多个值
c++·python·ai编程
ElfBoard10 小时前
ElfBoard技术贴|如何在ELF-RK3506开发板上构建AI编程环境
c语言·开发语言·单片机·嵌入式硬件·智能路由器·ai编程·嵌入式开发
hbstream海之滨视频网络技术10 小时前
国内三大AI编程IDE对比(一):直观印象与模型能力
ide·ai编程
斯普信专业组11 小时前
免费AI编程工具:Trae,Qoder,CodeBuddy使用对比(下)
ai编程