langgraph workflow,节点、边参数详解

TwoAdmin 2025-10-14 91 10/14

具体对应关系

python
# 1. 首先注册节点(定义节点)
workflow.add_node("generate_chat_node", execute_chat_node)
#                  ↑ 这里定义的节点名称

# 2. 然后为这个节点添加边(定义节点的出口)
workflow.add_edge("generate_chat_node", END)
#                  ↑ 这里引用同一个节点名称

完整示例

python
from langgraph.graph import StateGraph, END

# 创建图
workflow = StateGraph(...)

# 1. 定义节点函数
async def execute_chat_node(state):
    """聊天节点的具体实现"""
    print("执行聊天节点...")
    # 处理逻辑...
    state["response"] = "聊天回复内容"
    return state

# 2. 注册节点:给节点一个名称,关联到具体函数
workflow.add_node("generate_chat_node", execute_chat_node)
#                  ↑ 节点注册名称           ↑ 实际执行的函数

# 3. 添加条件边(节点间的路由)
workflow.add_conditional_edges(
    "classifier",  # 从classifier节点出发
    self.decide_next_node,  # 根据这个函数的返回值决定去哪
    {
        "generate_chat_node": "generate_chat_node"  
        # ↑决策返回值           ↑目标节点名称
        #条件边中的 "generate_chat_node" 对应的是 add_node 中的节点名称
        # 如果decide_next_node返回"generate_chat_node"
        # 就跳转到名为"generate_chat_node"的节点
    }
)

# 4. 为节点添加边(定义节点的出口)
workflow.add_edge("generate_chat_node", END)
#                  ↑ 节点名称            ↑ 终点
# 表示:当generate_chat_node节点执行完后,工作流结束

执行流程图示

text
开始
  ↓
[classifier节点]  # 分析用户输入
  ↓
    ↓(根据decide_next_node的返回值)
    ├── 返回"public_sentiment_node" → [舆情节点] → END
    ├── 返回"hotline_12345_node" → [12345节点] → END
    ├── 返回"enterprise_risk_node" → [企业风险节点] → END
    ├── 返回"cross_analysis_node" → [交叉分析节点] → END
    └── 返回"generate_chat_node" → [聊天节点] → END
                                           ↑
                                    workflow.add_edge("generate_chat_node", END)

多个节点的边设置示例

python
# 通常每个业务节点都会有自己的结束边
workflow.add_edge("public_sentiment_node", END)      # 舆情节点执行完 → 结束
workflow.add_edge("hotline_12345_node", END)         # 12345节点执行完 → 结束
workflow.add_edge("enterprise_risk_node", END)       # 企业风险节点执行完 → 结束
workflow.add_edge("cross_analysis_node", END)        # 交叉分析节点执行完 → 结束
workflow.add_edge("generate_chat_node", END)         # 聊天节点执行完 → 结束

更复杂的边设置

除了直接到 END,节点还可以连接到其他节点:

python
# 链式调用
workflow.add_edge("generate_chat_node", "review_node")  # 聊天→审核
workflow.add_edge("review_node", "format_node")         # 审核→格式化
workflow.add_edge("format_node", END)                   # 格式化→结束

# 条件分支
workflow.add_conditional_edges(
    "generate_chat_node",  # 从聊天节点出发
    decide_if_needs_review,  # 决定是否需要审核
    {
        "needs_review": "review_node",  # 需要审核 → 审核节点
        "direct_output": END            # 直接输出 → 结束
    }
)

总结

workflow.add_edge("generate_chat_node", END) 中的 "generate_chat_node" 是指:

  1. workflow.add_node("generate_chat_node", ...) 中注册的节点名称

  2. workflow.add_conditional_edges() 中可能作为目标节点的名称

  3. 工作流中一个具体的处理单元

这条语句的意思是:当名为 "generate_chat_node" 的节点执行完毕后,工作流直接结束(跳转到 END)。

这是一种单出口设计,每个业务节点处理完后工作流就结束。也可以设计为多节点链式处理,根据业务需求灵活设置边的关系。

- THE END -
Tag:

TwoAdmin

1月30日15:02

最后修改:2026年1月30日
0

非特殊说明,本博所有文章均为博主原创。