LangGraph定义边(Edge)
本文最后更新于 2026年7月22日
更新中
1.概述
langgraph的边,定义了逻辑如何路由以及流程怎样结束,是智能体不同节点彼此通信的重要组成部分。langgraph有几种类型的边:
- 普通边(Normal Edges) 直接从一个节点进入下一个节点
- 条件边(Conditional Edges) 调用一个函数决定去往哪些节点
- 入口点(Entry Point) 用户输入到达时首先调用的节点
- 条件入口点(Conditional Entry Point) 调用一个函数决定用户输入到达时首先调用哪些节点
一个节点有多个出边,如果一个节点有多个出边,那么所有目标节点都作为下一步并行执行。
2.普通边
通过add_edge()相连,就是最简单的条件边
from typing import TypedDict
from langgraph.graph import StateGraph
from langgraph.constants import START
from langgraph.constants import END
# 状态
class DemoState(TypedDict):
name: str
# 节点
def node1(state: DemoState) -> dict:
return state
# 节点
def node2(state: DemoState) -> dict:
return state
def node3(state: DemoState) -> dict:
return state
def node4(state: DemoState) -> dict:
return state
if __name__ == "__main__":
graph = StateGraph(DemoState)
graph.add_node('node1', node1)
graph.add_node('node2', node2)
graph.add_node('node3', node3)
graph.add_node('node4', node4)
graph.add_edge(START, 'node1')
graph.add_edge('node1', 'node2')
graph.add_edge('node2', 'node3')
graph.add_edge('node3', 'node4')
graph.add_edge('node4', END)
app = graph.compile()
app.get_graph().print_ascii()+-----------+
| __start__ |
+-----------+
*
*
*
+-------+
| node1 |
+-------+
*
*
*
+-------+
| node2 |
+-------+
*
*
*
+-------+
| node3 |
+-------+
*
*
*
+-------+
| node4 |
+-------+
*
*
*
+---------+
| __end__ |
+---------+ 3.条件边
在实际场景中,工作流下个节点可能不是固定的,要根据当前执行状态去确定下一个路由的节点,条件边就可以动态的控制执行的流程,langgraph可以使用路由函数来选择具体要执行的节点。
例:add_conditional_edges()就是添加条件边,使用add_conditional_edges(当前节点,决策函数,路由条件映射)方式调用,将check节点跳到下个节点的决策权交给is_even()方法,根据方法返回值决定跳到even节点还是odd节点
from typing import TypedDict
from langgraph.graph import StateGraph
from langgraph.constants import START
from langgraph.constants import END
# 状态
class DemoState(TypedDict):
num: int
# 节点
def check(state: DemoState) -> dict:
return state
def is_even(state: DemoState):
return state['num'] % 2 == 0
# 节点
def even(state: DemoState) -> dict:
print('even')
return state
def odd(state: DemoState) -> dict:
print('odd')
return state
if __name__ == "__main__":
graph = StateGraph(DemoState)
graph.add_node('check', check)
graph.add_node('even', even)
graph.add_node('odd', odd)
graph.add_edge(START, 'check')
graph.add_conditional_edges('check', is_even ,{
True: 'even',
False: 'odd'
}
)
graph.add_edge('odd', END)
graph.add_edge('even', END)
app = graph.compile()
app.get_graph().print_ascii() +-----------+
| __start__ |
+-----------+
*
*
*
+-------+
| check |
+-------+
.. ..
. .
. .
+------+ +-----+
| even | | odd |
+------+ +-----+
** **
* *
* *
+---------+
| __end__ |
+---------+ 传值调用
res = app.invoke(DemoState(num=121))
print(res)
res = app.invoke(DemoState(num=12))
print(res)odd
{'num': 121}
even
{'num': 12}4.条件循环
5.条件入口点
"如果文章对您有帮助,可以请作者喝杯咖啡吗?"
微信支付
支付宝
LangGraph定义边(Edge)
https://blog.liuzijian.com/post/2026/07/05/langgraph-edge/