思维链与高级推理技巧
什么是思维链(Chain of Thought)
思维链(CoT)是一种让 AI 在给出最终答案前,先展示推理过程的提示技术。研究表明,CoT 能显著提高 LLM 在数学、逻辑和复杂推理任务上的表现。
Zero-shot CoT
最简单的思维链技巧 — 只需在提示词末尾加一句话。
一个商店有 23 个苹果。如果用掉 20 个做苹果汁,又买了 6 个,还剩多少?
Let's think step by step.
效果对比:
| 方式 | 输出 |
|---|---|
| 直接问 | "9 个"(可能直接猜) |
| + "Let's think step by step" | "初始 23 个 → 用掉 20 个剩 3 个 → 买了 6 个 → 3+6=9 个" |
虽然这个例子答案一样,但在复杂问题上,展示推理过程能大幅减少错误。
Few-shot CoT
提供带推理过程的示例,让模型学会如何思考。
<examples>
<example>
<question>Roger has 5 tennis balls. He buys 2 more cans of tennis balls. Each can has 3 balls. How many does he have now?</question>
<reasoning>
Roger started with 5 balls.
2 cans × 3 balls/can = 6 new balls.
5 + 6 = 11 balls total.
</reasoning>
<answer>11</answer>
</example>
</examples>
<question>
A cafeteria had 23 apples. They used 20 for lunch and bought 6 more. How many do they have?
</question>
Show your reasoning step by step, then give the final answer.
Self-Consistency(自洽性)
对同一问题多次采样(用较高 temperature),取多数答案。适合有明确正确答案的任务。
使用方式:
请用 3 种不同的方法解决这个问题,然后比较结果:
一辆车以 60km/h 的速度行驶 2.5 小时,然后以 80km/h 的速度行驶 1.5 小时。总路程是多少?
方法 1:直接计算
方法 2:用公式 d = v × t
方法 3:分段计算后求和
最后,确认三种方法的结果是否一致。
Tree of Thought(思维树)
让模型探索多个推理路径,评估每条路径的可行性,选择最优解。
<task>
设计一个高并发的消息队列系统,日处理量 1000 万条消息。
</task>
<instructions>
请用思维树方法分析:
Step 1: 列出 3 种可能的架构方案
Step 2: 对每种方案,分析优缺点
Step 3: 评估每种方案在以下维度的表现(1-5 分):
- 吞吐量
- 延迟
- 可靠性
- 运维复杂度
- 成本
Step 4: 选择最优方案并说明理由
</instructions>
实战对比:有无 CoT 的差异
场景:代码 Bug 分析
不用 CoT:
这段代码有什么 bug?
function sum(arr) { let s = 0; for(let i = 0; i <= arr.length; i++) s += arr[i]; return s; }
→ 可能只说"有 off-by-one 错误"
用 CoT:
分析这段代码的执行过程,逐步检查每次循环的状态,找出所有 bug:
function sum(arr) { let s = 0; for(let i = 0; i <= arr.length; i++) s += arr[i]; return s; }
请模拟 arr = [1, 2, 3] 的执行过程。
→ 会详细展示 i=0,1,2,3 时的状态,发现 i=3 时 arr[3] 是 undefined,s 变成 NaN
场景:架构决策
不用 CoT:
我应该用 Redis 还是 Memcached?
用 CoT:
我需要为一个电商平台选择缓存方案。请从以下维度逐步分析 Redis 和 Memcached:
1. 数据结构支持
2. 持久化需求
3. 集群方案
4. 内存效率
5. 我的场景:商品详情缓存 + 购物车 + 排行榜
先分析每个维度,再给出最终建议。
提示词模板集合
调试助手
我遇到了以下错误:
<error>
{粘贴错误信息}
</error>
<code>
{粘贴相关代码}
</code>
请按以下步骤分析:
1. 解读错误信息的含义
2. 定位可能的原因(列出所有可能性)
3. 逐个排查每个可能性
4. 给出最可能的根因和修复方案
系统设计分析
请用结构化思维分析以下系统设计问题:
<problem>{描述问题}</problem>
分析框架:
1. 需求澄清:列出需要确认的假设
2. 粗略估算:QPS、存储、带宽
3. 高层设计:核心组件和数据流
4. 深入设计:关键组件的详细方案
5. 瓶颈分析:可能的性能瓶颈和解决方案
代码重构建议
<code>{粘贴代码}</code>
请逐步分析这段代码的问题:
1. 首先理解代码的功能和意图
2. 识别代码异味(code smells)
3. 对每个问题,解释为什么它是问题
4. 提供重构后的代码
5. 解释重构带来的改进
总结
| 技术 | 复杂度 | 适用场景 | 效果提升 |
|---|---|---|---|
| Zero-shot CoT | 低 | 通用推理 | 中等 |
| Few-shot CoT | 中 | 格式化推理 | 高 |
| Self-Consistency | 中 | 有确定答案 | 高 |
| Tree of Thought | 高 | 复杂决策 | 很高 |