【02】ReAct 循环:Agent 的思考引擎 — Think → Act → Observe
ReAct 循环Agent 的思考引擎 — Think → Act → Observe基于 Lion-1209/AgentStudy 仓库对应代码见stage1-fundamentals/task1.1_minimal_react.pyReAct 是什么ReAct Reasoning推理 Acting行动Agent 最核心的运行模式。不是一步到位地回答而是反复经历三个阶段的循环Think思考 → Act行动 → Observe观察 → 回到 ThinkReAct 循环图解yesno用户问题Think: 分析问题需要工具吗?Act: 调用工具Observe: 获取结果Final Answer: 最终回答每一轮循环Agent 都在获取新信息、修正判断。这就是为什么它能处理复杂任务。三步拆解阶段发生什么类比ThinkLLM 分析当前情况决定下一步人脑思考Act执行一个工具调用或生成回复动手操作Observe获取工具返回的结果作为下一轮的输入观察反馈为什么 ReAct 能 emergent 出智能你不需要教 Agent “先查天气再计算温差”。你只需要给它工具get_weather、calculate让它自己决定用哪个、用几次它会自己规划步骤用户: 北京和上海温差多少?Think: 需要两个城市天气Act: 查北京天气Observe: 晴天 25°CThink: 还需要上海Act: 查上海天气Observe: 多云 28°CThink: 计算差值Act: 计算 28-25Final Answer: 温差 3°CAgent 的智能不是被写死的是从这个循环中涌现出来的。核心循环的代码骨架forstepinrange(max_iterations):# 1. Think: 让 LLM 分析当前情况responsellm.chat(messages)# 2. 检查是否需要调用工具ifresponse.has_tool_call():# Act: 执行工具resultexecute_tool(response.tool_call)# Observe: 把结果加入上下文messages.append({role:tool,content:result})else:# 没有工具调用 → 任务完成returnresponse.text注意整个 Agent 的核心就是一个 for 循环 LLM 调用。这就是全部。可观测性Agent 的黑匣子没有可观测性你完全不知道 Agent 在干什么。最原始但最有效的方式print(f[步骤{step}] LLM 输出:{response.text})print(f[步骤{step}] 执行工具:{tool_name}({tool_args}))print(f[步骤{step}] 工具返回:{tool_result})这些print就是 Agent 的 trace。到阶段 5 我们会用 LangSmith/Langfuse 做专业的可观测性。学习检查清单能画出 ReAct 循环的三步流程图吗能解释为什么 Loop 是 Agent 和 Chatbot 的本质区别吗理解涌现智能在这个上下文中的含义了吗延伸阅读 完整代码stage1-fundamentals/task1.1_minimal_react.py 论文Chain-of-Thought Prompting Elicits Reasoning in Large Language Models️ 上一篇上一篇[01] AI Agent 到底是什么️ 下一篇[03] Function Calling让 LLM 拥有双手