ai agent框架spring ai/alibaba 源码原理分析(六) agent和组件 简介saa是java的ai agent框架本系列将深入剖析 Spring AI Alibaba 的源码实现与核心原理不仅可以指导agent的开发更可以改造框架增加新特性系列内容系列(一)架构完成系列(三)调用I工具完成II MCP1 MCP MCP能力工具资源Promptssampling。。。springboot自动配置完成2分布式MCP3 MCP securityIII skills完成系列(四) RAG完成I知识库文档读取分块嵌入向量storeII检索增强生成模块化混合检索融合重排系列(二)模型model模型完成chat模型消息提示词结构化输出记忆chat clientadvisor组件系列(五) graphI图结构节点和边StateGraph外部介入推理框架graph映射: ReActrelectionCoTPlan-And-ExecuteII图编译CompiledGraph扁平化图结构邻接表结构III图执行检查点回溯/回放中断和恢复容错系列(六) agent及组件ReactAgentAgentLlmNodeAgentToolNode钩子和拦截器记忆结构化输出系列(七) MASI MAS模式flow模式编排器-子智能体智能体团队简单介绍agentic模式消息总线共享状态数据交接II分布式MAS远程通讯负载均衡注册发现容错系列(八) I观测观测组件(micrometer-observation)观测点chatClientchat模型工具II评估系列(九) agent管理平台agent发现(a2a/nacoslocal)agent列表提示词管理skill管理MCP管理聊天ui会话(thread)本文分析agent和agent组件ReactAgentAgentLlmNodeAgentToolNode钩子和拦截器记忆结构化输出based spring ai alibaba v1.1.2.2关键词agent缩写spring ai缩写saspring ai alibaba本文缩写saa参考资料https://java2ai.com/docs/overview spring ai alibaba官网文档https://docs.spring.io/spring-ai/reference/index.html spring ai官方文档SAA概览上图是saa原理源码分析场景视图每个包对应着saa/sa组件或特性是本文分析的目录model大模型的封装模型包括Chat嵌入audioimage等类型其中chat模型包括advisor组件提示词记忆等agent/graphagent和图紧密相关可以认为agent是一种既定的”图”形开发人员可以使用graph底层api直接构建graph使用agent获得既定的图形简化agent的开发外部调用(calling)工具MCPskillsRAG检索增强生成MASMAS模式 flow模式 编排器-子智能体智能体团队数据交接studio简易的agent管理工具嵌入到agent带有agent面板列表agent提供chat界面用于调试agent是开发agent的便利工具admin管理台 agent的发布列表管理执行提示词工程评估和数据集观测agentagent 推理框架 上下文 工具agent是推理框架的封装saa是flow模式推理框架映射成图那么saa agent可以认为是特定的图。saa的agent实现有ReactAgentReAct推理框架。ReactAgent可以作为通用的组件构建其他更复杂的推理框架复杂工作可分成多个小任务完成每个小任务适用思考-动作-观测的闭环。本节分析ReactAgent以及agent组件包括AgentLlmNodeAgentToolNode钩子和拦截器记忆结构化输出上图是agentagent组件类图instruction指令字符串属性最终转成UserPrompt但不是sa ChatClient的UserPrompt的替代instruction主要用途 MAS消息交接即前面的agent结果消息放入下一个agent的输入消息instruction设置占位符用来做模板AgentLlmNode/ModelInterceptorAgentLlmNode构建和初始ChatClient组件负责大模型调用实现了NodeActionWithConfig接口可作为图节点。AgentLlmNode核心是构建和初始化ChatClient其原理源码分析可参看系统-模型ModelInterceptorAgentLlmNodes使用函数式构建大模型调用ModelCallHandler使用函数式构建function与ModelInterceptor连成调用链AgentToolNode/ToolInterceptor负责工具调用实现NodeActionWithConfig接口作为图的节点放在AgentLlmNode后根据大模型的返回调用工具工具调用依赖sa 的ToolCallbackResolver和ToolCallback关于工具调用参看 系列-调用I 工具ToolInterceptor与ModelInterceptor类似函数式构建方法构建ToolCallHandler与ToolInterceptor连成调用链Hookhook映射为图节点因此可以在agent层实现图的能力agent开发者无需到底层的图例如KeyStrategys设置中断和恢复hook在agent层和model层适合引入和初始化组件如skills下面介绍几个常用的hookSummarizationHook使用大模型对历史对话摘要减少提示词避免提示词超限SkillsAgentHook支持skills参看系列-skills的源码原理分析InterruptionHookagent层实现中断功能无需到底层的graph参看系统-graph分析中断和恢复ReactAgent主要逻辑在图形构建参看系列-graph I 状态图分析图的结构系列-graph II 编译图分析图编译系列-graph III执行图分析图执行记忆saa提供短期记忆和长期记忆短期记忆是graph组件的检查点组件Checkpoint在系列-图结构介绍过Checkpoint保存全局的状态支持多轮记忆支持中断回复容错。长期记忆是Store组件主要是agent使用存取用户的profile。另外spring ai的记忆组件ChatMomery在系列-模型分析示例下面示例组合多个ReactAgent实现复杂的场景“竞品分析报告生成智能体”业务场景分析一款新产品例如“c909公务机”评估其产品力整个流水线包含以下步骤研究agent思考如何查资料 -动作调用搜索工具 -观测获取原始数据起草agent思考如何写文章 -动作撰写初稿 -观测生成草稿。主编agent思考草稿质量 -动作审阅打分 -观测输出反馈。如果打分不及格工作流会触发循环将反馈交还给起草专家重新思考。整体使用SequentialAgent研究 - (起草 -反思)起草-反思使用LoopAgent上图构建3个角色agent研究agent使用modelscope的必应搜索MCP服务上图flow agent构建整合角色agent上图是整个agent映射图测试输入 c909公务机研究agent搜索c909产品资料起草Agent使用资料赞写产品研究报告主编Agent审核报告同意在审核意见写入APPROVED循环结束否则审核意见回到起草agent考虑审核意见重写报告总结研究agent、起草Agent 和 主编Agent 是 ReactAgent各自的节点内部经历完整的 Thought思考 - Action调用工具/生成文本 - Observation获取结果 循环ReactAgent是组成复杂agent的通用组件。NEXTMAS MAS模式数据交接分布式MAS