深色模式
Few-shot / CoT / ToT 技巧
摘要:本文面向需要用大模型做推理、分类、抽取等确定性任务的工程师。覆盖三种核心技巧:Few-shot(少样本)、CoT(思维链,含 Zero-shot CoT 与 Self-consistency)、ToT(思维树),并给出何时用、怎么写、成本多少的工程判断。适用模型:GPT-4o / Claude 4 等支持长上下文(≥128K)的模型;论文结论来自 Wei et al. 2022、Kojima et al. 2022、Wang et al. 2023、Yao et al. 2023,均为已发表研究,非本文编造。
核心概念:从「示例」到「搜索」
| 技巧 | 机制 | 适用任务 | 成本倍数 |
|---|---|---|---|
| Few-shot | 在上下文给 N 个(输入,输出)示例 | 分类、抽取、格式对齐 | 1×(示例占 token) |
| CoT | 让模型显式输出中间推理步骤 | 算术、常识、符号推理 | 1×(更长的输出) |
| Zero-shot CoT | 仅加「Let's think step by step」 | 同上,无需示例 | 1× |
| Self-consistency | 采样多条 CoT 路径后投票 | 答案封闭、需高可靠 | N× |
| ToT | 把推理建成可搜索的树,评估+剪枝 | 规划、搜索类难题 | N× 且更高 |
关键论文(均可在 arXiv 核实)
- Few-shot / CoT 奠基:Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models", NeurIPS 2022(arXiv:2201.11903)。
- Zero-shot CoT:Kojima et al., "Large Language Models are Zero-Shot Reasoners", NeurIPS 2022(arXiv:2205.11916)——发现「Let's think step by step」即可触发推理。
- Self-consistency:Wang et al., ICLR 2023(arXiv:2203.11171)。
- ToT:Yao et al., "Tree of Thoughts", NeurIPS 2023(arXiv:2305.10601)。
架构与原理
Few-shot:示例即权重
Brown et al.(GPT-3 论文,2020)证明:足够大的模型可在上下文里从少量示例学会新任务,无需微调。示例质量比数量更重要——Liu et al.(2021)指出,精心挑选的代表性示例常优于随机示例。
CoT:把隐性计算显式化
Wei et al. 发现:在 few-shot 示例里加入中间推理句,模型在 GSM8K、常识、符号推理上大幅跃升。Zero-shot CoT 进一步表明,连示例都不需要,一句「Let's think step by step」就能触发。
自我一致性:多数投票抵消噪声
单条 CoT 可能走错第一步。自我一致性采样多条路径,对最终答案投票,显著提升准确率——适合答案封闭的场景(如数学、选择题)。
ToT:把推理变成搜索
CoT 是单链,一旦首步错误就被带偏。ToT 让模型在状态 s_t=(x, z_{1:t}) 处生成多个候选 thought、评估/投票部分状态、用 BFS/DFS 决定保留哪些分支。Yao et al. 在 Game of 24 上报告:GPT-4 普通 CoT 仅约 4% 解出,ToT 达 74%(该数字为该论文实验设置下的结果,不可外推到其他任务)。
生产实践
选型决策树
- 任务有现成「输入→输出」样例、追求格式稳定 → Few-shot。
- 任务需多步推理、答案封闭 → CoT / Zero-shot CoT。
- 错一次代价高(金融、医疗校验)→ Self-consistency(付 N 倍成本换可靠)。
- 需要搜索/规划、单链易卡死(24 点、路径规划)→ ToT。
1. Few-shot 实现
示例应覆盖边界情况,且与测试分布一致。用分隔符区分示例与真实输入:
text
分类任务示例:
文本:"服务器 CPU 持续 99%" -> 类别:硬件
文本:"用户登录失败" -> 类别:账号
文本:"支付接口超时" -> 类别:依赖服务
文本:"{{real_input}}" -> 类别:1
2
3
4
5
2
3
4
5
2. CoT 实现(Zero-shot)
text
问题:{{problem}}
请一步步思考,先写出推理过程,最后以"答案:"给出结论。1
2
2
3. Self-consistency(Python 伪代码)
python
# 采样 k 条 CoT,对最终答案投票 [未实测,示意]
import collections
answers = []
for _ in range(k): # k 通常 5~20
resp = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": cot_prompt}],
temperature=0.7, # 需一定随机性以产生多样路径
)
answers.append(extract_answer(resp))
final = collections.Counter(answers).most_common(1)[0][0]1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
4. ToT 实现要点
ToT 需要你写「思考生成器 + 状态评估器 + 搜索控制器」三段逻辑,不能只靠一句 prompt。典型实现:
python
# 伪代码:BFS 版 ToT [未实测,示意]
def tot_solve(problem, b=5, depth=4):
states = [init_state(problem)]
for d in range(depth):
candidates = []
for s in states:
candidates += generate_thoughts(s, b) # 每状态扩 b 个
scored = [(evaluate(s), s) for s in candidates] # 评估部分状态
states = [s for _, s in sorted(scored)[-b:]] # 保留 top-b
return best_terminal(states)1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
验证
- Few-shot:在 hold-out 集上测分类/抽取准确率,确认示例无泄漏。
- CoT:对比「直接作答」与「CoT」在推理基准上的准确率差。
- Self-consistency:观察 k 增大时的准确率与成本曲线,找到拐点。
- ToT:在目标难题(如 Game of 24 同类)上对照单链 CoT 成功率。
回滚与清理
推理技巧的副作用
- Self-consistency / ToT 会成倍放大调用量与输出 token,可能瞬间击穿预算与速率限制。灰度验证吞吐后再放量。
- CoT 输出变长会推高首 token 延迟与 KV cache 占用,长上下文场景需配合 上下文压缩与缓存。
- ToT 的搜索参数(branching factor、depth)错误会导致结果不稳定,需固定并纳入 eval。
故障排查
| 现象 | 可能原因 | 排查 |
|---|---|---|
| Few-shot 仍抽错字段 | 示例不代表边界 | 补边界样例、换更相关示例 |
| CoT 推理第一步错 | 任务过难/零样本不够 | 加 few-shot CoT 示例 |
| Self-consistency 无提升 | 路径方差太小 | 调高 temperature、增大 k |
| ToT 成本爆炸 | branching×depth 过大 | 缩小 b、加状态剪枝 |
| 输出里混了推理过程 | 未分离「思考」与「答案」 | 用分隔符/结构化输出只取答案 |
安全与合规
- ToT / Self-consistency 多路径调用会放大任何提示注入面的暴露(见 提示注入攻防),需在每路径做输入隔离。
- 推理链若被记录到日志,可能泄露用户数据或业务规则,注意脱敏与留存策略。
成本与性能
- Few-shot:示例占输入 token,成本随示例数线性增长,但通常是一次性固定前缀,可用缓存摊薄。
- CoT:输出变长,输出 token 成本上升;延迟主要来自生成更多 token。
- Self-consistency:总成本 ≈ 单条 × k(含输入重复 k 次)。以 GPT-4o(输入 $2.5/MTok、输出 $10/MTok,
[版本相关,以官网为准])为例,k=10 即 10 倍调用,仅适合高价值、低频次任务。 - ToT:成本最高且受搜索宽度/深度控制,需做成本-准确率拐点分析,不可无脑放大。
参考资料
- Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models", 2022 (arXiv:2201.11903)
- Kojima et al., "Large Language Models are Zero-Shot Reasoners", 2022 (arXiv:2205.11916)
- Wang et al., "Self-Consistency Improves Chain of Thought Reasoning", ICLR 2023 (arXiv:2203.11171)
- Yao et al., "Tree of Thoughts: Deliberate Problem Solving with LLMs", NeurIPS 2023 (arXiv:2305.10601)