AI Agent入门实战第2篇,ReAct范式深度解析--从“会说话的AI”到“会思考、会动手的AI”
让Java开发者像写Spring Boot一样开发AI应用——第二课
写在前面
第一天的课程,我们创建了第一个AI Agent——一位“智能心理咨询师”。它能够根据我们设定的角色和指令,给出专业、有温度的回应。
但有一个问题:它只能“说”,不能“做”。
如果用户问:“明天杭州天气怎么样,帮我规划一下行程?”它要么编造一个天气,要么告诉你“我查不到实时天气”。
今天的课,就是要解决这个问题。
ReAct范式,让AI从“会说话的AI”进化为“会思考、会动手的AI”。
一、ReAct是什么?不是模型,是“执行逻辑”
很多人以为ReAct是一种新的AI模型。不是的。
ReAct(Reasoning + Acting)不是大模型的能力,而是一种让大模型执行任务的逻辑框架。它定义了AI在处理复杂问题时的行为模式——先想清楚做什么,再做,做完看结果,根据结果决定下一步。
就是这个“想→做→看→再想”的循环,把AI从“一问一答”的被动模式,拉到了“自主推理”的主动模式。
普通ChatModel vs ReAct Agent:一张表看懂
| 对比维度
|
ChatClient(单次对话)
|
ReAct Agent(自主执行)
交互模式
|
用户提问 → 模型回答 → 结束
|
用户给目标 → Agent规划 → 行动 → 观察 → 行动 → … → 完成
| |
决策权
| 每次由人主动发起 | Agent自主循环,主动决策 | |
任务边界
|
单轮或多轮问答
| 直到任务完成为止 |
一句话总结:如果说第一天的Agent是“会说话的AI”,那今天的ReAct Agent就是 “会思考、会动手的AI” 。它不再是等你想好问题再回答,而是自己会想“我现在该做什么?”,然后主动去做——做完再看结果,再想下一步该做什么。
二、核心链路:Thought → Action → Observation
ReAct的核心是一个迭代循环,模型会按顺序不断生成“思考→行动→观察”的轨迹。
用一个天气查询的例子来说明:
<span leaf="">💭 Thought(思考):我需要先查明天上海的天气……</span>
三个关键步骤拆解
| 步骤
|
作用
|
关键理解
| Thought(思考) |
分析当前状态,决定下一步做什么
|
这是ReAct与普通ChatModel最核心的区别——模型在“想”,而不只是“说”
| | Action(行动) |
调用工具或执行操作
|
可以是调用外部API、查询数据库、执行计算
| | Observation(观察) |
获取执行结果
|
作为下一轮Thought的输入
|
这个循环会持续进行,直到任务完成或达到终止条件。
三、Agent的四大核心组件
Spring AI Alibaba的Agent基于ReAct框架,包含四大核心组件:
| 组件
|
作用
|
对应Builder方法
| 大脑(大模型) |
负责思考、决策、规划
| .model(chatModel) |
| 工具集 |
Agent可调用的所有能力
| .tools(toolCallback)
/ .methodTools(object)
| | 记忆系统 |
短期记忆(当前会话)+ 长期记忆(跨会话)
| .saver(memorySaver) |
| 系统提示词 |
定义Agent的角色、行为规范、约束条件
| .systemPrompt(prompt)
/ .instruction(prompt)
|
四、Builder模式详解:5个核心方法
ReactAgent采用经典的Builder设计模式,通过链式调用完成配置与构建:
<span leaf=""><span>ReactAgent</span> <span>agent</span> <span>=</span> ReactAgent.builder()</span>
① .name(String name) —— Agent的身份标识
为Agent设置唯一名称,用于日志追踪、调试和多Agent编排场景下的识别。
💡最佳实践:名称应具有业务语义,便于在日志和监控中快速定位问题。
② .model(ChatModel chatModel) —— 绑定大模型
将具体的大模型实例注入Agent,作为其“大脑”:
<span leaf=""><span>DashScopeApi</span> <span>api</span> <span>=</span> DashScopeApi.builder()</span>
③ .systemPrompt(String prompt) —— 定义Agent行为(最关键!)
这是影响Agent回复质量最关键的配置。systemPrompt定义了Agent的角色定位、行为规范和约束条件。
好的systemPrompt应该包含:
-
角色定位:你是谁?(如“你是一名10年经验的资深心理咨询师”)
-
能力边界:你能做什么?
-
行为约束:你应该怎么做?
-
风格要求:以什么风格回复?
对比示例:
<span leaf=""><span>// ❌ 差:信息太少,模型不知道该怎么表现</span></span>
⚠️ 课堂强调:systemPrompt不是“装饰品”,它是Agent行为的 “宪法” 。写得好不好,直接决定了Agent回复的质量和可靠性。
④ .tools(ToolCallback… tools) —— 注册工具
让Agent获得“动手能力”——调用外部函数、API、数据库等。
方式一:使用FunctionToolCallback(推荐)
<span leaf=""><span>ToolCallback</span> <span>weatherTool</span> <span>=</span> FunctionToolCallback.builder(”get_weather”, <span>new</span> <span>WeatherTool</span>())</span>
方式二:使用@Tool注解 + methodTools(更简洁)
<span leaf=""><span>class</span> <span>WeatherTool</span> {</span>
⑤ .saver(Saver saver) —— 配置记忆存储
让Agent具备“记忆力”——保存对话历史,实现多轮对话的上下文理解。
<span leaf=""><span>// 使用内存存储(适合开发测试)</span></span>
💡 为什么需要Saver?没有记忆的Agent每次对话都是“失忆”的——上一轮你说“我叫小明”,下一轮它问“你叫什么名字?”。Saver让Agent能够记住对话历史,实现真正的连贯对话。
五、代码实战:对比ChatModel与ReAct Agent
实战一:无工具的纯推理Agent
构建一个不带任何工具的Agent,观察其“纯推理”过程:
<span leaf=""><span>@Service</span></span>
课堂观察点:
-
Agent虽然没有工具,但仍然会尝试“推理”
-
观察模型是否按照systemPrompt要求的格式输出
-
对比“有思考过程”和“无思考过程”的答案质量差异
实战二:ChatModel vs ReAct Agent 对比实验
用同一个问题分别问ChatModel和ReAct Agent,观察差异:
<span leaf=""><span>@Service</span></span>
预期对比结果:
| | ChatModel
|
ReAct Agent
天气信息
|
可能编造或说“我不知道”
| 调用工具获取真实天气 | |
行程规划
|
通用的模板化建议
| 结合天气做针对性建议 | |
推理过程
|
不可见(黑盒)
| Thought→Action→Observation全可见 |
💡 核心结论:ChatModel是“知道什么说什么”,ReAct Agent是 “不知道就去查,查完再思考,思考完再说” 。
六、systemPrompt:一段话改变Agent“人格”
用同一个问题,搭配不同的systemPrompt,观察回复差异:
| 实验组
|
systemPrompt
|
预期效果
A组
|
“你是一个助手”
|
通用、平淡的回复
| |
B组
|
“你是一名资深心理咨询师,以温暖专业的态度回应”
|
有温度、有深度的回复
| |
C组
|
“你是毒舌吐槽专家,用幽默讽刺的方式回应”
|
风格鲜明的吐槽式回复
|
演示代码:
<span leaf=""><span>public</span> <span>void</span> <span>compareSystemPrompts</span>() {</span>
💡 结论:systemPrompt是影响Agent回复质量性价比最高的配置——不需要改代码、不需要加工具,仅仅改变一段文字就能让Agent表现出完全不同的“人格”和专业度。
七、课后挑战
任务:为Agent添加详细的systemPrompt,观察其对回复质量的影响
基于第一天的3个Agent(心理咨询师、编程助手、法律顾问),为每个Agent设计3个不同版本的systemPrompt(粗、中、细),用同一个问题测试3个版本,记录回复差异。
验收标准:
-
为每个Agent设计了3个不同精细度的systemPrompt
-
记录了至少9组(3 Agent × 3 Prompt)对比实验结果
-
能总结出systemPrompt设计的3条核心原则
八、本日核心收获
-
ReAct = Reasoning + Acting,让模型在推理和行动之间交替
-
Thought → Action → Observation 是ReAct的核心循环
-
systemPrompt是性价比最高的配置——一段话改变Agent“人格”
-
工具让Agent从“会说”变成“会做” ——工具是把聊天机器人升级为Agent的那条分界线
-
ChatModel是“知道什么说什么”,ReAct Agent是“不知道就去查”
📌 本文要点回顾:ReAct范式让AI从“被动回答”进化为“主动解决问题”。通过“思考→行动→观察”的循环,Agent能够自主完成复杂的多步任务。而Spring AI Alibaba的ReactAgent.Builder模式,让Java开发者可以用不到50行代码,构建出一个具备自主推理和行动能力的智能体。
有任何问题,欢迎在评论区留言交流!
作者:Java老兵搞AI,专注Java生态下的AI应用开发
如果觉得有用,点个「在看」支持一下吧
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/ai002/post/20260823/AI-Agent%E5%85%A5%E9%97%A8%E5%AE%9E%E6%88%98%E7%AC%AC2%E7%AF%87ReAct%E8%8C%83%E5%BC%8F%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90--%E4%BB%8E%E4%BC%9A%E8%AF%B4%E8%AF%9D%E7%9A%84AI%E5%88%B0%E4%BC%9A%E6%80%9D%E8%80%83%E4%BC%9A%E5%8A%A8%E6%89%8B%E7%9A%84AI/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com