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/
作者
Liu Zijian
发布于
2026年7月5日
更新于
2026年7月22日
许可协议