Reasoning + Acting: ReAct范式与ReAct Agent

引言

在人工智能领域,大型语言模型(LLM)的出现带来了前所未有的可能性。然而,LLM 并非万能,它们会"幻觉",它们无法实时获取信息。为了弥补这些不足,ReAct 范式 应运而生,它赋予了 LLM 像人类一样"思考"(Reasoning)和"行动"(Acting)的能力,从而构建出更强大、更可靠的 ReAct Agent

传统 LLM 的局限性:为什么需要 ReAct

想象一下,你问一个普通的 LLM:"请帮我规划一下从上海到北京的火车票,并告诉我天气情况。"

  • 票务信息:LLM 可能会给出一些看似合理但实际上是虚构的票务信息,因为它无法访问实时票务系统。
  • 天气信息:LLM 只能根据其训练数据回答历史天气,而无法提供实时天气。

核心问题: 传统的 LLM 缺乏与外部世界交互的能力,它们无法调用工具,也无法根据真实世界的反馈进行调整。

ReAct 范式登场:思考、行动、观察、迭代的循环

ReAct是谁提出来的?

在人工智能领域,ReAct (Reasoning and Acting)框架是由 普林斯顿大学 (Princeton University)和 谷歌研究院(Google Research,特别是 Brain 团队)的科研人员共同提出的。

该框架首次出现在 2022 年发表的论文 《ReAct: Synergizing Reasoning and Acting in Language Models》 中。其主要贡献者包括:

  • 姚顺雨 (Shunyu Yao) :论文第一作者,来自普林斯顿大学。
  • Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Yuan Cao:来自谷歌研究院。
  • Karthik Narasimhan:来自普林斯顿大学。

姚顺雨(Shunyu Yao)目前被公认为 AI Agent(人工智能体)领域的全球顶尖青年学者和领军人物之一

小八卦:2025 年 12 月,腾讯官方确认姚顺雨已正式加盟,出任首席 AI 科学家(Chief AI Scientist),直属于 CEO/总裁办,并领导新成立的 AI Infra 部门大模型部门

什么是 ReAct 范式

它的核心逻辑是一个四元组的循环:

Thought (思考) → Action (行动) → Observation (观察) → 迭代

核心组件分解:

  • Thought (推理) :模型对当前任务进行分析,计划下一步要做什么(例如:"我需要查询当前的股价")。
  • Action (行动) :模型决定调用哪个外部工具(Tool/Function Calling),并给出参数(例如:调用 get_stock_price(symbol="AAPL"))。
  • Observation (观察) :模型接收外部工具返回的真实结果(例如:"Apple 股价为 190 美元")。
  • 迭代:基于观察结果继续思考和行动,直到完成任务。

ReAct Agent:具有"手脚"的智能体

定义

ReAct Agent 就是基于 ReAct 范式构建的智能体。你可以把它想象成一个拥有大脑(LLM)和"手脚"(外部工具)的机器人。它不再仅仅是回答问题,而是能够:

  • 理解并规划:解析用户意图。
  • 调用工具:执行特定的外部操作。
  • 处理反馈:根据工具返回的真实世界信息调整策略。
  • 迭代优化:通过多轮思考-行动-观察,逐步接近最终答案

案例

这样说太干了,来点案例?😈

用户: "计算一下 2023 年 8 月 15 日,上海浦东新区有多少人会去迪士尼乐园,然后告诉我当天是否会下雨?"

  1. Thought: "用户想知道迪士尼客流量和天气。我需要一个获取客流量的工具和一个天气查询工具。客流量可能需要结合历史数据和节假日因素,天气是实时的。"
  2. Action: "调用 get_disney_attendance_estimate(date='2023-08-15', location='上海浦东新区') 工具。"
  3. Observation: "迪士尼乐园在 8 月 15 日(非周末)预计客流量为 30,000 人。"
  4. Thought: "我已经获取了客流量。现在需要获取天气信息。"
  5. Action: "调用 get_current_weather(location='上海浦东新区', date='2023-08-15') 工具。"
  6. Observation: "2023 年 8 月 15 日,上海浦东新区预计小雨。"
  7. Thought: "我已经获取了所有需要的信息,可以回答用户了。"
  8. Action: "回答用户:'根据预测,2023 年 8 月 15 日上海浦东迪士尼乐园预计客流量为 30,000 人,当天预计会有小雨。'"

