四十一:CoT与ReAct自测题答案¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484555&idx=1&sn=34d29d036ed63f33ab50454252332de0&chksm=f01eb7f2c7693ee4770e78a5140ca639270483f85db10086b52d351f6af8dce2720896ef9af6#rd
参考资料¶
-
ReAct paper: https://arxiv.org/pdf/2210.03629
-
LLM+P paper: https://export.arxiv.org/pdf/2304.11477v2
-
Chain-of-Thought paper: https://arxiv.org/pdf/2201.11903
-
Tree of Thoughts paper: https://arxiv.org/pdf/2305.10601
-
LangChain Agents concepts: https://python.langchain.com/docs/concepts/agents/
A. Planning 基础¶
1. Agent 中的 Planning 是什么?¶
Planning 是 Agent 根据目标生成行动步骤、选择工具、跟踪状态并逐步完成任务的能力。 它决定“下一步做什么”以及“如何到达目标”。
2. Planning 和 Reasoning 有什么区别?¶
Reasoning 关注推导结论,Planning 关注组织行动。数学推理更偏 reasoning,旅行安排、工具调用和任务执行更偏 planning。 Agent 通常需要二者结合。
3. 为什么 Agent 需要 Planning?¶
没有 planning,Agent 容易随机调用工具、遗漏子任务、重复操作或过早回答。Planning 能把复杂目标拆成可执行步骤。 它是多步 Agent 的核心能力。
4. Planning 通常需要解决哪些子问题?¶
包括任务拆解、步骤排序、工具选择、参数生成、中间状态跟踪、失败重试和停止条件。 复杂任务还需要验证和回溯。
5. 什么情况下固定 workflow 比动态 planning 更合适?¶
当任务流程稳定、风险高、评估严格、合规要求强时,固定 workflow 更合适。例如审批、支付、退款、合规审核。 动态 planning 适合开放和不确定任务。
6. Planning 方法为什么需要停止条件?¶
没有停止条件,Agent 可能无限检索、循环调用工具或反复修改计划。停止条件控制成本、延迟和稳定性。 常见限制包括最大步数、时间和置信度阈值。
7. Planning 失败会导致哪些问题?¶
会导致工具选错、步骤遗漏、顺序错误、成本增加、答案错误或任务无法完成。 计划错误通常会放大到后续执行阶段。
8. 如何评估一个 plan 的质量?¶
可以看完整性、可执行性、步骤顺序、工具选择、成本、风险和是否达到目标。还要看执行后结果是否成功。 计划评估应结合任务成功率。
9. Planning 与 tool use 有什么关系?¶
Planning 决定何时调用哪个工具、传什么参数、如何使用返回结果。Tool use 是计划执行的一部分。 ReAct 就是 planning 与工具行动交替的代表。
10. Planning 与 memory 有什么关系?¶
Memory 保存历史状态和中间结果,Planning 需要基于这些状态决定下一步。没有 memory,多步计划容易丢失上下文。 长期任务尤其依赖状态管理。
B. Chain-of-Thought¶
11. 什么是 Chain-of-Thought?¶
CoT 是让模型生成中间推理步骤,再得到最终答案的提示方法。它可以通过 zero-shot “step by step” 或 few-shot 推理示例触发。 它提升复杂推理任务表现。
12. CoT 为什么能提升复杂推理任务表现?¶
它给模型更多中间 token 表示计算过程,把复杂问题拆成多个较小步骤,降低直接预测最终答案的难度。 但它不保证逻辑严格正确。
13. CoT 适合哪些任务?¶
适合数学题、逻辑推理、多条件判断、代码分析和需要分步解释的问题。 简单分类和抽取通常不需要 CoT。
14. CoT 不适合哪些任务?¶
不适合简单任务、强格式输出任务、需要极短答案的任务、可能泄露敏感推理的任务。 过度 CoT 会增加成本和噪声。
15. few-shot CoT 和 zero-shot CoT 有什么区别?¶
few-shot CoT 提供带推理过程的示例,让模型模仿。zero-shot CoT 只用类似“请逐步思考”的指令。 few-shot 通常更稳定,但占用上下文。
16. CoT 和普通逐步说明有什么区别?¶
CoT 是引导模型在生成答案前显式构造中间推理链;普通逐步说明可能只是对答案的事后解释。 实际中二者可能混合,但 CoT 重点是推理过程影响答案。
17. CoT 的主要风险有哪些?¶
包括推理链错误、答案自信、成本高、泄露中间信息、简单任务噪声增加和事后合理化。 因此需要验证。
18. 为什么 CoT 可能出现“推理链看似合理但答案错误”?¶
LLM 生成的是概率文本,不是形式化证明。它可能生成貌似连贯但包含错误步骤的推理。 推理链可读不等于真实可靠。
19. 生产系统中为什么不一定展示完整 CoT?¶
完整 CoT 冗长、可能泄露内部策略或不稳定假设。用户通常需要结论、关键依据和可验证证据。 可以让模型内部推理,输出简要理由。
20. CoT 如何和 self-consistency 结合?¶
对同一问题生成多条 CoT 推理路径,提取最终答案并投票或验证。这样可以降低单一路径偶然错误。 代价是调用成本增加。
C. ReAct¶
21. ReAct 的核心思想是什么?¶
ReAct 结合 reasoning 和 acting,让模型在推理过程中调用工具,并根据工具 observation 继续推理。 它把内部推理和外部信息获取结合起来。
22. ReAct 中 Reasoning 和 Acting 分别指什么?¶
Reasoning 是分析当前状态和决定下一步;Acting 是调用工具或执行动作。 Observation 是行动后的反馈。
23. ReAct 的典型模式是什么?¶
典型模式是:
生产中可用结构化 tool calling 实现 Action。24. ReAct 相比纯 CoT 的优势是什么?¶
CoT 只能依赖模型内部知识;ReAct 可以查询外部工具,用 observation 修正模型先验。 它更适合开放域和实时信息任务。
25. ReAct 适合哪些任务?¶
适合开放域问答、网页搜索、RAG、多步工具调用、交互环境和需要查证的任务。 例如先检索资料再回答。
26. ReAct 不适合哪些任务?¶
不适合简单一次性问题、强流程高风险任务、工具不可靠或工具调用成本极高的场景。 这些可用 workflow 或普通问答。
27. ReAct 中 Observation 的作用是什么?¶
Observation 提供工具返回结果,是 Agent 下一步推理的依据。它能补充外部事实和反馈。 模型不应忽略或编造 observation。
28. 为什么 ReAct 可以降低模型仅凭先验回答的风险?¶
因为模型在回答前可以调用工具获取证据,答案基于 observation 而不是参数记忆。 但前提是工具结果被正确使用。
29. ReAct 的常见失败模式有哪些?¶
包括选错工具、query 写错、忽略 observation、编造 observation、循环调用、过早 final、受 prompt injection 影响。 这些需要工程约束。
30. 生产系统中如何实现安全的 ReAct?¶
使用工具白名单、参数 schema、最大步数、超时、权限控制、结构化 observation、trace 日志和高风险确认。 不要让模型自由执行任意文本 action。
D. LLM+P¶
31. LLM+P 的核心思想是什么?¶
LLM+P 把 LLM 和经典规划器结合。LLM 把自然语言任务转成形式化规划问题,planner 求解计划,LLM 再解释或执行。 它利用 planner 的系统搜索能力。
32. LLM+P 中 LLM 和 classical planner 分别负责什么?¶
LLM 负责理解自然语言和转换问题;classical planner 负责在形式化状态和动作空间中搜索可行计划。 二者分工是语言理解和符号规划。
33. 什么是 PDDL?它在 LLM+P 中有什么作用?¶
PDDL 是规划领域定义语言,用来描述对象、状态、动作、前置条件和目标。LLM+P 中 LLM 可以把任务转成 PDDL,交给 planner 求解。 它是自然语言和规划器之间的桥梁。
34. LLM+P 适合哪些任务?¶
适合状态、动作、约束明确且可形式化的任务,如机器人、物流、积木世界、日程规划。 可验证性是它的优势。
35. LLM+P 不适合哪些任务?¶
不适合目标模糊、状态难形式化、工具环境变化大、依赖开放常识或网页信息的任务。 形式化成本可能过高。
36. LLM 把自然语言转成规划问题时可能出现哪些错误?¶
可能漏对象、错动作、错前置条件、错目标、状态描述不完整或违反 domain schema。 这些错误会让 planner 找不到计划或找到错误计划。
37. 经典 planner 的优势是什么?¶
它能在明确状态和动作空间中系统搜索,计划可验证,约束处理比纯 LLM 更可靠。 对强结构任务尤其有用。
38. LLM+P 的工程难点有哪些?¶
难点包括 domain 建模、PDDL 生成校验、现实环境不确定、执行反馈、planner 和工具接口整合。 它不是简单加一个 planner 就能落地。
39. LLM+P 和 ReAct 有什么区别?¶
ReAct 通过 LLM 动态推理和调用工具;LLM+P 把任务转成形式化规划,由经典 planner 求解。 ReAct 灵活,LLM+P 更结构化和可验证。
40. 什么时候应该优先考虑符号规划而不是纯 LLM planning?¶
当动作和约束明确、错误代价高、需要可验证计划时,优先考虑符号规划。 例如机器人任务和物流调度。
E. Tree of Thoughts¶
41. Tree of Thoughts 的核心思想是什么?¶
ToT 把推理过程建模为搜索树,生成多个候选 thought,评估后选择或回溯。 它从单路径推理扩展到多路径探索。
42. ToT 中的 thought 是什么?¶
thought 是中间推理状态、候选步骤、局部方案或部分解。它不是固定长度,可以根据任务定义。 关键是能被评估和扩展。
43. ToT 和 CoT 的主要区别是什么?¶
CoT 是一条推理链,ToT 是多分支搜索树。ToT 可以探索多个候选并回溯,CoT 通常一路生成到底。 ToT 更强但更贵。
44. ToT 适合哪些任务?¶
适合需要探索、回溯和多候选比较的任务,如组合题、规划题、复杂推理、创意生成。 简单任务不需要 ToT。
45. ToT 的主要成本是什么?¶
需要多次生成和评估 thought,LLM 调用次数多,延迟和 token 成本高。 搜索宽度和深度直接影响成本。
46. ToT 可以结合哪些搜索策略?¶
可以结合 BFS、DFS、beam search、best-first search 等。 选择取决于任务和成本预算。
47. BFS、DFS、Beam Search 在 ToT 中分别有什么特点?¶
BFS 每层广泛探索,覆盖好但成本高。DFS 深入单一路径,成本低但易走错。Beam Search 每层保留 top-b 候选,在成本和质量间折中。 Beam 常用于实际系统。
48. ToT 中评估函数可以来自哪里?¶
可以来自 LLM 自评、规则、工具执行结果、环境反馈、单元测试、检索证据或专门 verifier。 外部可验证信号通常比纯 LLM 自评更可靠。
49. ToT 为什么适合需要回溯的问题?¶
因为它保留多个候选状态,发现路径错误后可以回到其他分支继续搜索。 CoT 一旦走错,很难自发回退。
50. ToT 在生产系统中有什么限制?¶
成本高、延迟长、评估函数难设计、搜索空间可能爆炸。需要限制深度、宽度和使用场景。 不要对简单问题使用 ToT。
F. 方法比较与应用¶
51. 请比较 CoT、ReAct、LLM+P、ToT 的输入输出形式。¶
CoT 输入问题输出推理链和答案;ReAct 输入任务并输出工具调用和观察后的答案;LLM+P 输入自然语言任务,输出形式化计划和自然语言计划;ToT 输入问题,生成多个 thought 分支并输出最优解。 输出复杂度依次增加。
52. 请比较 CoT、ReAct、LLM+P、ToT 的成本。¶
CoT 成本最低,ReAct 取决于工具调用次数,LLM+P 有转换和 planner 成本,ToT 通常最高,因为多分支生成和评估。 成本要和任务难度匹配。
53. 请比较 CoT、ReAct、LLM+P、ToT 的可控性。¶
LLM+P 在形式化任务中可控性强;ReAct 取决于工具权限;CoT 简单但验证弱;ToT 可搜索但成本和不确定性高。 可控性还依赖工程约束。
54. 哪些方法适合需要外部信息的任务?¶
ReAct 最适合,因为它能调用检索、搜索、数据库等工具。Agentic RAG 常基于 ReAct 思想。 CoT 不能获取新信息。
55. 哪些方法适合状态和动作可形式化的任务?¶
LLM+P 适合,因为可把任务转成 PDDL 或类似规划表示,让 planner 求解。 机器人和物流是典型例子。
56. 哪些方法适合多候选路径探索?¶
ToT 适合,因为它显式生成多个 thought 分支并评估选择。 复杂组合推理和创意方案可用 ToT。
57. 如何为数学题选择 planning 方法?¶
简单数学用 CoT;答案不稳定可加 self-consistency;需要探索多解法可用 ToT;需要计算可调用 calculator 或 code tool。 不要用过重方法处理简单题。
58. 如何为网页问答选择 planning 方法?¶
适合 ReAct:模型先决定搜索 query,读取网页 observation,再继续检索或回答。 需要防 prompt injection 和引用验证。
59. 如何为机器人任务选择 planning 方法?¶
若状态和动作可形式化,优先 LLM+P 或符号 planner;LLM 负责语言理解和异常处理,planner 负责计划搜索。 执行阶段需要环境反馈。
60. 如何为代码调试任务选择 planning 方法?¶
可用 ReAct/Plan-Execute:读错误、搜索代码、修改、运行测试、观察结果。复杂修复可用 ToT 比较多个方案。 测试结果是重要 verifier。
G. 排错与综合设计¶
61. 如果 CoT 输出冗长且错误,你会如何改进?¶
限制推理长度,要求输出关键步骤,加入 verifier 或工具检查,使用 self-consistency 或改用更结构化方法。 也可只输出结论和简要依据。
62. 如果 ReAct 频繁选错工具,你会如何改进?¶
改进工具描述、增加工具选择示例、加入路由 classifier、限制工具集合、用规则处理明确场景。 工具路由需要单独评估。
63. 如果 ReAct 忽略 Observation,你会如何处理?¶
在 prompt 中要求答案必须基于 observation,结构化 observation,减少冗余,加入引用检查或 verifier。 也要检查工具结果是否清晰。
64. 如果 LLM+P 生成的 PDDL 错误,你会如何排查?¶
检查 domain schema、对象列表、动作前置条件、目标条件;加入语法校验和 planner 错误反馈;让 LLM 根据错误修复。 必要时人工维护 domain。
65. 如果 ToT 成本太高,你会如何优化?¶
降低分支数和深度,使用 beam search,先用轻量模型生成候选,只对高价值分支用强模型评估。 也可只对困难问题启用 ToT。
66. 如何为 Planning 系统设计 trace?¶
记录目标、计划、每一步 thought/action、工具参数、observation、评估分数、回溯、最终答案、token、延迟和错误。 trace 支持调试和评估。
67. 如何给 Planning 加 verifier?¶
在关键步骤后检查计划可执行性、工具结果、答案证据、约束满足和最终结果。Verifier 可以是规则、测试、检索证据或 LLM judge。 可验证信号越客观越好。
68. 请设计一个结合 ReAct 和 rerank 的文档问答 Agent。¶
Agent 先分析问题,生成检索 query,调用 dense/BM25 检索,使用 reranker 精排候选,读取 top-k observation,若证据不足则改写 query 再检索,最终生成带引用答案。 加入最大轮数、权限过滤和 citation verifier。
69. 请设计一个结合 ToT 和工具验证的复杂推理系统。¶
系统生成多个候选 thought/plan,每个候选调用工具或规则验证,保留评分最高的分支继续扩展。最终答案必须通过 verifier。 适合复杂问题,但要限制搜索预算。
70. 请系统总结 CoT、ReAct、LLM+P、ToT 的原理、适用场景、优缺点和面试表达要点。¶
CoT 是单路径分步推理,简单低成本,适合数学和逻辑题,但可能生成错误推理。ReAct 是推理与工具行动交替,适合外部信息和交互任务,但要防工具误用和循环。LLM+P 用 LLM 转换自然语言,用经典 planner 求解,适合强结构可形式化任务,但建模成本高。ToT 把推理扩展为多分支搜索,适合需要探索和回溯的问题,但成本高。 面试表达要点是按任务需求选方法:内部推理用 CoT,外部工具用 ReAct,形式化约束用 LLM+P,多路径探索用 ToT。
预览时标签不可点
<div class="