什么是React模式?ReAct 是怎么实现的?你的项目中有实际体现React吗?

什么是React模式?

ReAct(Reasoning + Acting)是当前 AI Agent 理论中最具基础性和代表性的范式

1、ReAct-LLM

通俗理解:

让 AI 在整体目标的指引下"走一步看一步"。它打破了一次性规划全部流程的局限,通过动态的交替循环边思考边验证。例如在排查线上服务变慢的故障时(后文会举例详细介绍),AI 不会死板地执行预设脚本,而是先查询监控指标,观察到 CPU 飙升及慢 SQL 告警后,再动态决定去深挖数据库日志定位全表扫描问题,最后基于真实的排查结果通知负责人。这种顺藤摸瓜的过程,生成了更可靠、可追踪且能动态纠错的任务解决轨迹。

2、运作流程

这是一个基于反馈闭环的交替过程,主要包含以下三个核心步骤(Reasoning -> Acting -> Observation),循环往复直至任务完成或触发终止条件:

  1. 思考(Reasoning):LLM 分析当前上下文,生成内部推理过程,决定采取何种行动。这类似于 CoT 提示,但更注重行动导向。例如,模型可能会输出:"任务是查找最新天气。我需要调用天气 API,因为我的知识截止于训练数据。"

  2. 行动(Acting):根据推理结果,与外部环境交互,如调用 API 或搜索网络。这可以通过工具调用实现,例如执行"search_web(query='当前北京天气')"或"call_api(endpoint='/weather')"。

  3. 观察(Observation):获取外部环境对行动的反馈结果,作为新输入传递给 LLM,触发新一轮思考。例如,如果行动返回"北京天气:晴,25°C",模型会观察此信息,并推理下一步(如"基于天气,建议穿短袖")。

3、优缺点分析

  • 优势:显著减少幻觉(引入外部真实数据验证)、提升复杂任务的成功率、具备极高的可解释性与可调试性(完整的推理轨迹清晰可见)。

  • 局限性:多轮循环迭代会导致系统整体响应延迟增加,同时其表现高度依赖所集成的外部工具和 Skills 的质量与稳定性。

ReAct 是怎么实现的?

