四十二:Plan-and-Solve 规划方法自测题答案¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484570&idx=1&sn=3a642de58fe3483258fdcb00fd9ba8bf&chksm=f01eb7e3c7693ef51c393cbfe438a1ae29285b2dade51b03e2cdbfb6beb93c97a5321a2318a4#rd
参考资料¶
-
Plan-and-Solve paper: https://arxiv.org/pdf/2305.04091
-
ReWOO paper: https://arxiv.org/pdf/2305.18323
-
Plan and Execute 详解: https://www.woshipm.com/ai/6109946.html
-
LLM Compiler 详解: https://www.woshipm.com/ai/6111543.html
-
LLMCompiler paper: https://arxiv.org/abs/2312.04511
A. Plan-and-Solve 基础¶
1. Plan-and-Solve 的核心思想是什么?¶
先生成解决问题的计划,再按计划逐步求解。它把“想路线”和“执行路线”分开。 这样能减少模型直接推理时遗漏步骤的问题。
2. Plan-and-Solve 想缓解 zero-shot CoT 的哪些问题?¶
主要缓解缺步骤、计算错误和语义误解。通过先规划,模型更容易覆盖必要子任务。 但它仍需验证,不能保证计划一定正确。
3. Plan-and-Solve 的典型提示结构是什么?¶
典型提示是:
关键是显式区分 plan 和 solve。4. Plan 阶段和 Solve 阶段分别做什么?¶
Plan 阶段列出需要完成的步骤和顺序。Solve 阶段执行这些步骤,进行计算、推理或工具调用,最终得到答案。 计划不应停留在空泛描述。
5. Plan-and-Solve 和 CoT 有什么区别?¶
CoT 通常边推理边生成步骤,Plan-and-Solve 先生成全局计划,再执行。Plan-and-Solve 更强调任务拆解和步骤覆盖。 它是更显式的规划结构。
6. Plan-and-Solve 适合哪些任务?¶
适合多步骤推理、数学应用题、复杂问答、需要先拆解再解决的问题。 任务步骤相对清晰时效果更好。
7. Plan-and-Solve 不适合哪些任务?¶
不适合简单分类、简单抽取、目标模糊、环境变化很快或需要频繁根据工具反馈调整的任务。 这些场景可能用普通 prompt 或 ReAct 更合适。
8. 初始计划错误会带来什么后果?¶
后续 solve 会沿错误方向执行,导致遗漏关键步骤或得到错误答案。计划越早错,影响越大。 因此需要 plan verification 或 replanning。
9. 如何评估 Plan-and-Solve 中计划的质量?¶
看计划是否完整、具体、顺序合理、可执行、覆盖目标约束。最终还要看执行后答案是否正确。 可以让 verifier 检查计划。
10. Plan-and-Solve 如何与 self-consistency 结合?¶
可以生成多个计划并执行,比较最终答案或让 verifier 选择最佳计划。也可以对计划阶段做投票。 代价是成本增加。
B. Plan-and-Execute¶
11. 什么是 Plan-and-Execute Agent?¶
它是先由 Planner 生成任务计划,再由 Executor 按步骤执行的 Agent 模式。执行失败或环境变化时可 Replan。 它比 ReAct 更结构化。
12. Planner、Executor、Replanner 分别负责什么?¶
Planner 生成计划;Executor 调用工具执行步骤;Replanner 根据执行结果修改计划。 三者可以是不同模块,也可以由同一模型承担。
13. Plan-and-Execute 和 ReAct 有什么区别?¶
ReAct 是边思考边行动,每次 observation 后继续决定。Plan-and-Execute 通常先生成较完整计划,再执行。 前者灵活,后者清晰可审查。
14. Plan-and-Execute 的优点有哪些?¶
优点是计划可审查、步骤可追踪、便于人工确认、适合长任务、易插入校验。 它更适合工程化执行。
15. Plan-and-Execute 的限制有哪些?¶
限制是初始计划可能错误、环境变化后计划过时、过度规划成本高、不适合高度不确定任务。 需要 replanning 弥补。
16. 什么情况下需要 replanning?¶
工具失败、结果为空、权限不足、发现新约束、原计划依赖不成立、用户目标变化时需要 replanning。 Replanning 让计划适应现实反馈。
17. 为什么 Plan-and-Execute 适合人工确认?¶
因为它能在执行前展示计划和高风险步骤,用户可审查后再授权执行。 这对邮件、支付、删除等操作很重要。
18. Plan-and-Execute 中如何设计 step trace?¶
记录 step id、目标、工具、参数、依赖、状态、结果、耗时、错误和重试次数。 trace 支持回放和审计。
19. 如何防止 Plan-and-Execute 过度规划?¶
限制计划长度,要求只规划必要步骤,对简单任务直接执行,使用预算和最大步骤数。 计划应服务执行,不是越详细越好。
20. Plan-and-Execute 如何处理工具失败?¶
可重试、修改参数、换工具、跳过非关键步骤、replan、降级或转人工。 不能编造工具结果。
C. ReWOO¶
21. ReWOO 的全称和核心思想是什么?¶
ReWOO 是 Reasoning without Observation。它先生成完整推理/工具调用计划和变量占位,再执行工具,最后由 solver 汇总。 它把规划和观察解耦。
22. ReWOO 的 Planner、Worker、Solver 分别负责什么?¶
Planner 生成计划和工具调用;Worker 执行工具并填充变量;Solver 根据计划和变量结果生成最终答案。 这种分工减少多轮 LLM 交互。
23. ReWOO 的变量引用有什么作用?¶
变量引用保存工具结果并表示步骤依赖。后续步骤可以引用前面结果。
例如 #E1 表示第一步工具返回。
24. 请解释 #E1、#E2 这类变量在 ReWOO 中的意义。¶
它们是中间工具结果的占位符。Planner 可以在后续步骤中使用 #E1 作为输入,Worker 执行后把实际结果填入。
这让计划结构化。
25. ReWOO 和 ReAct 的主要区别是什么?¶
ReAct 每一步都在 observation 后继续推理;ReWOO 先生成完整计划,再执行工具和求解。 ReWOO 更少串行思考,ReAct 更灵活。
26. ReWOO 为什么可能降低 token 成本?¶
因为它不需要每次工具返回后都把完整历史交给 LLM 继续推理。Planner 一次生成计划,Worker 执行,Solver 汇总。 减少了多轮 thought/action prompt。
27. ReWOO 为什么可能更容易并行执行?¶
如果计划中某些工具调用没有依赖关系,可以同时执行。变量依赖让执行器能识别哪些步骤可并行。 这能降低延迟。
28. ReWOO 的主要风险是什么?¶
初始计划错误会影响后续;工具结果不符合预期时缺少即时调整;变量引用可能错;计划可能包含非法工具调用。 需要校验和 replanning。
29. 如果 ReWOO 的某个工具结果不符合预期,会发生什么?¶
后续依赖该变量的步骤可能失败或得到错误答案。系统应检测异常并触发 replanning 或回退到 ReAct 式交互。 不能盲目继续。
30. 如何校验 ReWOO 计划中的变量依赖?¶
检查变量是否先定义后使用、是否存在循环、工具输出类型是否匹配后续输入、所有依赖是否可执行。 这是执行前校验的一部分。
D. LLMCompiler¶
31. LLMCompiler 的核心思想是什么?¶
把 LLM 生成的任务计划编译成函数调用图,分析依赖并并行执行无依赖工具,最后汇总结果。 它借鉴编译器和调度器思想。
32. LLMCompiler 为什么借鉴“编译器”思想?¶
因为任务可以被解析为一组函数调用和依赖关系,类似程序。编译器思想可以做依赖分析、调度、并行执行和优化。 这比串行 ReAct 更高效。
33. LLMCompiler 中 function-call graph 是什么?¶
它是工具调用节点和依赖边组成的图。节点是函数调用,边表示一个调用依赖另一个调用结果。 执行器按图调度。
34. 什么是依赖图?它有什么价值?¶
依赖图表示步骤之间的数据依赖。它能识别可并行步骤、检测循环、安排执行顺序和做失败重试。 结构化依赖是并行执行基础。
35. 为什么无依赖工具调用可以并行?¶
因为它们不需要等待彼此结果。并行执行能减少总延迟。 例如同时查价格和评论。
36. LLMCompiler 相比串行 ReAct 有什么优势?¶
优势是减少串行等待、降低延迟、结构化工具调用、执行过程更可调度。 适合多个独立工具调用的任务。
37. LLMCompiler 的 Planner、Scheduler、Joiner 分别负责什么?¶
Planner 生成函数调用图;Scheduler 根据依赖并行或顺序执行;Joiner 汇总结果并生成最终答案或决定是否需要重规划。 它们类似编译和执行流水线。
38. LLMCompiler 适合哪些任务?¶
适合多个工具调用、部分调用可并行、依赖关系清晰的任务,例如多源信息收集、比较分析、批量查询。 并行收益越明显,越适合。
39. LLMCompiler 不适合哪些任务?¶
不适合高度交互、每步强依赖前一步观察、工具结果不可预测且需即时调整的任务。 这些场景 ReAct 可能更灵活。
40. LLMCompiler 的工程难点有哪些?¶
难点包括函数图生成正确性、依赖分析、参数校验、错误恢复、并行调度、状态同步和安全权限。 需要强执行框架支持。
E. 计划表示、校验与安全¶
41. 计划可以有哪些表示形式?¶
包括自然语言、JSON steps、DAG、函数调用列表、PDDL、伪代码。 生产中结构化表示更可靠。
42. 为什么生产系统更推荐结构化计划?¶
结构化计划易解析、校验、执行、审计和回放。自然语言计划容易歧义。 工具调用尤其需要结构化。
43. 一个结构化 plan step 通常包含哪些字段?¶
包括 step id、description、tool、input、depends_on、expected_output、risk_level、timeout、status。 可根据系统复杂度扩展。
44. 执行计划前应该校验哪些内容?¶
校验工具白名单、参数 schema、依赖存在、无循环、权限、步骤数、风险等级、预算和是否需要人工确认。 校验是安全执行前提。
45. 为什么要检查循环依赖?¶
循环依赖会导致执行器无法确定执行顺序,可能无限等待或死循环。 DAG 计划必须无环。
46. 为什么工具白名单对 planning 系统很重要?¶
它限制模型只能选择允许工具,防止越权、危险或不存在的工具调用。 白名单是安全边界。
47. 为什么高风险步骤需要人工确认?¶
高风险步骤可能产生现实后果,如发送邮件、付款、删除数据。人工确认能防止错误计划直接执行。 Agent 应先提出计划,再执行授权动作。
48. 如何处理工具参数不符合 schema 的计划?¶
执行前拒绝该步骤,把校验错误反馈给 planner 修正,或使用规则自动修复简单错误。 不能带着非法参数执行。
49. 如何设计计划执行的最大步数和超时?¶
根据任务类型设置上限,简单任务较低,复杂任务较高。每个工具有单步超时,整体任务有总超时。 超限后降级或请求用户确认继续。
50. 如何防止计划中包含越权操作?¶
工具端做权限检查,planner 只能看到可用工具,计划执行前验证用户权限,高风险操作人工确认。 不能只靠提示词。
F. 失败处理与方法对比¶
51. 先规划再执行方法常见失败模式有哪些?¶
包括计划遗漏、计划错误、依赖错误、工具参数错误、工具失败、结果不符合预期、replanning 失败、过度规划。 需要 trace 和 verifier。
52. 如果工具返回空结果,系统应如何处理?¶
可改写 query、换工具、扩大范围、重试或标记该步骤失败并 replan。若仍无结果,应在答案中说明资料不足。 不能编造结果。
53. 如果某个步骤失败但不是关键步骤,系统应如何处理?¶
可以跳过该步骤并标记不完整,或用替代工具补充。最终答案应说明缺失部分。 关键性应在计划中标注。
54. 如果计划执行中发现目标理解错了,系统应如何处理?¶
应停止当前计划,重新解析用户目标,必要时向用户澄清,然后重新规划。 不要在错误目标下继续执行。
55. ReAct 和 ReWOO 在灵活性上有什么区别?¶
ReAct 每步根据 observation 调整,灵活性更高。ReWOO 先规划后执行,灵活性较低但结构更清晰。 不确定环境更适合 ReAct。
56. ReAct 和 LLMCompiler 在延迟上有什么区别?¶
ReAct 通常串行调用工具和模型,延迟较高。LLMCompiler 可并行执行无依赖工具,降低总延迟。 前提是依赖图正确。
57. Plan-and-Solve 和 Plan-and-Execute 的区别是什么?¶
Plan-and-Solve 是提示策略,主要用于推理题;Plan-and-Execute 是 Agent 架构,涉及工具执行、状态和 replanning。 前者偏 prompt,后者偏系统。
58. ReWOO 和 LLMCompiler 的相似点是什么?¶
二者都先生成计划,再执行工具,并通过变量/依赖管理中间结果。都试图减少 ReAct 的串行推理成本。 都适合结构较清晰的多工具任务。
59. ReWOO 和 LLMCompiler 的区别是什么?¶
ReWOO 强调 planner-worker-solver 和变量引用;LLMCompiler 更强调函数调用图、依赖分析和并行调度。 LLMCompiler 的工程调度味道更强。
60. 如何选择 ReAct、Plan-and-Execute、ReWOO、LLMCompiler?¶
高度不确定、需要观察后调整,用 ReAct。计划可审查、步骤清晰,用 Plan-and-Execute。工具调用依赖明确、想降低重复推理,用 ReWOO。多个工具可并行且依赖图清晰,用 LLMCompiler。 选择取决于任务结构和成本预算。
G. 综合设计¶
61. 请设计一个使用 Plan-and-Execute 的研究助手。¶
Planner 先生成研究计划:检索资料、筛选来源、阅读摘要、对比观点、生成报告。Executor 调用搜索、文档检索和摘要工具。Verifier 检查引用和覆盖度,失败时 Replanner 补充检索。 最终输出带引用报告。
62. 请设计一个使用 ReWOO 的多跳搜索问答系统。¶
Planner 生成带变量的搜索计划,例如先查实体 A,再用 #E1 查相关属性。Worker 执行搜索并填充变量。Solver 根据变量和证据生成答案。
适合多跳但路径相对明确的问题。
63. 请设计一个使用 LLMCompiler 的并行工具调用系统。¶
Planner 生成函数调用 DAG,例如同时查询价格、评论、库存,再汇总比较。Scheduler 并行执行无依赖节点,Joiner 综合结果并生成建议。 要有依赖校验和失败回退。
64. 如何给计划型 Agent 加 verifier?¶
Verifier 检查计划完整性、工具合法性、执行结果是否满足步骤目标、最终答案是否有证据支持。失败时触发 replan 或拒答。 Verifier 可用规则、测试或 LLM。
65. 如何记录计划型 Agent 的执行 trace?¶
记录计划版本、step id、依赖、工具参数、执行状态、结果摘要、错误、重试、replan 原因、最终答案、成本和延迟。 trace 是调试核心。
66. 如何评估计划型 Agent 的 step efficiency?¶
统计完成任务所需步骤数、无效步骤比例、重复工具调用、并行度、总耗时和成本。与参考计划或人工计划对比。 步骤越少不一定越好,关键是有效。
67. 如果计划型 Agent 成本过高,你会如何优化?¶
限制步骤数,缓存工具结果,使用小模型生成初始计划,并行无依赖工具,减少不必要 verifier,只对复杂任务启用 planning。 也可模板化常见计划。
68. 如何把计划型 Agent 和 RAG 结合?¶
Planner 拆分问题并选择检索源;Executor 调用向量检索、BM25、GraphRAG;reranker 和 compressor 处理证据;Solver 生成带引用答案;Verifier 检查证据支持。 这就是更结构化的 Agentic RAG。
69. 如何把计划型 Agent 和人工审批结合?¶
计划生成后标记高风险步骤,展示给用户或审批人确认。审批通过后 Executor 才执行。 审批结果也应写入 trace。
70. 请系统总结 Plan-and-Solve、Plan-and-Execute、ReWOO、LLMCompiler 的原理、优缺点和面试表达要点。¶
Plan-and-Solve 是先计划再求解的提示方法,降低步骤遗漏。Plan-and-Execute 是 planner/executor/replanner 架构,适合可审查多步任务。ReWOO 先生成带变量引用的工具计划,再执行和汇总,减少 ReAct 串行推理。LLMCompiler 把计划编译成函数调用依赖图,支持并行执行。 面试表达要点:这类方法都在解决 ReAct 串行、重复推理和成本高的问题;生产关键是结构化计划、依赖校验、工具权限、执行 trace、失败重规划和人工确认。
预览时标签不可点
<div class="