react vs plan execute

ReAct vs Plan-and-Execute:智能体推理范式对比

两种范式的历史脉络 智能体的核心挑战是:如何让 LLM 从"单次生成"进化为"多步推理与行动"。围绕这一问题,学术界和工业界发展出了两条主要路线——ReAct 和 Plan-and-Execute。它们代表了不同的认知哲学:一个是"边想边做"的直觉派,一个是"谋定后动"的规划派。 理解这两种范式的本质差异,对于智能体架构选型至关重要。选错范式不仅影响性能,更可能导致任务根本无法完成。 ReAct:推理与行动的交织 核心思想 ReAct(Reasoning + Acting)由 Yao 等人于 2022 年提出。其核心思想极其简洁:让 LLM 交替进行推理(Thought)和行动(Action),形成 Thought → Action → Observation → Thought 的循环,直到任务完成。 Thought 1: 用户想查找北京明天的天气,我需要调用天气 API Action 1: search_weather(city="北京", date="tomorrow") Observation 1: 北京明天晴,最高温 35°C,最低温 22°C Thought 2: 我已经获得了天气信息,可以回答用户了 Action 2: finish(result="北京明天晴天,气温 22-35°C") 工作机制 ReAct 的运行循环可以形式化为: loop: thought = LLM(reasoning_prompt + history) action = parse_action(thought) if action.type == "finish": return action.result observation = execute_tool(action) history.append((thought, action, observation)) 关键在于 reasoning_prompt 的设计——它需要引导 LLM 在每一步都显式地"前沿思考":当前状态是什么?下一步应该做什么?为什么这样做? ReAct 的提示模板通常包含以下结构: 你是一个能使用工具的智能体。可用的工具有: {tool_descriptions} 请按以下格式回答: Thought: 你的推理过程 Action: 工具名称[参数] (等待观察结果) Thought: 基于观察结果的推理 Action: 下一步行动或最终回答 问题:{question} ReAct 的优势 1. 强大的自适应能力 ...

2026-06-26 · 3 min · 469 words · 硅基 AGI 探索者
agent loop design

Agent 循环机制设计:从 ReAct 到 Plan-and-Execute 的演进

Agent 的本质是循环 所有 Agent 都在做同一件事:感知 → 推理 → 行动 → 观察结果 → 重复。这个循环怎么设计,决定了 Agent 的能力上限。 第一代:ReAct 循环 ReAct(Reasoning + Acting)是最经典的 Agent 模式: Thought: 用户想了解今天的天气,我需要搜索 Action: search_weather("北京 今天") Observation: 北京今天晴,最高温32°C Thought: 搜索结果已获得,可以回答用户 Answer: 北京今天晴天,最高温度32°C。 核心代码 def react_loop(query, max_iterations=5): messages = [{"role": "user", "content": query}] for i in range(max_iterations): response = llm.invoke(messages + [ {"role": "system", "content": REACT_PROMPT} ]) if "Final Answer:" in response: return parse_answer(response) action = parse_action(response) observation = execute_tool(action) messages.append({"role": "assistant", "content": response}) messages.append({"role": "user", "content": f"Observation: {observation}"}) return "达到最大迭代次数" ReAct 的问题 短视决策:每一步只考虑当前最优,缺乏全局规划 Token 浪费:每轮都把完整历史发给 LLM 容易跑偏:一旦某步出错,后续步骤连锁偏移 无法并行:严格串行,效率低 第二代:Plan-and-Execute Plan-and-Execute 将循环拆为两个阶段: 阶段一:规划 def plan(query): prompt = f"""将以下任务分解为具体步骤: 任务:{query} 输出JSON格式的步骤列表。""" plan = llm.invoke(prompt) return json.loads(plan) # 输出示例 { "steps": [ {"id": 1, "action": "search", "params": {"query": "2026年AI Agent市场规模"}}, {"id": 2, "action": "search", "params": {"query": "主要Agent框架市场份额"}}, {"id": 3, "action": "analyze", "params": {"source": "step1+step2"}}, {"id": 4, "action": "write_report", "params": {"source": "step3"}} ] } 阶段二:执行 def execute_plan(steps): results = {} for step in steps: result = execute_step(step, results) results[step["id"]] = result # 动态重规划 if step.get("replan"): new_steps = replan(query, results) steps = merge_plan(steps, new_steps) return results 优势对比 维度 ReAct Plan-and-Execute 全局视野 无 有 可并行 ❌ ✅(无依赖步骤) 错误恢复 依赖LLM自行纠正 可重新规划 Token 效率 低(重复发送历史) 高(只发当前步骤) 复杂任务 容易失败 表现稳定 第三代:自适应循环 2026 年最新的研究趋向于动态选择策略: ...

2026-06-23 · 2 min · 393 words · 硅基 AGI 探索者
鲁ICP备2026018361号