模块5:复杂问题的拆解策略
难度:⭐⭐⭐⭐ 高级 | 建议时长:3-4小时
目标:当一个提示词搞不定时,学会用思维树、ReAct 和提示词链拆解复杂任务
5.1 思维树(Tree of Thoughts, ToT):像下棋一样思考
下棋不是只看一步
下象棋时,高手不会只想”我走这一步”,而是想”如果我走这步,对方会怎么走,然后我再怎么走”。如果推演几步发现这条路不行,就退回来换一条路。
思维树就是这个过程:探索多条思路,评估每条路的前景,放弃差的,深入好的。
思维树 vs 思维链
思维链(CoT)= 一条路走到底:
开始 → 步骤1 → 步骤2 → 步骤3 → 结论
思维树(ToT)= 先看有几条路,选最好的走:
┌→ 方向A → 评估:不太行 → 放弃,退回来
开始 → 分支 ├→ 方向B → 评估:有希望 → 继续深入 → 结论 ✅
└→ 方向C → 评估:一般 → 放弃
核心区别:思维树有”回溯”——发现走错了可以退回来换路。思维链没有。
使用模板
问题:[你的复杂问题]
请用思维树方法来解决:
第一步 - 生成候选方案:
提出 3-5 个不同的解决方向,每个用一句话概括。
第二步 - 初步评估:
对每个方向从可行性(1-5)、效果(1-5)、成本(1-5) 三个维度打分。
第三步 - 选择最优路径:
选得分最高的 2 个方向展开详细分析。
第四步 - 深入推演:
对选中的方向往前推演 2-3 步,分析可能结果和风险。
如果推演中发现行不通,退回来选其他方向。
第五步 - 最终决策:
给出推荐方案和实施建议。
实战1:产品功能优先级决策
问题:在线教育 App 下季度优先开发什么功能?
用户反馈最多的需求:直播课、AI批改作业、学习社区、家长端。
第一步 - 列出候选方案:
A:优先做直播课
B:优先做 AI 批改作业
C:优先做学习社区
D:优先做家长端
第二步 - 多维度评估:
| 方案 | 用户需求 | 技术难度 | 收入潜力 | 竞争壁垒 | 总分 |
|------|---------|---------|---------|---------|------|
第三步 - 对 Top2 方案推演 2-3 步:
(实施路径 → 可能遇到的问题 → 3个月后预期效果)
如果推演发现问题严重,退回选其他方案。
第四步 - 最终建议 + 风险提示。
实战2:技术选型决策
问题:新项目的后端框架选 Spring Boot、Go Gin 还是 FastAPI?
团队情况:5人,Java经验为主,需要3个月上线。
请用思维树方法分析:
第一步 - 列出候选方案:
A:Spring Boot(Java 生态,团队熟悉)
B:Go Gin(高性能,但团队需要学习)
C:FastAPI(Python,开发快,但团队不熟)
第二步 - 多维度评估:
| 方案 | 团队熟悉度 | 性能 | 开发速度 | 生态成熟度 | 招聘难度 |
|------|-----------|------|---------|-----------|---------|
| A | 5 | 4 | 3 | 5 | 5 |
| B | 2 | 5 | 4 | 4 | 3 |
| C | 2 | 3 | 5 | 3 | 4 |
第三步 - 对 A 和 B 深入推演:
A路径:团队直接上手 → 但 Spring Boot 启动慢、配置多
→ 推演:3个月能上线,但代码量大,后期维护成本高
B路径:需要2-3周学习 Go → 但之后开发效率高
→ 推演:学习期有风险,可能延期;但长期收益好
→ 问题:3个月deadline太紧,学习成本不可控 → 退回选A
第四步 - 最终建议:选 Spring Boot,理由是时间约束下
团队熟悉度是第一优先级。建议下个项目尝试 Go。
5.2 ReAct(推理+行动):边想边干
侦探破案的思路
侦探破案不是先把所有可能都想清楚再行动。而是:有个线索 → 去查 → 发现新线索 → 再查 → 逐步逼近真相。
ReAct 就是让 AI 交替进行”思考”和”行动”,像侦探一样一步步解决问题。
Thought(思考)→ Action(行动)→ Observation(观察结果)
↑ ↓
└──────────── 循环直到解决 ←────────────┘
使用模板
请用"思考-行动-观察"的方式解决以下问题。
每一步都要:
1. Thought:你在想什么、计划做什么
2. Action:你要采取的行动
3. Observation:行动的结果
重复以上步骤直到得出最终答案。
问题:[你的问题]
实战:用 ReAct 排查 Bug
Bug:用户反馈登录页面点击登录按钮无反应。
Thought 1:按钮无反应,可能的原因:JS报错、事件没绑定、
网络请求失败、前端拦截。先检查最可能的原因。
Action 1:检查浏览器控制台是否有 JS 错误。
Observation 1:控制台报错 "TypeError: Cannot read property
'value' of null at login.js:42"
Thought 2:JS 执行出错了。第42行试图读取一个 null 对象
的 value 属性,可能是 DOM 元素没找到。
Action 2:检查 login.js 第42行和对应的 HTML 元素。
Observation 2:代码是 document.getElementById('pwd').value,
但 HTML 中密码框的 id 是 'password' 不是 'pwd'。
Thought 3:id 不匹配导致获取不到元素。简单的命名不一致 Bug。
Action 3:将 JS 中的 'pwd' 改为 'password'。
Final Answer:Bug 根因是密码框的 id 与 JS 代码中引用的
id 不一致。修复:统一 id 命名。
生活场景:用 ReAct 规划旅行
目标:规划一次 3 天的成都旅行,预算 3000 元。
Thought 1:需要考虑交通、住宿、景点、美食。
先确定大头——交通和住宿的预算。
Action 1:估算交通和住宿费用。
Observation 1:高铁/机票约 500-800,住宿3晚约 600-900,
剩余约 1300-1900 用于餐饮和门票。
Thought 2:预算还算充裕。接下来规划每天的行程,
成都核心景点有武侯祠、锦里、宽窄巷子、大熊猫基地、都江堰。
Action 2:按距离和主题分配到 3 天。
Observation 2:Day1 市区文化(武侯祠+锦里+宽窄巷子),
Day2 熊猫基地+春熙路,Day3 都江堰一日游。
Thought 3:看起来合理,但都江堰在郊区,
要确认往返时间和交通方式...
(继续循环直到计划完善)
5.3 提示词链(Prompt Chaining):流水线作业
工厂流水线思维
手工作坊里一个人从头做到尾,效率低质量不稳定。工厂用流水线——每个工位做一道工序,上一道的产品是下一道的原料。
提示词链就是:把一个复杂任务拆成多个提示词,串联执行,每个提示词只做一件事。
一个提示词塞太多任务 → 每个都做不好
拆成 3 个提示词串联 → 每个都做得精
类比:
❌ 一个人同时当翻译、编辑、排版
✅ 翻译先翻 → 编辑再改 → 排版最后排
三种链式模式
模式A:顺序链(最常用)
上一步的输出直接作为下一步的输入。
步骤1(提取)→ 步骤2(改写)→ 步骤3(翻译)→ 步骤4(排版)
模式B:分支链
先分类,不同类别走不同的处理流程。
┌→ 正面评论 → 提取好评要点 → 生成感谢回复
分类 ──→├→ 负面评论 → 提取投诉原因 → 生成解决方案
└→ 咨询问题 → 识别问题类型 → 匹配FAQ回答
模式C:循环链
生成 → 检查 → 不达标就重新生成,直到满意。
生成初稿 → 质量检查 → 不达标?→ 修改指令重新生成 → 再检查 → 达标 ✅
实战案例:把一篇中文论文变成英文博客
第1步 - 提取(学术 → 要点)
提示词:"阅读以下论文摘要,提取 3-5 个核心观点,
用通俗的中文复述,每个观点一句话。"
输入:[论文摘要]
输出:5个核心观点的中文列表
第2步 - 改写(专业 → 大众)
提示词:"将以下学术观点改写为普通人能理解的表述,
使用日常类比和例子,保持准确性。"
输入:[第1步的输出]
输出:通俗版中文内容
第3步 - 翻译(中文 → 英文)
提示词:"将以下中文翻译为地道的英文,
使用简洁的博客写作风格,不要学术腔。"
输入:[第2步的输出]
输出:英文博客正文
第4步 - 排版(纯文本 → 博客格式)
提示词:"为以下英文内容添加博客格式:
吸引人的标题、引言段、小标题、结尾号召行动。"
输入:[第3步的输出]
输出:完整的英文博客文章 ✅
如果直接用一个提示词”把这篇中文论文改写成英文博客”,质量远不如四步链式处理。
实战案例2:客户反馈 → 产品改进报告
第1步 - 分类(杂乱 → 有序)
提示词:"将以下客户反馈按类型分类:功能需求、Bug报告、
体验抱怨、正面评价。每条标注类别和关键词。"
输入:[50条客户反馈原文]
输出:分类后的反馈列表
第2步 - 聚合(散点 → 趋势)
提示词:"分析以下分类后的反馈,找出 Top5 高频问题,
每个问题统计出现次数和典型原话。"
输入:[第1步的输出]
输出:5个高频问题 + 数据支撑
第3步 - 建议(问题 → 方案)
提示词:"针对以下5个高频客户问题,各给出1个改进建议,
包含:问题描述、影响范围、建议方案、预期效果、优先级。"
输入:[第2步的输出]
输出:5条改进建议
第4步 - 排版(内容 → 报告)
提示词:"将以下内容整理为正式的产品改进报告,
包含:摘要、数据概览、问题详情、改进计划、时间表。"
输入:[第3步的输出]
输出:完整的产品改进报告 ✅
5.4 任务分解的通用原则
什么时候该拆?
信号1:输出质量不稳定 → 任务太复杂,AI 顾此失彼
信号2:任务有多个独立子目标 → 每个子目标应该单独处理
信号3:中间结果需要人工检查 → 拆开才能在中间插入检查点
信号4:一个提示词超过 500 字 → 可能塞了太多要求
怎么拆?
按阶段拆:收集 → 分析 → 决策 → 执行
按角色拆:调研员收集资料 → 分析师做分析 → 决策者做判断
按输入类型拆:文本处理走一条链,数据处理走另一条链
拆多细?
判断标准:每个子任务的输出应该是”可以独立判断好坏”的。
✅ 好的拆法:"总结文章" → "翻译摘要" → "排版"
每步输出都能独立检查质量
❌ 过度拆分:"提取第一个关键词" → "提取第二个关键词" → ...
拆太细了,没必要
5.5 技术组合速查
CoT + 少样本 = 给出带推理过程的示例
ToT + CoT = 在思维树的每个分支上用思维链深入
ReAct + CoT = 在每步行动前做深入推理
提示词链 + 角色 = 每一步用不同角色处理
提示词链 + 自我一致性 = 关键步骤跑多次取最优
元提示 + 任意技术 = 让 AI 帮你设计使用特定技术的提示词
5.6 动手练习
练习1:思维树决策
你要选择学习一门新编程语言(Rust/Go/Kotlin),用思维树方法从至少 4 个维度评估,给出推荐。
练习2:ReAct 排查
模拟用 ReAct 排查:“你的网站突然变得很慢”。写出至少 4 轮 Thought → Action → Observation。
练习3:设计提示词链
设计一条提示词链完成:客户反馈文本 → 自动分类 → 生成回复草稿。写出每一步的提示词。
本章小结
✅ 思维树(ToT):探索多条路径 + 评估 + 回溯,适合复杂决策
✅ ReAct:思考→行动→观察循环,适合调查排查类任务
✅ 提示词链:流水线作业,每个提示词只做一件事
✅ 三种链式模式:顺序链、分支链、循环链
✅ 任务分解原则:按阶段/角色/类型拆,每步输出可独立判断
✅ 技术可以自由组合,威力更大
下一步 → 06_工作效率场景.md