Spring AI Graph

Spring AI Alibaba Graph

Graph = 状态(State) + 节点(Node) + 边(Edge)

这是 Graph 的三个核心要素,也是所有 AI Workflow、Agent Flow、LangGraph 的基础。


一、Graph 是什么?

可以把 Graph 理解成:

Graph = 一个能够根据状态不断执行节点,并决定下一步去哪的运行引擎。

不像传统流程:

Text
1
A -> B -> C -> D

Graph 更像:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌───────┐
│ Start │
└───┬───┘
│
┌───▼────┐
│ Node A │
└───┬────┘
yes/ │ \no
▼ │ ▼
Node B │ Node C
│ │ │
└───▼──────┘
Node D
│
End

最大的特点:

  • 可以循环

  • 可以分支

  • 可以条件判断

  • 可以动态决定下一步

因此特别适合 AI。


Graph 三要素

整个 Graph 只有三个东西:

Text
1
2
3
State
Node
Edge

它们之间关系:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Graph

+---------------------+

State(共享数据)

▲
│
┌────────┴────────┐

Node 1 Node 2

▲ ▲
│ │

Edge(决定路线)

二、第一要素:State(状态)

这是最重要的。

很多人误认为:

Graph 是 Node。

其实:

Graph 最核心的是 State。

因为:

所有 Node 都不能直接通信。

只能:

Text
1
2
3
4
5
Node A
│
修改 State
│
Node B

例如:

用户问:

Text
1
帮我分析库存

State 初始:

Text
1
2
3
4
5
6
7
8
9
10
11
class InventoryState {

String userQuestion;

String sql;

List<Product> products;

String aiAnswer;

}

开始:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
State

question:
"帮我分析库存"

sql:
null

products:
null

answer:
null

Node1:

AI 生成 SQL:

Text
1
SELECT * FROM inventory

更新 State:

Text
1
2
3
4
5
6
7
8
9
10
11
question:
"帮我分析库存"

sql:
SELECT ...

products:
null

answer:
null

Node2:

执行 SQL:

Text
1
2
3
4
5
products=[
A
B
C
]

State:

Text
1
2
3
4
5
6
7
question

sql

products

answer

Node3:

AI 总结:

Text
1
库存正常

最终:

Text
1
2
answer:
库存正常

整个 Graph:

没有任何 Node 调用另一个 Node。

都是:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
Node

↓

修改 State

↓

Graph

↓

下一个 Node

所以:

State 是 Graph 的共享内存。


三、第二要素:Node(节点)

Node:

就是一个功能。

例如:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
OCR节点

SQL节点

LLM节点

RAG节点

工具调用节点

审批节点

发送MQ节点

每个 Node:

只干一件事。

例如:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Node

输入:

State

↓

处理

↓

输出:

新的 State

例如:

Text
1
2
3
4
5
6
7
8
9
10
11
12
public class SqlNode {

public InventoryState execute(InventoryState state){

state.setSql(
ai.generateSql(state.getQuestion())
);

return state;
}

}

Node:

不知道:

下一步是谁。

它只负责:

Text
1
2
3
4
5
6
7
8
9
输入

↓

处理

↓

返回 State

因此:

Node 可以无限复用。


Node 最佳实践

一个 Node:

最好只有一个职责。

例如:

错误:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Node

OCR

↓

SQL

↓

AI总结

↓

发微信

一个 Node 做四件事情。

正确:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
OCR Node

↓

SQL Node

↓

LLM Node

↓

Notify Node

四、第三要素:Edge(边)

Edge:

决定:

Graph 下一步去哪里。

例如:

Text
1
2
3
4
5
Node A

↓

Node B

这是固定 Edge。


Graph 最大特点:

Edge 可以动态。

例如:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Node

↓

库存是否为空?

↓

Yes

↓

结束

↓

No

↓

继续分析

对应:

Text
1
2
3
4
5
6
7
8
9
10
11
Node

↓

Condition Edge

↓

Node A

Node B

例如:

Text
1
2
3
4
5
6
7
8
9
if(products.isEmpty()){

goto END;

}else{

goto AI_NODE;

}

Graph 就能动态运行。


五、Conditional Edge(条件边)

这是 AI Agent 最重要的能力。

例如:

Text
1
2
3
用户:

今天北京天气?

AI:

需要工具。

路线:

Text
1
2
3
4
5
6
7
8
9
LLM

↓

Tool Node

↓

LLM

如果:

Text
1
你好

不用工具。

路线:

Text
1
2
3
4
5
LLM

↓

End

Graph:

自动决定:

Text
1
2
3
4
5
6
7
8
9
10
11
LLM

↓

Condition

↓

Tool

End

所以:

LLM 本身:

就是一个 Router。


六、循环(Loop)

Graph 最大优势:

支持循环。

例如:

Agent:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
LLM

↓

Tool

↓

LLM

↓

Tool

↓

LLM

↓

结束

为什么?

因为:

LLM:

可能第一次:

Text
1
需要查库存

第二次:

Text
1
需要查销售

第三次:

Text
1
需要查采购

直到:

Text
1
完成

Graph:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
LLM

↓

Condition

↓

Tool

↓

LLM

↓

Condition

↓

Tool

这就是 Agent。


七、Graph 的运行流程

整个执行过程:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
State 初始化

↓

Start Node

↓

Edge

↓

Node

↓

修改 State

↓

Edge 判断

↓

Node

↓

修改 State

↓

Edge 判断

↓

End

Graph 本身:

几乎不做业务。

Graph:

只负责:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
当前节点是谁?

↓

执行 Node

↓

更新 State

↓

根据 Edge

↓

决定下一节点

八、Spring AI Alibaba 中的 Graph

Spring AI Alibaba Graph 基本对应关系如下:


九、以 ERP + AI 库存分析项目为例

一个库存分析 Agent 的 Graph 可以设计成:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
用户问题
│
▼
Start(初始化 State)
│
▼
Node1:解析用户意图
│
▼
Edge:是否需要查询数据库?
├──────────────┐
│ 是 │ 否
▼ ▼
Node2:生成 SQL Node5:直接调用 LLM
│
▼
Node3:执行 SQL
│
▼
Node4:LLM 分析库存数据
│
▼
End(返回分析结果)

其中:

  • State:保存用户问题、生成的 SQL、查询结果、最终 AI 分析等信息。

  • Node:分别负责意图识别、SQL 生成、数据库查询、AI 总结等单一职责。

  • Edge:根据意图决定是否需要查询数据库,未来还可以扩展为调用知识库、工具或外部接口。


总结

Graph 的本质可以概括为一句话:

Graph 是一个以 State 为核心、由 Node 执行业务、通过 Edge 决定流程走向的工作流引擎。

记住这个思维模型:

Text
1
2
3
4
5
6
7
8
9
10
State(共享上下文)
▲
│
Node(处理逻辑) ──► 更新 State
│
▼
Edge(决定下一步)
│
▼
下一个 Node

掌握了 State、Node、Edge 三要素,你就理解了 Spring AI Alibaba Graph、LangGraph 以及大多数 AI Agent 工作流框架的底层设计思想。