控制流与节点执行
静态分支:
并行分支(边):多个节点同时进行
- 如果两个节点写入同一个状态字段,则该字段通常需要配置合适的
Reducer,否则可能出现状态更新冲突,抛出InvalidUpdateError异常
builder.add_edge(START, "node_a")
builder.add_edge(START, "node_b")
条件边:
def add_conditional_edges(
self,
source: str,
path: Callable[..., Hashable | Sequence[Hashable]]
| Callable[..., Awaitable[Hashable | Sequence[Hashable]]]
| Runnable[Any, Hashable | Sequence[Hashable]],
path_map: dict[Hashable, str] | list[str] | None = None,
) -> Self:
不考虑 self,核心参数有三个:
source:条件分支的起始节点;path:路由规则,是一个可执行对象,通常是函数path_map:路由规则的返回值到真实节点名之间的映射关系。
其中,path 的返回值表示跳转的目标节点,可以是:
- 字符串或特殊对象
END表示的单个目标; - 字符串或特殊对象
END表示的多个目标组成的序列;
不加path_map的话path就直接用图里的节点名称
使用:
builder.add_conditional_edges(
START,
router,
path_map={ "node_a": "node_a", "node_b": "node_b", "node_c": "node_c", }
再添加节点时在参数里写上defer=True 适合“最后执行”的收尾节点,用于日志记录这些
动态分支(运行时决定执行目标):
条件分支command:
Command 是 LangGraph 中用于控制图执行的多功能原语,它的构造器可以接受四个参数,并记录在同名类属性中:
update:更新图状态,效果等同于节点直接返回状态更新字典;goto:指定节点执行完成后的跳转目标,可用于运行时条件分支。当需要同时更新状态并控制跳转时,比单独使用条件边更合适;graph:存在子图时,用于指定跳转发生在哪一层图中,例如从子图跳转到父图;resume:用于恢复被中断的图执行,常见于human-in-the-loop场景。
例如,一个节点既要更新状态,又要根据当前状态决定下一步跳转目标,就可以返回:
return Command(
update={"foo": "bar"},
goto="next_node"
)
动态分支有两类典型应用场景:
| 场景 | 典型 API | 说明 |
|---|---|---|
| 动态扇出 | Send + add_conditional_edges() |
运行时创建多个任务,常用于 Map-Reduce |
| 动态跳转 | Command(goto=...) |
节点内部根据状态决定跳转目标 |
二者的区别如下:
Send更强调“一个节点动态分发多个任务实例”;Command(goto=...)更强调“当前节点执行完后动态跳转到哪个节点”。
Send解决的是:运行时要启动多少个任务实例。Command(goto=...)解决的是:当前节点执行完后要去哪里。
不过,无论是 Send 还是 Command(goto=...),目标节点通常都需要提前注册到图中。所谓“动态”,主要是运行时动态决定任务数量、任务输入或跳转路径,而不是运行时临时创建新的节点。
多分支汇入:
当多个上游分支同时汇入同一个下游节点时,根据触发条件的不同,可以分成两种情况:
- “与”触发:上游所有分支全部到达才可触发下游节点
- “或”触发:任意一个分支到达,都可以触发下游节点
与(同时触发):
builder.add_edge(["node_c", "node_d"], "node_e")
或(单独触发):
builder.add_edge("node_c", "node_e")
builder.add_edge("node_d", "node_e")
循环结构:

节点容错:
LangGraph 提供了三种异常处理机制
retries:重试机制。节点执行失败时,根据重试策略自动重新执行。Timeouts:超时控制。限制单次节点执行的最大等待时间。Error Handling:错误处理。重试次数耗尽后,执行特定的异常处理逻辑。
builder.add_node( "node_a", node_a,
retry_policy=RetryPolicy( max_attempts=3, jitter=False ) )
构建节点时添加重试策略
超时:

浙公网安备 33010602011771号