跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

大模型复杂推理:思维链(CoT)基础用法与进阶技巧

综述由AI生成大模型思维链(CoT)的基础用法与进阶技巧。内容包括 Few-shot COT 和 Zero-shot COT 的原理及效果对比,分析了激活词对推理的影响。进阶部分讲解了 Self-Consistency 通过投票机制提升准确率的方法,以及 Least-to-Most 通过问题拆解循序渐进解决的策略。文章还提供了 Python 代码实现示例,并总结了 CoT 技术的局限性如幻觉风险和 Token 成本,最后给出了实际应用中的最佳实践建议。

RedisGeek发布于 2025/2/7更新于 2026/6/219 浏览
大模型复杂推理:思维链(CoT)基础用法与进阶技巧

大模型复杂推理:思维链(CoT)基础用法与进阶技巧

COT 基础用法

Few-shot COT

Chain of Thought Prompting Elicits Reasoning in Large Language Models 是 CoT 的开山之作。其核心逻辑是通过 Few-shot 方案,引导模型生成中间推理过程,从而提高解决复杂问题的能力。

通过在 Few-shot 样本中加入推理过程,可以引导模型在解码过程中,先给出推理过程,再得到最终答案。类似中间推理过程的加入,可以显著提高模型在常识推理、数学问题、符号推理等复杂推理问题上的表现。

COT 带来的效果提升具有涌现性,通常在百亿参数以上的大模型上才出现显著更优的效果。COT 带来的效果提升在复杂问题例如 GSM8K 上表现更显著。

Few-shot 模板构建示例

我们使用 Belle 的数学 COT 指令样本采样 10 个构建了一组 few-shot 思维链指令。以下是一个经典的汽车相遇问题测试:

问题: 两辆汽车从相距 500 千米的两城同时出发,相向而行。一辆摩托车以每小时 80 千米的速度在两辆汽车之间不断往返联络。已知这两辆汽车的速度分别是每小时 40 千米和 60 千米,求两汽车相遇时,摩托车共行驶了多少千米?

正确解法: 500 / (40 + 60) * 80 = 400 千米

以下是分别使用 ChatGPT 和 ChatGLM 在 Greedy-search 模式下进行解码的结果对比:

Prompt 类型ChatGPT 输出结果ChatGLM-6B 输出结果
直接提问设两汽车相遇时间为 t 小时... 代入可得,摩托车共行驶了 800 千米。(错误)设两汽车相遇时,摩托车行驶了 x 小时... 因此,两汽车相遇时,摩托车共行驶了 4000 千米。(错误)
Few-shot COT设摩托车共行驶了 x 千米... 根据摩托车的速度和时间,可以得到:x = 80 千米/小时 × 5 小时 = 400 千米。(正确)设两汽车相遇时,摩托车行驶了 x 小时... 因此,摩托车共行驶了 400 千米。(正确)

加入 COT 之后,ChatGPT 和 ChatGLM 都答对了。虽然不加入 Few-shot COT 模型同样会进行推理再给出答案,但加入 Few-shot COT 能显著提升准确率。

论文还进行了一些消融实验:

  1. 准确率提升是否来自数学公式的引入? 尝试了 few-shot 部分只加入公式并不能显著提升效果。个人感觉这个消融实验不太完整,因为很多复杂 MWP 问题模型很难映射到单一的公式,而先进行问题分解后再逐步映射到中间公式,在我们的场景里是可以提升效果的。
  2. 准确率提升是否因为 Few-shot-COT 帮助模型更好的召回相应的知识? 尝试了先给出答案再进行推理的 prompt 模板,发现效果显著变差。说明 Few-shot-COT 只是激活模型给出推理,推理过程本身才是模型效果提升的核心。

Zero-shot COT

除了使用 Few-shot-COT 样本可以让模型给出推理过程,单纯用指令也可以让模型给出思维链,且能进一步提升模型复杂问题推理能力。论文中效果最好的激活思维链的指令是 "Let's think step by step"。

Zero-shot-COT 在论文中需要两步解码,第一步用 "Let's think step by step" 让模型给出推理过程,第二步把推理过程和问题一起输入模型,让模型给出结果。但实际使用时你会发现,基本上第一步解码模型就会在推理结束时给出结果,所以其实 Zero-shot-COT 也可以直接一步到位。

