一、今日学习目标
在 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 系统。
网硕互联帮助中心






评论前必须登录!
注册