Spring AI Alibaba Graph
Graph = 状态(State) + 节点(Node) + 边(Edge)
这是 Graph 的三个核心要素,也是所有 AI Workflow、Agent Flow、LangGraph 的基础。
一、Graph 是什么?
可以把 Graph 理解成:
Graph = 一个能够根据状态不断执行节点,并决定下一步去哪的运行引擎。
不像传统流程:
1 | A -> B -> C -> D |
Graph 更像:
1 | ┌───────┐ |
最大的特点:
可以循环
可以分支
可以条件判断
可以动态决定下一步
因此特别适合 AI。
Graph 三要素
整个 Graph 只有三个东西:
1 | State |
它们之间关系:
1 | Graph |
二、第一要素:State(状态)
这是最重要的。
很多人误认为:
Graph 是 Node。
其实:
Graph 最核心的是 State。
因为:
所有 Node 都不能直接通信。
只能:
1 | Node A |
例如:
用户问:
1 | 帮我分析库存 |
State 初始:
1 | class InventoryState { |
开始:
1 | State |
Node1:
AI 生成 SQL:
1 | SELECT * FROM inventory |
更新 State:
1 | question: |
Node2:
执行 SQL:
1 | products=[ |
State:
1 | question |
Node3:
AI 总结:
1 | 库存正常 |
最终:
1 | answer: |
整个 Graph:
没有任何 Node 调用另一个 Node。
都是:
1 | Node |
所以:
State 是 Graph 的共享内存。
三、第二要素:Node(节点)
Node:
就是一个功能。
例如:
1 | OCR节点 |
每个 Node:
只干一件事。
例如:
1 | Node |
例如:
1 | public class SqlNode { |
Node:
不知道:
下一步是谁。
它只负责:
1 | 输入 |
因此:
Node 可以无限复用。
Node 最佳实践
一个 Node:
最好只有一个职责。
例如:
错误:
1 | Node |
一个 Node 做四件事情。
正确:
1 | OCR Node |
四、第三要素:Edge(边)
Edge:
决定:
Graph 下一步去哪里。
例如:
1 | Node A |
这是固定 Edge。
Graph 最大特点:
Edge 可以动态。
例如:
1 | Node |
对应:
1 | Node |
例如:
1 | if(products.isEmpty()){ |
Graph 就能动态运行。
五、Conditional Edge(条件边)
这是 AI Agent 最重要的能力。
例如:
1 | 用户: |
AI:
需要工具。
路线:
1 | LLM |
如果:
1 | 你好 |
不用工具。
路线:
1 | LLM |
Graph:
自动决定:
1 | LLM |
所以:
LLM 本身:
就是一个 Router。
六、循环(Loop)
Graph 最大优势:
支持循环。
例如:
Agent:
1 | LLM |
为什么?
因为:
LLM:
可能第一次:
1 | 需要查库存 |
第二次:
1 | 需要查销售 |
第三次:
1 | 需要查采购 |
直到:
1 | 完成 |
Graph:
1 | LLM |
这就是 Agent。
七、Graph 的运行流程
整个执行过程:
1 | State 初始化 |
Graph 本身:
几乎不做业务。
Graph:
只负责:
1 | 当前节点是谁? |
八、Spring AI Alibaba 中的 Graph
Spring AI Alibaba Graph 基本对应关系如下:
九、以 ERP + AI 库存分析项目为例
一个库存分析 Agent 的 Graph 可以设计成:
1 | 用户问题 |
其中:
State:保存用户问题、生成的 SQL、查询结果、最终 AI 分析等信息。
Node:分别负责意图识别、SQL 生成、数据库查询、AI 总结等单一职责。
Edge:根据意图决定是否需要查询数据库,未来还可以扩展为调用知识库、工具或外部接口。
总结
Graph 的本质可以概括为一句话:
Graph 是一个以 State 为核心、由 Node 执行业务、通过 Edge 决定流程走向的工作流引擎。
记住这个思维模型:
1 | State(共享上下文) |
掌握了 State、Node、Edge 三要素,你就理解了 Spring AI Alibaba Graph、LangGraph 以及大多数 AI Agent 工作流框架的底层设计思想。