跳到主要内容

核心框架

ReAct 框架

概念

ReAct 的全称是 Reasoning + Acting(推理 + 行动)。可以把它想象成:一个会做题的学生,不是一口气写完答案,而是 边想边做——先在心里说一句「我接下来要干什么」(推理),然后真的去查资料、用计算器、调 API(行动),看到结果后再继续想下一步。

和传统「只输出最终答案」的提示不同,ReAct 要求模型在文本里 显式交替 写出:

  • 推理(Thought):为什么要这么做、下一步选什么工具、预期看到什么。
  • 行动(Action):调用某个工具(如搜索、代码执行),并给出参数。
  • 观察(Observation):环境/工具返回的结果。
  • 循环多次,直到模型给出 Final Answer。

一句话:ReAct = 把「思考过程」和「工具使用」写进同一条轨迹里,让推理可监督、可纠错、可复现。

ReAct 和「普通 CoT 提示」有什么本质区别?

普通 CoT 只在模型内部展开推理链,不强制与外部环境交互;ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。

ReAct 为什么要显式写出 Thought?

显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。在工程上,Thought 也帮助模型在下一步更稳定地选择 Action。

优缺点是什么

优点

  • 可解释:轨迹可读,便于调试与评测中间步骤。
  • 接地:通过工具把答案锚定在可验证数据上。
  • 通用:与具体工具解耦,易于替换搜索/代码/SQL 等。

缺点

  • 多轮调用:成本高、延迟大。
  • 格式脆弱:模型若偏离模板,需要解析器与重试策略。
  • 规划能力有限:逐步贪心,复杂任务上可能缺「全局最优计划」(对比 Plan-and-Execute)。

Plan-and-Execute 框架

概念

Plan-and-Execute 是 两阶段:先 制定计划(Planner),再 逐步执行(Executor)。像旅行前先列行程单,再按天去玩;执行中若发现「景点关门」,再 改行程(Re-planning)。

它与 ReAct 的差别可以记成:ReAct 常常是「走一步看一步」;Plan-and-Execute 先有一张「总蓝图」,再落地,适合步骤多、依赖关系清晰的任务

Planner 组件设计(要点)

  • 输入:用户目标、约束(时间/预算/格式)、当前已知上下文。
  • 输出:结构化计划(步骤列表、每步子目标、依赖、所需工具类型)。
  • 技巧:计划 粒度适中;过细易 brittle,过粗难执行。

Executor 组件设计(要点)

  • 输入:当前步骤、state(已完成结果、中间变量)。
  • 输出:步骤产物 + 新 state。
  • 工具路由:每一步可选用不同工具(搜索、代码、数据库)。

重规划(Re-planning)机制

触发条件常见有:

  • 工具失败、返回空、超时;
  • Observation 与假设冲突;
  • 新信息使原计划步骤多余或顺序错误。

Re-planning 做法:

  • 局部修复:只替换失败步骤之后的子计划;
  • 全局重规划:回到目标重新生成计划(成本高但更稳)。
Plan-and-Execute 相比 ReAct 什么时候更占优?

当任务步骤多、结构清晰、需要全局分解(如多文件代码改动、数据分析流水线、复杂调研提纲)时,Planner 先给出路线图能减少「短视」;ReAct 更擅长 动态工具交互、逐步探索。

Re-planning 会不会导致「计划抖动」?怎么缓解?

会。频繁重规划可能让执行轨迹不稳定。缓解方式包括:限制重规划次数、局部重规划优先、在 state 中保留已验证事实、对计划变更加 一致性检查(新旧计划差异说明)。

Reflexion 框架

概念

Reflexion 的核心是:做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试。像考试做错后写错题本,而不是盲目刷同一道题。

它强调 语言化反思(自然语言反思条目),而不是只改参数;反思作为 记忆,影响后续尝试的策略。

自我反思机制

典型角色分工(概念上):

  • Actor:生成行动/答案(可接工具)。
  • Evaluator:给反馈(对/错、评分、缺失项)。
  • Reflector:根据反馈写 反思文本(指出错误原因与改进策略)。

工作流程:Action → Evaluation → Reflection → Retry

Reflexion 和「让模型自己检查一遍」有什么不同?

自检往往是一次性的;Reflexion 把评估与反思 显式化、结构化,并 跨尝试复用 反思文本,形成可累积的「策略记忆」。工程上更易控制与评测。

LATS 把 Agent 的决策看成在 树 上搜索:每个节点是一种「状态/中间思路」,分支是不同行动。任务复杂、存在多条可能路径时,与其一次走到底,不如 探索多条路,用评估函数判断哪条路更有希望。

它常与 蒙特卡洛树搜索(MCTS) 思想结合:通过 选择—扩展—模拟—回传 在探索与利用之间折中,把「语言推理」嵌进搜索节点。

LangChain Agent 实现

LangChain 把 LLM、提示模板、工具、记忆、解析器等拼成可运行程序。Agent 在这里通常指:由 LLM 决定下一步调用哪个工具 的循环执行体;AgentExecutor 负责「跑这个循环直到结束」。

LangChain 里 AgentExecutor 解决的核心问题是什么?

把「模型决策 → 工具执行 → 结果回填 → 再决策」的 控制流标准化,统一处理 迭代限制、错误处理、中间消息结构,让开发者专注工具与提示。

LangGraph 状态机

如果把 LangChain Agent 看成「一套默认的循环」,LangGraph 则是把 Agent 工作流画成 图:节点是处理步骤(调用模型、调工具、审核),边是流转关系。复杂业务往往需要分支、循环、人工确认——用图更直观。

什么时候选 LangGraph 而不是 AgentExecutor?

当流程不是「单一工具循环」,而是需要 多阶段流水线、条件路由、回环修复、人工审核节点、并行任务 时,用图编排更清晰可维护。

LangGraph 的状态更新为什么要谨慎设计?

多节点写入同一字段可能冲突;需要 schema 约束、归约策略(append vs replace)、明确每个节点的写入职责。

AutoGen / CrewAI 等多 Agent 框架

多 Agent 框架把任务拆给多个「角色」:有人负责写代码,有人负责审查,有人负责检索。它们通过 对话 或 结构化消息 协作。AutoGen 偏 可编程的对话与工具;CrewAI 偏 角色驱动的团队流程(Crew)。

多 Agent 一定比单 Agent 更强吗?

不一定。更多 Agent 可能带来 协调成本、错误级联、对话冗长。当任务可清晰分工且有评估机制时收益大;否则单 Agent + 强工具可能更简单高效。

如何避免多 Agent「互相附和」?

引入 独立审查角色、基于规则的检查、外部工具验证(测试、检索),并明确 停止条件 与 异议处理流程。

综合

Plan-and-Execute 的最大风险是什么?如何缓解?

风险是 错误计划污染全局;缓解是 可验证子步骤、重规划、强 Planner 约束输出 与 执行期监控。