04_图的流转控制
掌握LangGraph的流程控制技巧!本节课深入讲解条件边、循环、并行执行等高级特性。学会如何根据业务逻辑设计复杂的流程分支,实现智能路由、自动重试等实用功能。通过实战案例,构建灵活可控的AI工作流。
🎯 学习目标
学完本节课,你将能够:
- 使用条件边实现动态路由
- 构建循环流程(重试、迭代优化)
- 实现并行节点提高效率
- 组合多种控制流构建复杂工作流
- 掌握流程控制的最佳实践
1. 基础:三种边类型
1.1 普通边(固定流转)
特点: 无条件执行,A→B固定连接
1 | graph.add_edge("node_a", "node_b") |
适用场景:
- 固定的处理流程
- 数据预处理 → 模型推理 → 结果后处理
示例:
1 | from langgraph.graph import StateGraph, END |
1.2 条件边(动态路由)
特点: 根据状态决定下一步,A→B或C或D
1 | def router(state: State) -> str: |
适用场景:
- 意图识别后的路由
- 根据结果判断是否重试
- 多分支业务逻辑
1.3 入口和出口
1 | # 设置入口:从哪个节点开始 |
2. 条件边详解
2.1 基本用法
路由函数的要求:
- 接收state作为参数
- 返回字符串(节点名称)或END
- 返回值必须在映射字典的key中
1 | def my_router(state: State) -> str: |
2.2 实战:智能客服路由
创建 01_customer_service_router.py:
1 | """ |
运行效果:
1 | ================================================== |
3. 循环流程
3.1 实现循环的方法
方式1:节点指向自己
1 | graph.add_edge("retry_node", "retry_node") # 无限循环,慎用! |
方式2:条件循环
1 | def should_retry(state: State) -> str: |
3.2 实战:带重试的任务处理
创建 02_retry_mechanism.py:
1 | """ |
运行效果(随机):
1 | ================================================== |
4. 并行执行
4.1 为什么需要并行?
场景: 查询多个数据源
1 | 串行(慢): |
4.2 LangGraph中的并行
方法: 使用 add_edge 让多个节点指向同一个汇总节点
1 | # 三个数据源节点并行执行 |
注意: LangGraph会等待所有前置节点完成后,才执行汇总节点。
4.3 实战:并行数据查询
创建 03_parallel_fetch.py:
1 | """ |
5. 复杂流程组合
5.1 实战:内容审核系统
需求:
- 内容输入
- 并行执行:敏感词检测 + AI安全审核
- 汇总审核结果
- 根据结果决定:通过/人工复审/拒绝
创建 04_content_moderation.py:
1 | """ |
6. 流程控制最佳实践
6.1 原则1:保持流程简单
❌ 过度复杂:
1 | A → B → C → D |
✅ 清晰简洁:
1 | A → B → C → END |
6.2 原则2:明确的退出条件
1 | def should_continue(state: State) -> str: |
6.3 原则3:限制循环次数
1 | # ✅ 总是设置最大循环次数 |
6.4 原则4:并行节点独立
1 | # ❌ 错误:并行节点间有依赖 |
6.5 原则5:路由函数要健壮
1 | # ❌ 可能返回未定义的值 |
7. 小结
核心要点
✅ 三种边类型:
- 普通边:固定流转
- 条件边:动态路由
- 入口/出口:开始和结束
✅ 条件边: 根据状态动态决定下一步
1 | graph.add_conditional_edges(source, router_func, mapping) |
✅ 循环: 通过条件边让流程回到之前的节点
- 必须有退出条件
- 限制最大循环次数
✅ 并行: 多个节点同时执行,提高效率
- 并行节点应该互相独立
- LangGraph会等待所有节点完成
✅ 最佳实践:
- 保持流程简单
- 明确的退出条件
- 限制循环次数
- 并行节点独立
- 路由函数健壮
📚 下一步
现在你已经掌握了复杂的流程控制!但AI应用往往需要调用外部工具和API,比如查询数据库、调用第三方服务等。
下一课: Lesson 05: 工具调用和外部集成
我们将学习:
- 什么是工具调用(Function Calling)
- 如何定义和注册工具
- LLM如何智能选择工具
- 实战:构建能查天气、计算、搜索的AI助手
📖 参考资料
- LangGraph条件边文档
- 流程控制最佳实践