Skip to content

Commit 0102450

Browse files
mock a mermaid graph
Change-Id: I947ffc6faa29e07ed2c2a0efa5374b162a896f27
1 parent 555d43b commit 0102450

1 file changed

Lines changed: 35 additions & 3 deletions

File tree

content/zh/docs/eino/overview/graph_or_agent.md

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,38 @@ weight: 5
2222

2323
本文详细探讨了 Agent 和 Graph 两种 AI 应用形态的区别和联系,提出“两者的最佳结合点,在于将 Graph 封装为 Agent 的 Tool(工具)”,并为 [Eino](https://github.com/cloudwego/eino) 开发者给出建议的使用姿势。
2424

25+
### 完整的用户动线
26+
```mermaid
27+
sequenceDiagram
28+
participant Client
29+
participant Server
30+
participant SessionStore
31+
participant CheckpointStore
32+
33+
note over Client, Server: 场景1: 首次运行(Run)
34+
Client->>Server: 发送Run请求(初始Input,现有的 SessionID)
35+
Server->>SessionStore: Runner.Run(), 用 SessionID 做 CheckpointID,Load Session
36+
SessionStore->>Server: 返回会话历史(User/Assistant/Tool消息列表)
37+
Server->>Server: BeforeAgent阶段:将会话历史注入 runSession
38+
Server->>Server: 执行Agent处理,生成AgentEvent序列
39+
Server->>SessionStore: ProcessEvents阶段(有中断):Append会话历史(新消息),SaveCheckpoint
40+
Server->>Client: 返回结果
41+
42+
note over Client, Server: 场景2: 中断后恢复(Resume)
43+
Client->>Server: 发送Resume请求(InterruptID->ResumeData + SessionID)
44+
Server->>CheckpointStore: Runner.Resume(),用 SessionID 做 CheckpointID,Load Checkpoint
45+
CheckpointStore->>Server: 返回检查点(本轮Input/上下文/中断时状态)
46+
Server->>Server: BeforeAgent阶段:恢复检查点状态(跳过加载Session)
47+
Server->>Server: 继续执行Agent处理,生成后续AgentEvent
48+
alt 存在中断(需再次暂停)
49+
Server->>CheckpointStore: Save Checkpoint(更新当前轮次快照)
50+
Server->>SessionStore: Save Session(追加本轮新生成的消息)
51+
else 无中断(本轮完成)
52+
Server->>SessionStore: Save Session(追加本轮新生成的消息)
53+
end
54+
Server->>Client: 返回结果
55+
```
56+
2557
## 核心概念辨析
2658

2759
### 基础定义
@@ -112,7 +144,7 @@ Eino 框架的目标是同时支持 Graph 和 Agent 两种场景。我们的演
112144

113145
因此,向 Graph 中加入 Agent 节点,意味着将一个需要多轮交互、长时记忆和异步输出的 Agent 强行嵌入到一个确定性的、同步执行的 Graph 节点中,这通常是不优雅的。Agent 的启动可以被 Graph 编排,但其内部的复杂交互不应阻塞主流程。
114146

115-
实际上,在 Graph 中我们需要的并非一个完整的 Agent 节点,而是一个功能更纯粹的**“LLM 节点”**。该节点负责在确定性流程中,接收特定输入,完成意图识别或内容生成,并产出结构化的输出,从而为流程注入智能。
147+
实际上,在 Graph 中我们需要的并非一个完整的 Agent 节点,而是一个功能更纯粹的“LLM 节点”。该节点负责在确定性流程中,接收特定输入,完成意图识别或内容生成,并产出结构化的输出,从而为流程注入智能。
116148

117149
同时,如果简单的“LLM”节点确实不满足需求,确实需要“Agent”,更合适的做法也许不是把 Agent 塞到静态预定义的 Graph 中,而是给“Agent”增加前置处理、后置处理等各种“插件”,把具体的业务逻辑嵌入到 Agent 内部。
118150

@@ -126,7 +158,7 @@ Eino 框架的目标是同时支持 Graph 和 Agent 两种场景。我们的演
126158
<tr><td>特征维度</td><td>Graph</td><td>Tool</td></tr>
127159
<tr><td>输入</td><td><strong>结构化的数据</strong></td><td><strong>结构化的数据</strong></td></tr>
128160
<tr><td>交付物</td><td><strong>聚焦最终结果</strong></td><td><strong>聚焦最终结果</strong></td></tr>
129-
<tr><td>状态管理</td><td><strong>单次执行、stateless</strong></td><td><strong>单次执行、stateless</strong></td></tr>
161+
<tr><td>状态管理</td><td><strong>单次执行、stateless</strong></td><td><strong>单次执行、stateless</strong></td></tr>
130162
<tr><td>运行模式</td><td><strong>整体是同步</strong></td><td> <strong>LLM 的视角 Tool 是同步的</strong></td></tr>
131163
</table>
132164

@@ -145,7 +177,7 @@ Agent 与 Graph 并非路线之争,而是能力互补的两种 AI 应用范式
145177

146178
两者的最佳结合点,在于将 Graph 封装为 Agent 的 Tool。
147179

148-
通过这种方式,我们可以充分利用 Graph 在流程编排和生态集成上的强大能力,来扩展 Agent 的 Tool 列表一个复杂的 Graph 应用(如一套完整的 RAG 流程、一个数据分析管道)可以被简化成 Agent 的一个原子能力,被其在合适的时机动态调用。
180+
通过这种方式,我们可以充分利用 Graph 在流程编排和生态集成上的强大能力,来扩展 Agent 的 Tool 列表。一个复杂的 Graph 应用(如一套完整的 RAG 流程、一个数据分析管道)可以被简化成 Agent 的一个原子能力,被其在合适的时机动态调用。
149181

150182
对于 Eino 的开发者而言,这意味着:
151183

0 commit comments

Comments
 (0)