不同激活词效果对比
激活词ChatGPT 结果ChatGLM 结果
请一步步的推理分析解决以下问题
设两汽车相遇时间为 t 小时... 因此,摩托车共行驶的距离为 400 千米。(正确)
设两汽车相遇时,摩托车行驶了 x 小时... 因此,两汽车相遇时,摩托车共行驶了 3000 千米。(错误)
请逐步推理回答问题设两汽车相遇时间为 t 小时... 因此,两汽车相遇时,摩托车共行驶了 800 千米。(错误)设两汽车相遇时,摩托车行驶了 x 小时... 因此,两汽车相遇时,摩托车共行驶了 490 千米。(错误)

整体提示词的效果比较玄学,但只要指令词有引导模型逐步推理的含义,对模型效果都是有提升的。Zero-shot-COT 同样具有规模效应,只在大模型上才表现出超越常规指令的效果。

COT 进阶用法

以上不论是 Few-shot 还是 Zero-shot COT 都是基于模型自身给出推理过程,而人工不会过多干预推理过程。在进阶用法中会对推理过程做进一步的人工干预来引导解码步骤,进一步提升解码准确率,且以下的进阶方案是可以组合使用的。

Self-Consistency

Self-Consistency 是在 Few-shot-COT 的基础上,用 Ensemble 来替换 Greedy Search,来提高解码准确率的一种解码策略。论文显示加入 Self-Consistency,可以进一步提升思维链的效果(GSM8K +17.9%)。

在使用大模型进行固定问题回答例如多项选择、数学问题时,我们往往会采用 Greedy-Search 的方式来进行解码。但每一步都选 Top Token 的局部最优的解码方案很显然不是全局最优的,而 Self-Consistency 提供了一种无监督的 Ensemble 方案,来对模型随机解码生成的多个回复'投票'出一个更准确答案。

Self-Consistency 的基础假设很人性化:同一个问题不同人也会给出不同的解法,但正确的解法们会殊途同归得到相同的正确答案。以此类比模型解码,同一问题不同随机解码会得到不同的思维链推理过程,期望概率最高的答案,准确率最高。

聚合方案

针对解码输出,如何对答案进行聚合,论文对比了以下几种方案:

  1. Major Vote: 直接对解码后的结果投票,投出一个出现概率最高的答案。该说不说大道至简,最简单的方案往往是最好的。
  2. Normalized Weighted Sum: 计算路径的概率,既模型输出的每一个 token 条件解码概率求和,并对解码长度 K 进行归一化。
参数设置建议
  • Temperature: Temperature 太低会导致解码差异太小,投票投了个寂寞;太高又会影响最终的准确率。Top-p=0.4, Temperature=0.5 是一个不错的测试起点。
  • 采样次数: Major Vote 的效果很依赖候选样本数。采样 5 次以上就能超过 Greedy 解码,具体解码次数看你家有多少余粮吧。

Least-to-Most

如果说上面的 Self-Consistency 多少有点暴力出奇迹,那 Least-to-Most 明显更优雅一些。思路很简单,在解决复杂问题时,第一步先引导模型把问题拆分成子问题;第二步逐一回答子问题,并把子问题的回答作为下一个问题回答的上文,直到给出最终答案,主打一个循序渐进的解决问题。

实现流程
  1. Problem Reducing(问题拆解): 引导模型将复杂问题拆解成几个必须的中间解题步骤并给出对应问题。
    • Prompt 示例:"对以下数学问题进行问题拆解,分成几个必须的中间解题步骤并给出对应问题:"
  2. Sequentially Solve(子问题有序回答): 把 Reduce 步骤的子问题解析出来,按顺序输入模型,先回答第一个子问题,再把第一个子问题和回答一起拼接作为上文,继续回答第二个子问题。

代码实现指南

在实际工程中,我们可以通过 Python 脚本快速构建 Few-shot CoT 的 Prompt。以下是一个简单的实现示例:

