概述
本文档总结了四种主要的 AI 推理提示工程技术:CoT、Self-Consistency、ToT 和 ReAct。
1. Chain of Thought (CoT) - 思维链
核心思想
让 AI 模型逐步展示推理过程,而不是直接给出答案。
工作原理
传统方式:问题 → 答案
CoT方式:问题 → 步骤1 → 步骤2 → 步骤3 → 答案
实现方式
Zero-Shot CoT(零样本)
python
prompt = "问题...\n请一步步思考并解答。"
Few-Shot CoT(少样本)
python
prompt = """
示例:
问题:小明有5个苹果,吃了2个,又买了3个,现在有几个?
解答:
- 开始有5个苹果
- 吃了2个:5-2=3个
- 又买了3个:3+3=6个
答案:6个
问题:[新问题]
解答:
"""
优势
- ✅ 提高复杂问题的准确性
- ✅ 增强可解释性
- ✅ 便于发现推理错误
- ✅ 简单易用,无需额外工具
适用场景
- 数学计算题
- 逻辑推理题
- 代码生成
- 问题分析
示例代码
参考文件:2.CoT.py
2. Self-Consistency - 自洽性
核心思想
多次采样 + 投票决策 = 更高准确率
对同一问题进行多次独立推理,选择出现频率最高的答案。
工作流程
问题 → 第1次调用 → 答案A
→ 第2次调用 → 答案B
→ 第3次调用 → 答案A
→ 第4次调用 → 答案A
→ 第5次调用 → 答案C
投票:答案A(3票) > 答案B(1票) > 答案C(1票)
最终结果:答案A ✓
关键参数
num_samples: 采样次数(通常 3-10 次)temperature: 温度参数(0.5-0.8,增加多样性)
优势
- ✅ 显著提高准确性
- ✅ 减少单次调用的随机错误
- ✅ 实现相对简单
- ✅ 特别适合有确定答案的问题
代价
- ❌ API 调用次数增加(成本更高)
- ❌ 响应时间变长
- ❌ 需要设计答案提取逻辑
适用场景
- 数学计算(有唯一正确答案)
- 事实性问题
- 逻辑推理
- 代码正确性验证
不适用场景
- 创意写作(需要多样性)
- 开放式问答
- 主观性问题
示例代码
参考文件:3.Self-Consistency.py
3. Tree of Thoughts (ToT) - 思维树
核心思想
像下棋一样探索多种可能性 → 评估每条路径 → 回溯优化 → 选择最优解
工作流程
问题
/ | \
思路A 思路B 思路C
/ | \ |
A1 A2 A3 B1
|
A1a
评估所有路径 → 选择最优解
关键组件
- ThoughtNode - 树中的思考节点
- generate_thoughts() - 生成多个可能的下一步
- evaluate_state() - 评估当前路径质量(0-10分)
- is_solution() - 判断是否解决问题
- 搜索策略 - BFS(广度优先)或 DFS(深度优先)
参数配置
max_depth: 树的最大深度(通常 3-5)branch_factor: 每层分支数(通常 2-4)search_strategy: 搜索策略('bfs' 或 'dfs')
优势
- ✅ 最灵活全面的探索
- ✅ 可以回溯放弃差的路径
- ✅ 适合复杂规划和决策
- ✅ 可解释性强
代价
- ❌ API 调用次数 = 节点数 × 2(生成+评估)
- ❌ 实现复杂度高
- ❌ 运行时间长
- ❌ 成本高
适用场景
- 24点游戏、数独等组合问题
- 写作大纲规划
- 商业策略决策
- 代码架构设计
- 需要"三思而后行"的复杂任务
与其他技术对比
| 特性 | CoT | Self-Consistency | ToT |
|---|---|---|---|
| 思维方式 | 线性 | 并行多条 | 树状探索 |
| 可回溯 | ❌ | ❌ | ✅ |
| 成本 | 低 | 中 | 高 |
| 灵活性 | 低 | 中 | 高 |
示例代码
参考文件:4.ToT.py
4. ReAct (Reasoning + Acting) - 推理与行动
核心思想
推理 + 行动 = 突破知识限制
让 AI 通过与外部工具交互来解决需要实时信息或执行操作的问题。
工作流程
Thought: 我需要查询北京的天气
Action: weather[北京]
Observation: 晴,25°C
Thought: 现在可以回答了
Final Answer: 北京今天天气晴朗,气温25°C
关键要素
- Thought(思考) - 分析问题,决定下一步
- Action(行动) - 调用工具执行操作
- Observation(观察) - 获取工具返回结果
- 循环迭代 - 重复直到得到答案
常用工具类型
- 🔍 搜索引擎/知识库查询
- 🧮 计算器
- 🌐 API 调用(天气、股票等)
- 📅 日期时间查询
- 💾 数据库查询
- 📝 文件读写
优势
- ✅ 突破训练数据限制 - 可访问实时信息
- ✅ 减少幻觉 - 基于实际观察而非猜测
- ✅ 可扩展性强 - 轻松添加新工具
- ✅ 实际应用广泛 - 最实用的技术
注意事项
- 设置合理的
max_iterations(通常 3-10) - 确保工具有明确的输入输出格式
- 处理工具执行失败的情况
- 考虑 API 成本和延迟
如何扩展工具
python
# 1. 定义工具函数
def my_tool(argument):
# 实现功能
return result
# 2. 注册到 TOOLS 字典
TOOLS["my_tool"] = {
"function": my_tool,
"description": "工具描述",
"usage": "my_tool[参数]"
}
适用场景
- 需要实时信息的查询
- 需要执行计算的任务
- 需要访问外部 API
- 多步推理的复杂问题
- Agent 系统开发
与其他技术对比
| 技术 | 特点 | 独特优势 |
|---|---|---|
| CoT | 纯推理 | 简单快速 |
| Self-Consistency | 多次投票 | 提高准确率 |
| ToT | 树状探索 | 全面灵活 |
| ReAct | 推理+工具 | 能访问外部信息,最实用 |
示例代码
参考文件:5.ReAct.py
技术对比总结
复杂度对比
CoT < Self-Consistency < ToT ≈ ReAct
成本对比(API 调用次数)
CoT (1次) < Self-Consistency (N次) < ToT (节点数×2) < ReAct (迭代次数×2)
选择指南
| 场景 | 推荐技术 | 原因 |
|---|---|---|
| 简单推理题 | CoT | 简单高效 |
| 有确定答案的复杂题 | Self-Consistency | 提高准确率 |
| 需要探索多种方案 | ToT | 全面搜索 |
| 需要实时信息/工具 | ReAct | 唯一能调用外部工具的 |
| 创意写作 | CoT | 保持流畅性 |
| 数学竞赛题 | Self-Consistency + CoT | 结合两者优势 |
| 复杂规划任务 | ToT | 可回溯优化 |
| 智能助手/Agent | ReAct | 实用性强 |
组合使用
这些技术可以组合使用以获得更好的效果:
- CoT + Self-Consistency: 每次采样都使用思维链,然后投票
- ToT + CoT: 在树的每个节点使用思维链推理
- ReAct + CoT: 在 ReAct 的思考步骤中使用思维链
- ReAct + ToT: 在 ReAct 的每个行动选择时使用树状搜索
最佳实践
1. 从简单开始
先使用 CoT,如果效果不好再尝试更复杂的技术。
2. 明确问题类型
- 有确定答案 → Self-Consistency
- 需要外部信息 → ReAct
- 需要探索多种方案 → ToT
3. 控制成本
- 设置合理的采样次数/迭代次数
- 监控 API 调用费用
- 考虑缓存重复查询的结果
4. 设计好的 Prompt
- 清晰的指令和格式要求
- 提供足够的示例(Few-Shot)
- 明确的输出格式规范
5. 评估和优化
- 建立测试集评估不同技术的效果
- 根据实际表现调整参数
- 持续优化工具和提示词