ReAct Agent 完整原理 伪代码实现ReAct 是目前最经典、最基础的智能体范式核心循环思考 (Thought) → 行动 (Action) → 观察 (Observation)也是区分 Agent 和 Chain 的典型范本。一、ReAct 运行逻辑plaintext循环 1. Thought思考大模型分析当前问题 历史上下文自主判断接下来该做什么 2. Action行动决定调用哪个工具、传入什么参数 3. Observation观察执行工具拿到工具返回结果 把观察结果追加到上下文进入下一轮循环 直到模型判断【无需再调用工具直接输出最终答案】和 Chain 本质区别 Chain步骤1→步骤2→步骤3代码写死不会动态选择 ReAct Agent没有固定步骤每一轮由 LLM 自主决策下一步。二、极简伪代码Python 风格贴近 LangGraph / LangChain 实现思路python运行# 可用工具库 tools { search: search_function, calculator: calc_function } def react_agent(user_query: str): # 上下文记忆保存历史思考、动作、观测结果 messages [ {role: system, content: 你是ReAct智能体。你可以使用工具解决用户问题。 输出格式严格二选一 1. 调用工具Thought: xxx\nAction: 工具名称\nAction Input: 参数 2. 回答结束Thought: xxx\nFinal Answer: 最终结果 可用工具search(联网搜索), calculator(计算器) }, {role: user, content: user_query} ] max_iter 5 # 限制最大循环轮次防止无限思考 for _ in range(max_iter): # Thought交给大模型推理决策Agent核心 llm_response llm.invoke(messages) # 判断是直接输出答案还是调用工具 if Final Answer: in llm_response: return extract_final_answer(llm_response) # 解析模型决定执行哪个动作、参数 thought, action_name, action_input parse_react_output(llm_response) # Action执行工具 tool_func tools[action_name] observation tool_func(action_input) # Observation把结果放回上下文下一轮继续思考 messages.append({ role: user, contentfThought: {thought}\nAction: {action_name}\nObservation: {observation} }) return 达到最大迭代次数无法完成任务三、模拟一轮真实执行流程演示用户提问2025年中国GDP增速是多少再乘以2LLM 输出plaintextThought: 我需要先搜索2025中国GDP增速无法直接回答 Action: search Action Input: 2025年中国GDP增速执行 searchObservation 得到数据5.0%上下文追加观测结果再次调用 LLMplaintextThought: 已经获取增速5.0%接下来使用计算器计算5.0 * 2 Action: calculator Action Input: 5.0 * 2计算器返回结果10.0再次调用 LLMplaintextThought: 信息足够不需要更多工具 Final Answer: 2025年中国GDP增速为5.0%乘以2等于10.0循环终止返回答案。四、对照如果用 Chain 实现同一个需求代码逻辑预先硬编码顺序python运行# Chain 流程固定无法动态调整 def chain_workflow(query): res1 search(query) res2 calculator(res1 * 2) return generate_answer(res2)缺陷直观体现如果搜索不到数据代码依然会强行执行计算器没有自主分支决策模型不能自主判断 “是否需要多搜索一次”不能调换顺序、不能中途终止流程。五、延伸知识点工程重点原生 ReAct 痛点输出格式极易乱掉LLM 不遵守 Thought/Action 规范生产环境常用工具调用 Function Calling替代原始字符串解析。演进路线基础 ReAct → Function Calling Agent → Plan-and-Solve先整体规划再执行 → LangGraph 多节点可控 Agent增加人工校验、条件分支、反思 Reflect一个关键误区澄清❌ 错误认知Chain 不能调用工具Agent 才能调用工具 ✅ 事实Chain 同样可以串联工具区分核心不在能不能调用工具而在【谁决定工具执行顺序】