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 系统。

相关推荐
乱世刀疤1 小时前
深度 | 美国AI开始攻击真人
人工智能
qq_25294131681 小时前
列车车轮缺陷智能检测数据集:800张图像、4大类别,助力铁路安全运维
运维·人工智能·安全·yolo·目标检测·计算机视觉·视觉检测
windliang2 小时前
Claude Code 源码分析(十一):一段会话怎样保存、恢复与续写
前端·javascript·人工智能
掘金一周2 小时前
掘友们,你们现在下班了都玩啥游戏?| 沸点周刊 8.13
前端·人工智能·后端
老木避暑研究所2 小时前
基于OpenCV的避暑房采光分析与朝向优化——重庆云澜栖不同楼层日照时长实测
人工智能·opencv·计算机视觉
leoZ2312 小时前
Vue3 还原一个企业级后台-06-主布局设计
人工智能·opencv·机器学习·计算机视觉·数据挖掘·语音识别·caffe
美团技术团队2 小时前
KDD'26 美团学术论文精选及KDD Cup'26 DataAgents赛道冠军思路解读
人工智能
red_redemption2 小时前
自由学习记录(214)
学习
程序员cxuan2 小时前
Anthropic:session 之间可以相互通信了
人工智能·后端·程序员