思维链(CoT)什么时候用?
Prompt工程中CoT与逻辑引导策略的适用场景与作用机制
原题:在构建大模型的输入提示时,什么情况下需要引入思维链(Chain-of-Thought)或逻辑引导策略?请举例说明其作用机制。
Prompt工程 · 华为真题
回答与解析
需要引入CoT的典型场景
1. 复杂数学/逻辑推理
- 多步计算、符号运算、几何证明
- 需要显式展示推导过程,而非直接给答案
2. 多跳推理任务
- 阅读理解中需要整合多个文档信息
- 因果链分析、事件时序推理
3. 需要可解释性的决策场景
- 医疗诊断、法律分析、风险评估
- 用户需要理解"为什么"而不仅是"是什么"
4. Agent规划与工具调用
- 任务分解为子步骤,每步决定调用哪个工具
- 错误时可回溯到具体步骤定位问题
作用机制与示例
核心机制:将隐式推理显式化,通过"思考→行动→观察"的循环,利用自回归特性逐步生成中间状态。
示例对比(数学应用题):
| 方式 | 输入 | 输出 |
|---|---|---|
| 标准Prompt | "小明有5个苹果,给了小红2个,又买了3个,现在有几个?" | "6个"(可能错) |
| CoT Prompt | "让我们一步步思考:[问题]" | "初始5个→给掉2个剩3个→再买3个→3+3=6个" |
关键:中间步骤(5-2=3, 3+3=6)成为显式上下文,降低跳步错误概率。
常用变体
- Zero-shot CoT:加一句"Let's think step by step"即可触发
- Few-shot CoT:提供带推理过程的示例,引导格式
- Self-consistency:采样多条CoT路径,投票选最优答案
实际落地时,Agent场景常将CoT与ReAct结合,让模型输出Thought: → Action: → Observation:的结构化推理链。
学习建议
建议系统学习该知识点
口语版讲法(约4分钟)
- 一句话定位:CoT本质是让模型把隐式推理显式化
- 边界划分:简单问题不需要CoT,复杂推理才用,落地常与ReAct结合
- 业务场景:客服退款多步计算,Agent规划与工具调用
- 落地风险:CoT会消耗更多token,且对模型能力有要求
- 工程师姿态:我更倾向在需要可解释性和复杂推理时用,并搭配self-consistency
这道题问的是什么时候要用思维链,其实本质是在问:大模型的推理能力什么时候需要显式地拆成中间步骤,而不是直接给答案。因为模型天生是黑盒,你问它5+3它直接蹦出8,但问它一个多步问题,比如‘小明有5个苹果,给了小红2个,又买了3个,现在有几个?’它可能直接猜6,但中间跳步就会错。CoT就是让模型把‘5-2=3,3+3=6’这一步一步写出来,把隐式推理显式化。
那什么场景下必须用呢?先说边界。简单问题,比如‘今天天气怎么样’,直接回答就行,不需要CoT。但遇到复杂数学推理、多跳推理、需要可解释性的决策,或者Agent规划,就必须上CoT。举个例子,客服退款场景:用户说‘我买了两件衣服,一件199,一件299,用了满300减50的券,后来退了一件199的,应该退我多少钱?’这种问题,如果直接让模型回答,它可能算错,因为涉及多步计算和券分摊。用CoT的话,模型会一步步写:‘总价199+299=498,用券后498-50=448,分摊到两件衣服,每件折扣比例是448/498≈0.9,所以退的那件实际支付199 0.9≈179.1,退179.1元。’这样中间步骤就显式了,不仅准确,而且可解释。
再一个,Agent规划场景,比如模型要调用多个工具。你让它‘订一个明天从北京到上海的机票,再订一家离虹桥机场近的酒店’,如果不用CoT,模型可能直接输出一个乱序的Action。用CoT配合ReAct,模型会输出:Thought: 先查航班,再查酒店,需要知道航班到达时间才能选靠近机场的酒店。Action: search flight(北京, 上海, 明天)。然后根据结果再Action: search hotel(虹桥机场附近)。这样每一步都有推理,出错也能回溯到具体步骤。
但落地时有个风险,就是CoT会消耗更多Token,而且对模型能力有要求。如果模型本身逻辑能力弱,CoT反而可能放大错误,因为中间步骤越多,错误累积的概率越高。所以前提是模型得有基本的推理能力,比如GPT-4或Claude这种级别的。上线我会特别关注token成本和延迟,如果业务对实时性要求高,比如客服实时对话,我会在简单问题上直接回答,只在复杂问题上触发CoT,或者用Zero-shot CoT,加一句‘Let's think step by step’动态触发。
另外,光靠单条CoT路径还不够,因为模型可能走错分支。所以我更倾向用Self-Consistency,采样多条CoT路径,然后投票选最一致的答案。比如刚才的退款问题,跑5次,4次都算出179.1,那就很稳。这其实引出一个问题:CoT的路径多样性和答案一致性怎么平衡?这个我后面可以再展开。
所以总结一下,我会把CoT看成一种‘推理脚手架’,在需要可解释性和复杂推理时必用,但不会无脑全上。我的取舍是:简单问题直接答,复杂问题用CoT+Self-Consistency,Agent场景用CoT+ReAct。这样既控制了成本,又保证了质量和可解释性。
关键一句:Self-Consistency可以弥补单条CoT路径的不稳定性,但路径多样性和答案一致性需要平衡。
面试官还可能这样问
- 问法 1 · 场景切入
假设我们要做一个智能客服,用户问‘我上周订的货为什么还没到’,系统需要查订单、看物流、算天数。如果直接让大模型回答,它可能跳步给出错误结论。你一般会在什么情况下给模型加思维链,让它一步步推理?
- 问法 2 · 层层追问
你平时怎么让大模型做多步推理的?……如果直接让它输出答案,它容易错,那你怎么引导它把推理过程写出来?……比如数学题或者需要查多个信息才能回答的问题,具体什么时候必须用CoT?
- 问法 3 · 直球架构
请说一下,在什么场景下必须引入思维链或逻辑引导策略?举例说明它的作用机制,比如CoT是怎么减少推理错误的,以及它和标准prompt的区别。