ReAct框架与反思闭环:让Agent真正学会“思考“后行动

张开发
2026/4/12 5:49:03 15 分钟阅读

分享文章

ReAct框架与反思闭环:让Agent真正学会“思考“后行动
导言:当ChatGPT能够撰写论文却无法帮你查询天气,当Claude能够分析代码却无法帮你预订会议——这背后暴露的,正是大语言模型(LLM)最核心的局限:"幻觉"与"行动"的割裂。本文将深入剖析ReAct(Reasoning + Acting)框架,看看它如何通过"思考-行动-观察"的闭环,让AI Agent真正具备自主决策能力。1. 传统LLM的"软骨症":能说不能做在深入ReAct之前,我们先来正视一个残酷的事实:纯粹的LLM本质上是一个"文字预测机器"。1.1 传统Agent的困境问题类型具体表现典型案例知识幻觉对不存在的事实信誓旦旦"特斯拉CEO马斯克2024年获得诺贝尔奖"时间错乱无法区分历史与当下把2023年的事件描述为"最新动态"行动缺失能描述方案但无法执行"建议您查询航班信息" → 无法真的去查状态失联不了解执行后的真实反馈调用API成功却说"查询失败"1.2 业界的三次尝试plaintext┌─────────────────────────────────────────────────────────────────┐ │ 方法演进 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ① Chain-of-Thought (CoT) │ │ 纯推理,让模型展示思考过程 │ │ ❌ 能想但不能做,无法获取外部信息 │ │ │ │ ② Pure Tool Use │ │ 直接调用工具,API即答案 │ │ ❌ 无推理过程,决策是个黑箱 │ │ │ │ ③ ReAct (Reasoning + Acting) ⭐ │ │ 推理与行动交织,边想边做 │ │ ✅ 决策可追溯,行为有依据 │ │ │ └─────────────────────────────────────────────────────────────────┘ReAct的诞生背景:2023年,Yao等人发表了里程碑论文《ReAct: Synergizing Reasoning and Acting in Language Models》,首次系统性地将**链式推理(Chain-of-Thought)与环境行动(Tool Execution)**结合,开创了LLM Agent的新范式。2. TAO闭环:ReAct的核心机制2.1 什么是TAO?TAO是ReAct框架的核心循环,代表三个关键步骤的无限循环:plaintext┌──────────────────────────────────────────────────────────────────┐ │ TAO 闭环流程 │ │ │ │ ┌─────────┐ │ │ │ START │ │ │ │ 接收任务 │ │ │ └────┬────┘ │ │ ▼ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ Thought │────▶│ Act │────▶│ Observe │ │ │ │ 思考 │ │ 行动 │ │ 观察 │ │ │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ ▲ │ │ │ │ │ ▼ ▼ │ │ │ ┌───────────────────────┐ │ │ │ │ Tool Executor │ │ │ │ │ (搜索/计算/API调用) │ │ │ │ └───────────────────────┘ │ │ │ │ │ │ │ ▼ │ │ │ ┌─────────────────────┐ │ │ └────│ 任务完成? │◀─┐ │ │ │ 是→Final Answer │ │否 │ │ └─────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────────┘2.2 三步详解Thought(思考):模型的"内心独白"text思考内容应包含: ├── 当前任务的核心目标是什么? ├── 上一步的观察结果说明了什么? ├── 当前状态与目标的差距还有多大? └── 下一步最合理的行动是什么?示例:plaintext用户问:"特斯拉股票现在多少钱?" Thought: 用户想查询特斯拉实时股价,我需要调用股票查询工具。 首先需要确认特斯拉的股票代码,然后才能查询价格。 我应该先调用股票搜索工具。Act(行动):标准化工具调用text行动格式规范: tool_name[参数1="值1", 参数2="值2"] 示例: ├── search[query="特斯拉股票代码"] ├── get_stock_price[symbol="TSLA"] ├── web_search[query="埃菲尔铁塔高度"] └── calculator[expression="100 * 0.15"]Observe(观察):接收真实的外部反馈text观察结果的特征: ├── 客观性:不带主观判断,忠实记录工具返回 ├── 时效性:反映当前真实状态 └── 可追溯性:为下一步推理提供数据基础示例:plaintextAct: get_stock_price[symbol="TSLA"] Observe: TSLA当前价格 $242.84,开盘价 $240.50,涨幅 +0.97%2.3 与传统方法的核心对比维度Chain-of-ThoughtPure Tool UseReAct推理能力✅ 强❌ 无✅ 强行动能力❌ 无✅ 强✅ 强决策可追溯✅ 可追溯❌ 黑箱✅ 完全透明外部信息获取❌ 不能✅ 能✅ 能自我纠错❌ 难❌ 难✅ 可嵌入反思幻觉风险高中低(可验证)Token消耗中低较高适用场景数学推理简单查询复杂任务3. 工作流程:ReAct如何一步步解决问题3.1 循环迭代的完整生命周期python# ReAct执行伪代码 def react_execute(task: str, max_steps: int = 8): """ ReAct核心执行循环 """ context = {"task": task, "history": [], "steps": 0} while context["steps"] max_steps: # Step 1: Thought - 生成推理 thought = llm.generate_thought(context) context["history"].append({"type": "thought", "content": thought}) # Step 2: Act - 决定行动 action =

更多文章