def build_cot_prompt(question, examples):
    """
    构建 Few-shot Chain of Thought Prompt
    
    Args:
        question: 当前待解决的问题
        examples: 包含推理过程的示例列表,格式为 [(question, reasoning, answer), ...]
    
    Returns:
        str: 完整的 Prompt 字符串
    """
    prompt_parts = []
    for ex_q, ex_r, ex_a in examples:
        prompt_parts.append(f"Question: {ex_q}\nReasoning: {ex_r}\nAnswer: {ex_a}")
    
    prompt_parts.append(f"Question: {question}\nReasoning:")
    return "\n".join(prompt_parts)

# 示例数据
examples = [
    (
        "小明有 5 个苹果,吃了 2 个,还剩几个?",
        "小明初始有 5 个苹果。他吃了 2 个,意味着数量减少。我们需要计算 5 减去 2。",
        "3"
    ),
    (
        "一辆车以 60km/h 行驶 2 小时,走了多远?",
        "距离等于速度乘以时间。速度是 60km/h,时间是 2 小时。计算 60 乘以 2。",
        "120km"
    )
]

problem = "一辆车以 80km/h 行驶 3 小时,走了多远?"
prompt = build_cot_prompt(problem, examples)
print(prompt)

局限性与最佳实践

尽管 CoT 技术显著提升了大模型的推理能力,但在实际应用中仍需要注意以下几点:

  1. 幻觉风险: 即使有了推理过程,模型仍然可能编造事实或逻辑错误。对于关键任务,建议结合验证机制。
  2. Token 成本: CoT 会增加输出长度,从而增加 Token 消耗和延迟。在生产环境中需权衡性能与成本。
  3. 领域适配: 通用领域的 CoT 效果较好,但在垂直领域(如医疗、法律),可能需要针对特定术语和逻辑微调 Few-shot 样本。
  4. 评估指标: 不要仅依赖准确率,还需关注推理过程的可解释性和一致性。

总结

思维链(CoT)通过显式地引导模型生成推理步骤,有效解决了大模型在复杂推理任务上的短板。从基础的 Few-shot 和 Zero-shot 方法,到进阶的 Self-Consistency 和 Least-to-Most 策略,CoT 技术栈正在不断丰富。开发者应根据具体业务场景,选择合适的 Prompt 策略,并结合代码实现进行优化,以最大化利用大模型的推理潜力。

目录

  1. 大模型复杂推理:思维链(CoT)基础用法与进阶技巧
  2. COT 基础用法
  3. Few-shot COT
  4. Few-shot 模板构建示例
  5. Zero-shot COT
  6. 不同激活词效果对比
  7. COT 进阶用法
  8. Self-Consistency
  9. 聚合方案
  10. 参数设置建议
  11. Least-to-Most
  12. 实现流程
  13. 代码实现指南
  14. 示例数据
  15. 局限性与最佳实践
  16. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 人工智能 AI 产品经理与传统产品经理的工作差异详解
  • AIGC 世界模型 (World Model) 技术解析
  • Nano Banana进行AI绘画中文总是糊?一招可重新渲染,清晰到可直接汇报
  • PCL 点云处理核心算法与模块功能汇总
  • 人工智能对上位机系统的全面重塑与影响分析
  • 从 MVP 到千万级并发:AI 在前后端开发中的差异化落地指南
  • C++ 智能指针详解:内存管理的自动化实践
  • Spring Cloud Gateway 路由、过滤器与限流机制详解
  • 龙虾 AI(OpenClaw)跨平台部署与日常使用教程
  • 短波发射台共址 DRM 监测:射频前端的挑战与应对
  • 基于 CasADi 的无人机非线性模型预测控制(NMPC)设计与仿真
  • JDK-17 安装与配置教程
  • 鸿蒙系统卓易通安装应用的通知异常分析
  • Python 从零手写神经网络:原理、代码与可视化实战
  • Java Swing 界面美化技巧与实践
  • Java 核心面试知识点整理:基础、并发与容器实战
  • 基于 LoRA 微调多模态大模型 BLIP-2 的详细步骤
  • 受限内网环境下 TensorFlow 镜像拉取优化方案
  • HarmonyOS 秋季更新深度解析:分布式架构与开发演进
  • Xcode 真机调试报错:Developer Disk Image 无法卸载解决方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online