YAOTU INSIGHTS

agent框架langgraph4j原理源码分析 图 I状态图,推理框架

agent框架langgraph4j原理源码分析 图 I状态图,推理框架
简介lg4j是java技术栈ai agent框架深入掌握其源码与原理指导agent的开发重构/改造框架增加特性快速定位和修复bug发布私有版本系列内容 架构包括逻辑架构运行架构集成架构 状态图 StateGraph分析 推理框架 编译图 执行图 检查点 aync-generator 执行分析 中断/恢复 取消执行 agent和集成 简单agent 多agent 观测 studio本文基于langgraph4j v1.8.20关键词agentgraph缩写spring ai 缩写salanggraph4j 缩写 lg/lg4j参考资料Overview - LangGraph4j langgraph4j官网mp.weixin.qq.com/mp/appmsgalbum?actiongetalbumalbum_id4540202703779627014 spring ai Alibaba原理源码分析包括spring ai部分lg4j概览上图 lg4j的逻辑架构图逻辑架构展示lg4j功能模块描述其职责模块通过精密的协作共同支撑起复杂 Agent 的构建与运行。逻辑架构解构为以下四个核心域图编排、执行与状态、基础设施扩展、集成外部能力生态、开发支持1. 核心编排层图的蓝图与引擎StateGraph (状态图)这是开发者构建 Agent 的核心抽象。它代表了整个工作流的“蓝图”开发者在这里定义有哪些节点Node以及它们之间的流转规则Edge。CompiledGraph (编译图)当 StateGraph 被构建完成后经过 compile() 方法转化而来。编译图重整了状态图的数据结构支持高效的图执行编译图包含了流执行逻辑、状态机引擎和调度策略的“可运行实例”。2.执行与状态层原子动作与数据流转3.基础设施扩展层持久化、异步与可观测4.外部能力生态层AI核心能力这一层是LangGraph4j 与 AI 生态对接。Spring AI作为底层的能力供给层Spring AI 提供了 Agent 所需的原子能力包括 LLM model大语言模型、RAG检索增强生成、prompt提示词工程、memory长期记忆、mcptoolskills工具调用与技能扩展等。LangGraph4j也集成了langchain4j5.开发工具Studio (可视化开发工具)lg4j的Studio模块提供了一套完整的可视化调试和开发界面让开发者能够直观地看到图的执行路径和状态流转极大地降低了复杂 Agent 的开发门槛。graphlg4j是workflow框架以图的结构节点边构建处理流程节点执行动作实现逻辑边执行动作决定下一个节点对应的agentic是另一种模式整个流程大模型自主编排agentic省心省事但同时agentic容易失控纯粹看大模型心情因此目前比较好的方案主体使用flowable需要的时候使用agentic节点。在lg4j, 推理框架映射成graph以图的节点承载执行逻辑边决定下一节点支持检查点保存执行状态实现执行的暂停和恢复状态图本节分析状态图(StateGraph)状态图数据结构适用构建图上图是图结构类图展示了一个用于构建复杂、有状态 workflow AI 应用的框架结构, 是构建推理框架的“蓝图”。其核心思想是通过定义节点Nodes、边Edges和状态State来编排执行流程。StateGraphC位是整个系统的中枢它负责管理和编排整个执行流程标准的图结构有节点和边组成节点 (Nodes)Node: 节点接口/类。动作工厂: 每个节点都关联ActionFactory该工厂负责创建异步动作 AsyncNodeActionWithConfig。这个动作是节点执行逻辑。AsyncNodeActionWithConfig是BiFunction 若设置action类型是NodeActionWithConfigAsyncNodeAction等function类型使用AsyncNodeActionWithConfig统一适配边 (Edges)Edge: 图的一条边目标 (targets): 节点一个或多个出边 EdgeValueEdgeValue: 封装了边的信息二选一字符串: 节点的id简单路由指向一个节点EdgeCondition: 条件EdgeCondition: 条件决定走哪条边。动作 (acton): 条件的判断逻辑AsyncCommandAction: 返回命令 (Command)。映射关系 (mappings): 条件和节点的映射关系集例如X:_x_ EdgeCondition返回‘X’边走’_x_’节点状态state和状态维护组件channel放到执行图分析推理框架推理框架是智能体的“思维方式”定义了 Agent 如何思考、规划、决策以及适应环境是一个结构化的流程常用的 ReAct、CoT、Reflection、Plan-and-Execute可以认为,agent 推理框架 上下文 工具其中上下文包括系统提示词工具说明对话记忆用户提示词等可以看到agent的不可缺少是推理框架其他可以根据用户任务设置agent封装了特定框架在saa推理框架映射成特定”图”型。上节分析了图模型下面分析agent的推理框架graph实现Reflection适用做好一件事重心在迭代它不关心“下一步做什么”只关心“现在这个够不够好”反复打磨直到达到要求ReAct适用做完一件事重心在交互每一步都依赖上一步的观察结果路径是动态生成的思考动作观察再思考确定下一步一步步完成事情PE适用做成一件事重心在执行既定的步骤确保事情做成Cot适合逻辑推理场景重心在推导复杂问题拆成中间步骤一步步推出结论agent builder框架本节首先介绍下agent构建框架agent篇分析了lg4j给开发者的开发范式本节针对该范式问题重新设计上图 回顾lg4j的agent构建框架,整体架构采用了清晰的分层设计三层组成面向用户agent的交付接口AgentExecutor.builder可重用的 AI组件集成层Agent.Builder/ReactAgent.Builder图构建核心层Agent.Builderlg4j的框架有几个问题1 Agent.Builder/ReactAgent.Builder 创建调用模型action和工具调用action依赖Agent.Builder2 没有集成springboot构建依赖很繁琐3 类命名不太理想上图新的agentbuilder框架AgentActionBuilder 合并Agent.Builder/ReactAgent.Builder不依赖Agent.Builder负责构建model调用和action调用等基础部件可重用其他部件通过继承增加ReActReAct推理框架负责构建ReAct图ReActAutoConfiguration 自动配置注入springboot自动配置组件包括lg4jspringai等用户agent 注入ReAct下面分析几种推理框架的构图RelectionReflection反思是一种 AI 自我评估、优化自身输出的思维范式。Reflection 聚焦于内部自我批判和迭代改进——让模型扮演生成者和评审者双重角色通过多轮自我优化提升输出质量Reflection循环一般包含生成阶段 (Generation)模型根据指令生成初始输出反思阶段 (Reflection)模型或另一个模型对输出进行批判性评估优化阶段 (Refinement)回到生成阶段基于反思结果改进输出迭代控制设置最大轮次直到质量达标或达到上限下图是Reflection构建示例上图ReflectAgent构建图上图自动配置部分依赖 chatModelstateSerializer通过springboot机制注入两个AgentActionBuilder 构建2套调用模型/调用工具action(本实例没有用到工具调用)工具可以根据需要分组支持配置不同的model返回Reflection注入到用户agent上图是对应的流程图 generate生成节点reflection生成节点边的条件前面的generateCount迭代累计超过最大迭代stop后面的检查生成的质量使用打分给出评价决定是下一轮生成还是stop。​​​​​​​ReActReActReasoning Acting是一个“思考 →行动 →观察 →再思考”的闭环流程。它让大语言模型LLM不再是只靠内部知识“空想”而是能在需要时调用外部工具Tool获取信息再基于这些新信息进行下一步推理直到最终完成任务。saa实现了react示例用ReactAgent实现带天气查询工具回答天气相关的问题如查询天气并推荐活动下面以saa graph包的react示例分析上图ReactAgent生成的图这是简单的ReAct1 reasoning 推理节点按用户请求生成内容2 action节点没有设置动作toolCallAction是CommandAction放到边3.边执行toolCallAction返回结果决定走向下面看一下构建ReAct图上图 构建ReAct图的代码上图 ReAct自动配置AgentActionBuilder创建一套调用模型action和工具调用action​​​​​​​plan and executePlan-and-Execute规划与执行 是一种专为解决复杂、多步骤任务而设计的 AI Agent 架构范式其核心思想是将“思考”与“行动”解耦先由规划器制定全局路线图再由执行器按步骤逐一落实从而避免传统 ReAct 模式在长任务中容易出现的逻辑跑偏、无限循环和上下文爆炸等问题。下面以示例分析Plan and Execute上图Plan and Execute图planner (规划节点): 流程的第一步负责根据输入制定执行计划通常是将大任务拆解为子任务列表。executor (执行节点): 负责执行计划中的具体步骤或子任务。check state (状态检查): 条件判断节点这是一个决策点用于评估当前任务的执行进度。finalizer (终结节点): 任务全部完成或需要输出最终结果时该节点负责整理并生成最终回复上图 Plan and Execute图的构建代码代码从saa拷过来稍作修改即可执行saa和lg4j图框架相似度很高这里也展示另一种构建方式没有使用agent builder框架直接手搓适合action有定制逻辑通常是model调用消息的修改当然也可以通过继承AgentActionBuilder和call model action和call tool action实现其他多agent也可使用图映射和执行放到agent篇 II 多agent分析