Spring AI Alibaba-ReactAgent框架-chatbot智能体应用

目录

1、ReactAgent框架

[1.1、ReactAgent 的核心原理:ReAct 范式](#1.1、ReactAgent 的核心原理:ReAct 范式)

[1.2、ReactAgent 的内部构造](#1.2、ReactAgent 的内部构造)

[1.3、为什么需要 ReactAgent?](#1.3、为什么需要 ReactAgent?)

[1.4、构建一个 ReactAgent](#1.4、构建一个 ReactAgent)

2、示例:chatbot智能体应用

2.1、ChatBot运行

[2.2:开箱即用的 Web UI 聊天界面](#2.2:开箱即用的 Web UI 聊天界面)


1、ReactAgent框架

ReactAgent框架是spring-ai-alibaba-agent-framework中最核心、最常用的智能体(Agent)实现类。它赋予了大模型**"自主思考"** 和**"调用工具"**的能力,让 AI 不再只是一个只会陪聊的机器人,而是一个能真正帮你干活的智能助手。

是 Spring AI Alibaba 中实现"模型 + 工具 = 智能体"这一公式的核心载体。

1.1、ReactAgent 的核心原理:ReAct 范式

ReactAgent 的名字来源于 ReAct (Reasoning + Acting) 范式,即"推理 + 行动"。它的底层实际上是一个基于 Graph(图)的工作流引擎,通过多个节点循环协作来完成任务。

当用户提出一个问题时,ReactAgent 会进入一个**"思考 → 行动 → 观察 → 迭代"**的循环:

  1. 推理(Reasoning / Thought):模型先拆解问题,判断是否需要借助外部工具(比如查天气、读文件、执行代码等)。
  2. 行动(Acting / Action):如果需要,它会生成指令去调用你预先配置好的 Java 方法或外部 API。
  3. 观察(Observation):获取工具执行后的返回结果,并将这个新信息重新反馈给模型。
  4. 迭代(Iteration):模型结合新的观察结果再次进行推理。如果信息足够,就输出最终答案;如果不够,则继续下一轮循环,直到问题解决或达到最大尝试次数。

1.2、ReactAgent 的内部构造

从源码架构来看,ReactAgent 继承自 BaseAgent,其内部主要由以下几个核心组件驱动:

  • AgentLlmNode(模型节点):负责调用底层的 LLM(如通义千问)进行逻辑推理和决策。
  • AgentToolNode(工具节点):负责具体执行工具调用的逻辑。
  • Hook(钩子机制) :允许你在 Agent 生命周期的关键阶段(如调用模型前/后、调用工具前/后)插入自定义的逻辑,常用于实现限流、审批、日志记录或防死循环控制。如图是默认实现:

1.3、为什么需要 ReactAgent?

普通的 LLM 应用只能依靠模型训练时的历史数据来回答问题,存在知识滞后和幻觉问题。而 ReactAgent 的本质区别在于:

  • 打破知识边界:通过调用实时工具(如搜索、数据库查询),它能获取最新的信息。
  • 具备执行力:不仅能"说",还能通过 Function Calling 去"做"(比如执行 Shell 命令、修改业务数据)。
  • 处理复杂任务:面对需要多步骤推理的复杂需求,它能像人类一样一步步拆解并解决。

1.4、构建一个 ReactAgent

在 Spring AI Alibaba 中,创建一个 ReactAgent 非常简洁,通常使用建造者模式(Builder)进行链式配置:

java 复制代码
ReactAgent agent = ReactAgent.builder()
    .name("weather_agent")               // 智能体的唯一标识名称
    .model(chatModel)                    // 注入大脑:配置 ChatModel(如通义千问)
    .systemPrompt("你是天气预报助手...") // 设定人设与行为准则(System Prompt)
    .tools(myWeatherTool, mySearchTool)  // 赋予手脚:注册可调用的工具
    .hooks(someLimitHook)                // 可选:挂载拦截器或钩子
    .build();

// 发起对话,Agent 会自动开始 ReAct 循环
AssistantMessage reply = agent.call("帮我查一下深圳今天的天气,并推荐穿搭");

2、示例:chatbot智能体应用

官方examples目录下的 chatbot 示例,是一个用来快速体验和上手 Spring AI Alibaba Agent 框架的入门级智能体应用。它展示了如何用最少的代码构建一个具备工具调用能力的聊天机器人。

这个 ChatBot 不仅是一个简单的问答机器人,它是一个基于 ReAct(Reasoning + Acting)范式的智能体(Agent)。除了能进行日常对话外,它还内置了以下的工具能力:

  • 执行 Shell 脚本:可以在本地环境中运行命令行指令。
  • 执行 Python 代码:通过 GraalVM Python 库来动态执行 Python 脚本。
  • 查看本地文件:能够读取并展示指定文本文件的内容。

2.1、ChatBot运行

pom.xml 引入的三个核心依赖:

  • spring-ai-alibaba-agent-framework:核心的 Agent 开发框架。
  • spring-ai-alibaba-starter-dashscope:用于对接阿里云百炼大模型平台,去集成各种大模型。
  • spring-ai-alibaba-studio:可选依赖,提供开箱即用的 Web UI 聊天界面。
java 复制代码
public ReactAgent chatbotReactAgent(ChatModel chatModel,
	                                    @Qualifier("executeShellCommand")ToolCallback executeShellCommand,
	                                    @Qualifier("executePythonCode")ToolCallback executePythonCode,
	                                    @Qualifier("viewTextFile")ToolCallback viewTextFile,
			MemorySaver memorySaver) {
		return ReactAgent.builder()
				.name("SAA")// 智能体名称
				.model(chatModel) // 注入大模型(大脑)
				.instruction(INSTRUCTION) // 设定系统提示词
				.enableLogging(true)// 开启日志以便观察推理过程
				.saver(memorySaver)
				//.hooks()可选:挂载拦截器或钩子
				// Must set ShellToolAgentHook to manage shell session lifecycle for executeShellCommand
				.hooks(ShellToolAgentHook.builder().shellToolName(executeShellCommand.getToolDefinition().name()).build())
				.tools(
						executeShellCommand,
						executePythonCode,
						viewTextFile
				)// 赋予智能体工具能力
				.build();
	}

启动之后访问:http://localhost:8080/chatui/index.html?chatHistoryOpen=true

2.2:开箱即用的 Web UI 聊天界面

前端界面代码位于在spring-ai-alibaba-studio的jar包里,该jar包也包含了对应的REST API 。

可以基于该源码客开自己项目本地的,或者集成成熟的开源的 Chatbot UI。

相关推荐
cd_949217218 分钟前
3D角色自动绑骨怎么做?用V2Fun完成建模、绑定、动作和导出
人工智能·3d
瑞禧生物tech13 分钟前
SH-PEG-Biotin巯基-聚乙二醇-生物素 HS-PEG-Bio 深度解析
人工智能
冬奇Lab1 小时前
MCP 系列(06):MCP vs Function Calling——用数据说话的选型指南
人工智能
冬奇Lab1 小时前
每日一个开源项目(第159篇):Vibe-Trading - 用自然语言做量化研究,AI 驱动的个人交易 Agent
人工智能·开源·资讯
AI大模型-小雄1 小时前
2026 年 7 月国内怎么开通 ChatGPT Pro?5x / 20x 区别、适合人群与避坑指南
人工智能·gpt·chatgpt·ai编程·开发工具·codex·chatgpt pro
快乐非自愿1 小时前
AI低代码破局:数字化降本增效的核心逻辑与商业落地
人工智能·低代码
ctrl_v助手1 小时前
Halcon学习笔记2
人工智能·笔记·学习
彭军辉1 小时前
生命体AI和数字生命有什么区别
人工智能
Rauser Mack2 小时前
AI大模型测评:GPT-5.5翻车、Claude封神——大模型选型的真相
人工智能·gpt·prompt
2601_961946082 小时前
AI API 网关实战:从单 Key 管理到企业级多租户架构
大数据·人工智能·金融·架构·api·个人开发