深入后端开发:ReAct Agent 的实现框架

对于后端开发者来说,手动实现 ReAct 范式需要大量的提示词工程和状态管理。幸运的是,目前主流的 AI 框架都提供了对 ReAct 的开箱即用支持:

  • Spring AI/Spring AI Alibaba
  • Langchain4j

Spring AI Alibaba (声明式/配置式)

它更倾向于通过 Spring 的 Bean 注入和 ChatClient 来实现,其深度绑定 Spring 生态。

Java 复制代码
// 典型的 Spring 风格:通过 ChatClient 绑定工具
var chatClient = chatClientBuilder
    .defaultFunctions("currentWeatherTool") // 注册为 Spring Bean 的工具
    .build();

// 执行时,Spring AI 内部会封装 ReAct 的循环逻辑
String response = chatClient.prompt("上海今天天气怎么样?").call().content();

LangChain4j (命令式/编排式)

它更像是一个工具箱,让你显式地构建"大脑"和"手脚"。如果你需要复杂的底层agent编排,那它更加适合你。

Java 复制代码
Assistant assistant = AiServices.builder(Assistant.class)
    .chatLanguageModel(model)
    .tools(new WeatherTool()) // 手动绑定工具类
    .chatMemory(MessageWindowChatMemory.withMaxMessages(10))
    .build();

String response = assistant.chat("上海今天天气怎么样?");

对比总结

维度 LangChain4j Spring AI Alibaba
生态 独立于框架,Quarkus/Spring 均可 深度绑定 Spring Boot / Cloud
灵活性 极高,适合从底层定制 Agent 行为 较好,遵循"约定大于配置"
上手难度 需要学习复杂的链/服务概念 只要会用 Spring,上手非常快
推荐场景 复杂的、非 Spring 环境的多 Agent 协作 现有的 Java 微服务系统增加 AI 能力

总结

ReAct范式很好地指导了agent如何思考并调用工具解决用户提出的问题,虽然耗费的token会多很多,但是幻觉问题得到大大缓解。这是agent开发的新的指导范式和里程碑。

相关推荐
147API24 分钟前
60,000 星的代价:解析 OpenClaw 的架构设计与安全教训
人工智能·安全·aigc·clawdbot·moltbot·openclaw
audyxiao00127 分钟前
智能交通顶刊TITS论文分享|如何利用驾驶感知世界模型实现无信号灯路口自动驾驶?
人工智能·机器学习·自动驾驶·tits
lisw0532 分钟前
氛围炒股概述!
大数据·人工智能·机器学习
hjs_deeplearning32 分钟前
文献阅读篇#16:自动驾驶中的视觉语言模型:综述与展望
人工智能·语言模型·自动驾驶
爱喝可乐的老王2 小时前
PyTorch深度学习参数初始化和正则化
人工智能·pytorch·深度学习
杭州泽沃电子科技有限公司4 小时前
为电气风险定价:如何利用监测数据评估工厂的“电气安全风险指数”?
人工智能·安全
Godspeed Zhao6 小时前
自动驾驶中的传感器技术24.3——Camera(18)
人工智能·机器学习·自动驾驶
qq_297574677 小时前
【实战教程】SpringBoot 集成阿里云短信服务实现验证码发送
spring boot·后端·阿里云
顾北128 小时前
MCP协议实战|Spring AI + 高德地图工具集成教程
人工智能
wfeqhfxz25887828 小时前
毒蝇伞品种识别与分类_Centernet模型优化实战
人工智能·分类·数据挖掘