ReactAgent执行器概述与触发机制
什么时候会走到 ReactAgentExecutor?
在前面的章节中,我们已经详细讲解了执行器注册表和模式分发机制。简单回顾一下:当用户发送一条消息后,系统会经过意图识别、问题改写、路由判定等一系列准备流程,最终生成一个 ConversationExecutionPlan(执行计划),里面有个关键字段叫 mode。
当用户在聊天界面选择的是 "开发问题" 这个问答模式时,路由阶段会把执行计划的 mode 设为 ExecutionMode.REACT_AGENT。接着注册表根据这个模式找到对应的执行器——也就是我们这篇要重点讲的 ReactAgentExecutor。
为什么叫 ReAct?
ReAct 是 "Reasoning + Acting" 的缩写,是一种让大模型交替进行推理和工具调用的 Agent 范式。模型先思考当前应该做什么,然后决定是否调用工具,拿到工具结果后再继续推理,如此循环直到得出最终答案。
执行器接口定义
所有执行器都实现了同一个接口 ConversationExecutor:
public interface ConversationExecutor {
ExecutionMode mode();
Flux<String> execute(TaskInfo taskInfo);
}
这个接口非常简洁,就两个方法:
mode()返回当前执行器负责的执行模式execute(taskInfo)接收任务上下文,返回一个流式的文本输出
每个执行器只负责一种模式,通过 mode() 方法声明自己是谁。
REACT_AGENT 模式的定义
在 ExecutionMode 枚举中,REACT_AGENT 的定义如下:
/**
* 开放式 ReAct Agent 模式。
*
* <p>适用于固定 RAG 或结构图路径无法覆盖的问题,或者需要 Agent 自主判断是否调用工具的场景。
* 该模式由 {@code ReactAgentExecutor} 执行,会把规划后的 agentQuestion 交给 ReAct Agent,
* 由 Agent 自主进行推理、工具调用和最终回答输出。</p>
*/
REACT_AGENT,
可以看到,这个模式的适用场景是:固定的 RAG 检索或结构图路径搞不定的问题。比如用户问的是一个需要联网搜索才能回答的开放性问题,或者问题本身需要 Agent 自己判断该用什么工具、怎么组合信息来回答。
ReactAgentExecutor 的类声明
@Component
public class ReactAgentExecutor implements ConversationExecutor {
private final ReactAgent reactAgent;
private final StreamEventWriter streamEventWriter;
public ReactAgentExecutor(ReactAgent businessChatReactAgent,
StreamEventWriter streamEventWriter) {
this.reactAgent = businessChatReactAgent;
this.streamEventWriter = streamEventWriter;
}
@Override
public ExecutionMode mode() {
return ExecutionMode.REACT_AGENT;
}
}
这里有两个核心依赖:
ReactAgent reactAgent:这是 Spring AI Alibaba 提供的 ReAct Agent 图执行引擎,负责真正的推理和工具调用循环StreamEventWriter streamEventWriter:SSE 事件序列化工具,负责把各种事件(thinking、text、error 等)序列化成 JSON 推送给前端
mode() 方法直接返回 ExecutionMode.REACT_AGENT,告诉注册表"我负责处理开放式问答"。
付费内容提示
该文档的全部内容仅对「JavaUp项目实战&技术讲解」知识星球用户开放
加入星球后,你可以获得:
- 超级八股文:100万+字的全栈技术知识库,涵盖技术核心、数据库、中间件、分布式等深度剖析的讲解
- 讲解文档:超级AI智能体、黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的从0到1的详细文档
- 讲解视频:超级AI智能体、黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的核心业务详细讲解
- 1 对 1 解答:可以对我进行1对1的问题提问,而不仅仅只限于项目
- 针对性服务:有没理解的地方,文档或者视频还没有讲到可以提出,本人会补充
- 面试与简历指导:提供面试回答技巧,项目怎样写才能在简历中具有独特的亮点
- 中间件环境:对于项目中需要使用的中间件,可直接替换成我提供的云环境
- 面试后复盘:小伙伴去面试后,如果哪里被面试官问住了,可以再找我解答
- 远程的解决:如果在启动项目遇到问题,本人可以帮你远程解决
进入星球后,即可享受上述所有服务,保证不会再有其他隐藏费用。