1、ReAct 的落地实现主要依赖以下五个核心组件协同工作:

  1. 历史上下文(History):Agent 维护一个统一的交互日志,涵盖以往的推理步骤、执行动作以及反馈观察。这为 LLM 提供了即时"记忆"机制,确保决策时能回顾先前事件,从而规避冗余步骤或无限循环风险。

  2. 实时环境输入( Real-time Environment Input :包括 Agent 当前捕获的外部变量,如系统警报信号或用户即时反馈。这些补充数据融入上下文,帮助 LLM 准确评估现状并调整策略。

  3. 模型推理模块( LLM Reasoning Module):作为 ReAct 的核心引擎,处理逻辑分析与规划。每次迭代中,LLM 整合历史记录、环境输入及任务目标,输出行动方案。

  4. 执行工具集与技能库(Tools & Skills):充当 Agent 的操作接口,与外部实体互动。其中原子工具(Tools)处理单一操作(如数据库查询、邮件发送);技能(Skills)则是对多个相关工具的编排封装,提供面向特定业务场景的可复用能力模块(如"故障诊断技能"、"竞品分析技能")。两者共同构成 Agent 的行动能力边界。

  5. 反馈观察机制(Feedback Observation):行动完成后,从环境中采集的实际响应,包括成功输出、错误提示或无结果状态。这一信息将被追加至历史上下文中,成为后续推理的可靠基础。

2、这里以上面提到的例子来展示一下执行流程(采用逐轮叙述形式,便于追踪动态变化):

3、ReAct 模式流程

Round 1

  • 历史上下文:空

  • 实时环境输入:空

  • 核心 Prompt:已知:当前历史上下文:{历史上下文} 实时环境输入:{实时环境输入} 用户目标:"排查 user-service 变慢原因并通知负责人" 请做出下一步的决策,你必须最少使用一个工具来实现该决策。

  • 执行工具:query_monitor 查询 user-service 早上的监控指标

  • 观察结果:CPU 飙升至 98%,伴随大量慢 SQL 告警。

Round 2

  • 历史上下文:已获取监控指标(CPU 飙升,有慢 SQL)

  • 执行工具:query_slow_sql 查询慢 SQL 日志

  • 观察结果:发现语句未命中索引,导致全表扫描。

Round 3

  • 历史上下文:监控指标 + 日志结论(全表扫描)

  • 执行工具:query_owner 查询 user-service 负责人

  • 观察结果:负责人为王建国,邮箱 wangjianguo@company.com

Round 4

  • 历史上下文:监控指标 + 日志结论 + 负责人信息

  • 执行工具:send_email 向负责人发送排查报告

  • 观察结果:邮件发送成功。

4、从底层来看,驱动 Agent Loop 运转的核心是一套动态组装的 Prompt:

已知: 当前历史上下文:&{历史上下文} 实时环境输入:&{实时环境输入} 用户目标:"排查 user-service 变慢原因并通知负责人" 请做出下一步的决策: (你可以选择调用工具或 Skill,或者在任务完成时直接输出最终结果)

最终输出:"已查明 user-service 接口变慢原因是由于慢 SQL 未命中索引导致全表扫描,已向负责人王建国发送了详细排查邮件。"

项目中如何实际体现React?(例)

任务: "帮我排查一下今天早上 user-service 接口变慢的原因,并把排查结果发给该服务的负责人。"

用 ReAct 的方式,AI 会经历如下动态博弈的过程:

  1. 思考 (Thought): 用户要求排查接口变慢,我需要先获取 user-service 今天早上的监控指标或告警信息。

  2. 行动 (Action): 调用监控查询工具 query_monitor(service="user-service", time="morning")

  3. 观察 (Observation): 返回数据表明,9:00-9:30 期间 CPU 利用率飙升至 98%,同时伴随大量慢 SQL 告警。

  4. 思考 (Thought): 既然有慢 SQL 告警,说明数据库查询可能存在瓶颈。我需要去日志系统查询具体的慢 SQL 语句是什么。(注意:这一步是动态决定的,如果上一步发现是 内存 OOM ,现在的行动就会变成查 Heap Dump)

  5. 行动 (Action): 调用日志查询工具 query_slow_sql(service="user-service", time="09:00-09:30")

  6. 观察 (Observation): 获取到慢 SQL:SELECT * FROM users WHERE age > 20 ORDER BY created_at DESC,并发现该查询没有命中索引,导致全表扫描。

  7. 思考 (Thought): 根本原因已经找到(全表扫描导致 CPU 飙升)。接下来我需要找到 user-service 的负责人是谁,以便发送报告。

  8. 行动 (Action): 调用企业通讯录工具 query_service_owner(service="user-service")

  9. 观察 (Observation): 查出负责人是"王建国",邮箱是 wangjianguo@company.com

  10. 思考 (Thought): 我现在收集齐了故障原因和联系人信息,可以组织排查报告并发送邮件了。

  11. 行动 (Action): 调用邮件发送工具 send_email(to="``wangjianguo@company.com``", subject="user-service 故障排查", body="发现由于缺少索引导致慢查询...")

  12. 观察 (Observation): 返回结果:邮件发送成功。

  13. 思考 (Thought): 任务已全部闭环完成,可以向用户输出最终答复了。

  14. 行动 (Action): 结束循环,用自然语言回复用户:"已查明原因是缺少索引导致的慢 SQL,并已向负责人王建国发送了邮件。"

如果采用非 ReAct 的模式(比如让 AI 一开始就写好计划),AI 可能会死板地执行"查日志 -> 找人 -> 发邮件"。但如果故障原因不在日志里,而在网络配置里,静态计划就会彻底崩溃。

在这个例子中,第 4 步的决定完全依赖于第 3 步的观察结果。ReAct 让 Agent 拥有了像人类工程师一样顺藤摸瓜、根据证据修正排查方向的能力。这是单纯的链式调用(Chain)无法做到的。

💡 延伸思考 :在更成熟的 Agent 系统中,上述步骤 2、5 中对监控和日志的联合查询,可以被封装为一个名为 diagnose_service_performanceSkill------它内部自动编排"查监控 + 查慢 SQL + 分析瓶颈"三个工具的调用序列,并返回一份结构化的诊断摘要。Agent 在推理时只需调用这一个 Skill,而不必每次都拆解成多个独立步骤,既降低了上下文占用,也提升了在同类故障场景下的复用效率。这正是 Skills 作为 Tools 高阶封装形态的核心价值所在。

相关推荐
云雾J视界2 小时前
2026年AI Agent框架选型指南:OpenClaw vs LangChain vs AutoGen 深度对比
大数据·人工智能·langchain·agent·open claw
纪伊路上盛名在2 小时前
PPT汇报中方法学、框架流程图的 文生图方案1
人工智能·文生图·流程图·科研·agent
紫雾凌寒2 小时前
Claude Code 自动模式:一种更安全的跳过权限审批的方式【译】
安全·ai·ai编程·claude·claudecode
羊仔AI探索3 小时前
OpenAI反击谷歌,GPT-5.2-Codex无限记忆,突破AI编程新境界!
人工智能·gpt·ai·aigc·ai编程
极光代码工作室3 小时前
基于AI的学习辅助系统设计
人工智能·机器学习·ai·系统设计
RemainderTime3 小时前
基于 Spring AI + DeepSeek:构建AI Agent 企业级服务与底层原理解析
人工智能·后端·spring·ai
gao_tjie3 小时前
JetBrains IDE + Luma MCP:为你的项目生成 AI 视频
ai
是小张张呀 zsy3 小时前
OpenClaw的安装部署 + 连接飞书
ai·飞书·openclaw
threerocks3 小时前
【前端转 Agent】01 | 从 Claude Code 开源热议聊起,不急着转 Python
前端·agent·claude