云计算百科
云计算领域专业知识百科平台

AI Agent学习 Day14:LangGraph进阶 —— 条件分支、Tool Node与Memory持久化

一、今日学习目标

在 Day13 中,我们学习了 LangGraph 基础:

  • State(状态)

  • Node(节点)

  • Edge(边)

  • Graph(工作流)

实现了固定流程:

用户输入

Search Node

Answer Node

返回结果

但是实际项目中的 Agent 不会永远按照固定流程执行。

例如:

用户输入:

查询漏洞信息

可能需要:

用户

分析问题

查询知识库

生成报告

用户输入:

计算风险评分

可能需要:

用户

分析问题

调用计算工具

返回结果

因此今天继续学习 LangGraph 进阶能力:

  • Conditional Edge(条件分支)

  • Tool Node(工具节点)

  • Loop Agent(循环Agent)

  • Memory持久化

目标:

让 Agent 从固定流程升级为能够根据任务选择执行路径的智能工作流。


二、Conditional Edge(条件边)

1. 为什么需要条件边?

Day13中的流程:

Search Node

Answer Node

属于固定流程。

但是实际 Agent 需要根据用户输入判断下一步。

例如:

问题1:

什么是RAG?

执行:

查询知识库

问题2:

计算1+2

执行:

调用计算工具

所以需要:

用户问题

判断节点

选择不同路径


三、什么是 Conditional Edge?

普通 Edge:

A

B

表示:

A执行完成后,一定进入B。

Conditional Edge:

Router

/ \\

Tool Search

表示:

根据条件选择不同节点。


四、Conditional Edge执行流程

完整流程:

用户输入

Router Node

判断任务类型

┌──────────┐

Tool Node

或者

Search Node

Answer Node

其中:

Router负责:

判断应该走哪条路线。


五、项目结构

Day14项目结构:

day14

├── state.py

├── nodes.py

├── router.py

├── tools.py

├── graph.py

└── agent.py

模块作用:

文件作用
state.py 定义Agent状态
router.py 判断执行路线
nodes.py 定义工作节点
tools.py 定义工具
graph.py 创建工作流
agent.py 启动Agent

六、State状态设计

state.py

代码:

from typing import TypedDict

class AgentState(TypedDict):

question:str

result:str

route:str

相比 Day13:

新增:

route

作用:

保存当前 Agent 应该执行的路径。

例如:

route="tool"

表示:

进入工具节点。


七、Router节点

router.py

代码:

from state import AgentState

def router_node(state:AgentState):

question = state["question"]

if "计算" in question:

state["route"]="tool"

else:

state["route"]="search"

return state

作用:

分析用户问题。

例如:

输入:

计算1+2

输出:

route="tool"

输入:

什么是RAG?

输出:

route="search"


八、Tool Node

在之前学习中:

Tool只是普通函数。

例如:

calculator()

现在:

将工具加入 LangGraph 工作流。

变成:

Tool Node


tools.py

代码:

def calculator(expression):

result = eval(expression)

return result


Tool节点:

def tool_node(state):

result = calculator(
"1+2"
)

state["result"]=result

return state

现在:

工具成为 Agent 流程中的一个节点。


九、创建条件工作流

graph.py

核心代码:

workflow.add_conditional_edges(

"router",

lambda state:state["route"],

{

"tool":"tool",

"search":"search"

}

)

作用:

根据:

state["route"]

决定下一步。

如果:

route="tool"

执行:

Tool Node

如果:

route="search"

执行:

Search Node


十、Loop Agent(循环Agent)

真实 Agent 很少一次执行完成。

例如:

代码生成 Agent:

第一次:

生成代码

测试:

发现错误

修改:

重新生成

再次测试。

这就是循环 Agent。


十一、循环Agent流程

普通流程:

A

B

C

循环流程:

生成

检查

是否完成?

|

├── 是 →结束

|

└── 否 →重新执行


十二、Memory持久化

之前 State:

只存在当前运行。

例如:

程序关闭:

用户信息消失

但是实际 Agent:

需要长期保存信息。

例如:

用户学习方向:

{
"interest":"AI Agent",
"level":"beginner"
}

下次启动:

Agent仍然知道。


十三、简单Memory实现

创建:

memory.json

内容:

{
"interest":"AI Agent",
"level":"beginner"
}

读取:

import json

def load_memory():

with open(

"memory.json",

"r",

encoding="utf-8"

) as f:

return json.load(f)


十四、Day14 Agent架构

完成后:

用户

Router Node

/ \\

Tool Node Search Node

\\ /

Answer Node

Memory保存

相比 Day13:

增加了:

  • 判断能力

  • 工具执行

  • 状态保存

  • 动态流程


十五、今日核心知识总结

1. Conditional Edge

作用:

根据状态选择不同执行路径。

解决:

Agent决策问题。


2. Tool Node

作用:

让工具成为工作流的一部分。

实现:

Agent

调用工具

继续执行


3. Loop Agent

作用:

让 Agent 可以:

执行

检查

调整

再次执行。


4. Memory持久化

作用:

让 Agent 拥有长期记忆。


十六、Day14完成标准

完成:

✅ 理解 Conditional Edge

✅ 实现 Router Node

✅ 理解 Tool Node

✅ 理解循环 Agent

✅ 实现简单 Memory 保存

最终实现:

用户输入

Router判断

选择节点

执行任务

保存结果


总结

Day14学习的是 LangGraph 从“固定流程”到“智能流程”的升级。

通过:

  • Conditional Edge

  • Tool Node

  • Loop Agent

  • Memory持久化

Agent 已经具备:

判断

选择

执行

保存

下一阶段:

Day15:Multi-Agent多智能体系统

学习:

  • Supervisor Agent

  • Worker Agent

  • Agent之间通信

  • 多角色协作架构

构建更加接近企业应用的 Agent 系统。

赞(0)
未经允许不得转载:网硕互联帮助中心 » AI Agent学习 Day14:LangGraph进阶 —— 条件分支、Tool Node与Memory持久化
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!