吴师兄大模型
实战项目 · 面试解析

在智能Agent系统中,规划能力是完成复杂多步任务的核心。请系统介绍当前主流的提升大语言模型规划能力的方法,如思维链(CoT)、思维树(ToT)、图思维(GoT)等,深入分析它们的原理、适用场景,并对比各自的优缺点与实际应用中的局限性。

Agent 智能体进阶
← 返回列表
核心概念

Agent 规划能力决定了它能否将复杂任务合理分解并高效执行。核心技术从低到高:CoT(单路径推理)-> 结构化 Planner(JSON 执行计划)-> ToT(多路径探索)。工业主流是 LLM Planner 生成 JSON 格式执行计划,明确每步用什么工具和参数,实现规划执行的解耦。

面试答题思路
4步拆解
1
先分三层讲规划能力
简单 CoT(单路径)-> 结构化 Planner(JSON 计划)-> ToT 探索(多路径)。从简到难,说清楚每层解决什么问题。
2
重点讲 LLM Planner 实现
Prompt 设计(提供工具列表 + 要求 JSON 输出)+ 步骤间数据传递(use_previous_data)。这是生产中用得最多的方式。
3
CoT vs ToT 对比
CoT 简单高效(单路径),ToT 全局最优但 token 消耗大(多路径)。说出各自的适用场景,体现你的技术权衡思维。
4
说动态重规划
步骤失败时触发重规划,而不是简单重试,体现你考虑过真实业务中「计划没有变化快」的场景。
详细解析

规划能力的三个层次

Layer 1: 简单规划(CoT)

单路径思考链,逐步推导

适用:数学题、逻辑推理

Layer 2: 结构化规划(LLM Planner)

输出 JSON 格式执行计划,明确每步工具和参数

适用:多步骤任务、需要工具组合的场景

Layer 3: 探索性规划(ToT / MCTS)

多路径并行探索,选最优路径

适用:搜索空间大、最优解不唯一的复杂任务

LLM Planner 实现(拓业智询真实代码)

python
class PlannerNode:

def __call__(self, state: AgentState) -> dict:

prompt = (

f"制定执行计划\n"

f"问题: {state['query']}\n"

f"意图: {state['intent']}\n"

"可用工具:\n"

"- text2sql: 查询数据库(自然语言转 SQL)\n"

"- code_executor: 执行 Python 代码\n"

"- web_search: 搜索网络\n"

"- rag_search: 检索知识库\n\n"

'JSON格式: {"plan": [{"step": 1, "action": "...",'

'"tool": "...", "params": {}}]}'

)

result = json.loads(self.llm.simple_chat(prompt))

return {"plan": result["plan"], "current_step": 0}

计划示例(分析银行股 PE)

python
plan = [

{

"step": 1,

"action": "查询所有银行股的 PE 比率",

"tool": "text2sql",

"params": {"question": "查询 A 股银行板块所有股票的 PE 比率,按升序排列"}

},

{

"step": 2,

"action": "对 PE 数据进行统计分析并生成柱状图",

"tool": "code_executor",

"params": {

"use_previous_data": True, # 使用 Step 1 的查询结果

"task": "计算均值/中位数,绘制银行股 PE 对比柱状图,标注行业平均线"

}

},

{

"step": 3,

"action": "搜索近期银行股估值相关新闻",

"tool": "web_search",

"params": {"query": "A股银行板块 PE 估值 2024 分析"}

}

]

CoT vs ToT 对比

CoT(思维链):单路径,逐步推导

问题 -> 思考1 -> 思考2 -> 思考3 -> 答案

优点:简单高效;缺点:走错一步全错

ToT(思维树):多路径并行,择优

问题 -> 思路A -> 展开A1, A2, A3 -> 评估选最优

-> 思路B -> 展开B1, B2, B3 -> 剪枝

优点:全局最优;缺点:token 消耗是 CoT 的 3-5 倍

适用:难度大、解空间复杂的任务

重点提示
LLM Planner 的关键设计:use_previous_data 标志——当 code_executor 步骤需要使用前一步 text2sql 的查询结果时,Executor 节点自动从 tool_results 中取出数据传入,实现步骤间的数据流传递,这是多步骤任务编排的核心机制。
规划模块最大陷阱:LLM 生成的 JSON 计划可能格式错误或计划不合理(步骤重复/遗漏关键步骤)。生产环境必须加 Pydantic 校验,校验失败时让 LLM 重新规划(附上错误说明),最多重试 2 次。
知识卡片
4个知识点
CoT Prompt 最佳实践

在 Prompt 中加入「请一步步思考」或 few-shot 示例(给出 2-3 个带思考步骤的示例),可显著提升 LLM 规划质量。对于 7B 以下小模型效果尤为明显,是最低成本的规划能力提升方法。

ToT 的适用场景

ToT 适合解空间很大、最优解不唯一的任务(创意写作、策略规划)。但 token 消耗是 CoT 的 3-5 倍,实时交互场景慎用。可以用「采样多条 CoT 路径取最多数答案(Self-Consistency)」替代,效果接近但成本更低。

动态重规划

当某步骤执行失败时,Reflector 节点可以触发重规划——将失败原因告知 Planner,让它生成调整后的新计划,而不是简单重试原计划。这是 Agent「自愈能力」的高级体现。

计划粒度控制

拓业智询实践:计划步骤控制在 3-7 步,每步用 1-2 个工具。步骤太多(>10)导致 Context 过长;步骤太少(<3)导致每步过于复杂,code_executor 生成的代码容易出错。

面试官视角

被问Agent 如何处理复杂任务的规划,不要只说用 CoT 分步推理。正确答案:我们用 LLM Planner 生成 JSON 格式执行计划,每步明确指定工具名和参数。关键设计是 use_previous_data 标志——当 code_executor 需要使用前一步 SQL 查询结果时,Executor 自动从 tool_results 中取出数据传入,实现步骤间数据流传递。此外,当某步失败时,Reflector 触发重规划,把失败原因告知 Planner 生成新计划,而不是简单重试,这让系统对工具失败有一定的自愈能力。实测单次请求平均步数从 8 步降到 5 步,成本降低 37%。