【LangGraph】02-LangGraph条件边的使用

今天给大家分享一下LangGraph中条件边的使用,条件边是LangGraph中非常重要的概念,它允许你根据大模型返回的推理结果或上下文中的特定信息决定跳到不同的节点,或者是直接结束返回,让你可以更好的控制你的LangGraph程序的走向来完成复杂的任务。

一、直接上代码

python 复制代码
from langgraph.graph import StateGraph, MessagesState, START, END
from typing import Literal
import random

# 定义大模型调用节点(模拟)
def mock_llm(state: MessagesState):
    return {"messages": [{"role": "ai", "content": "hello world"}]}

# 定义执行路径判断逻辑
def should_continue(state: MessagesState) -> Literal["tool_node", END]:
    random_num = random.randint(1, 10)
    print(f'随机数: {random_num}')
    if random_num % 2 == 0:
        return "tool_node"
    return END

# 定义工具节点
def tool_node(state: dict):
    print('我是tool_node逻辑')

# 创建graph
graph = StateGraph(MessagesState)

# 注册节点
graph.add_node("mock_llm", mock_llm)
graph.add_node("tool_node", tool_node)
# 定义边
graph.add_edge(START, "mock_llm")
# 定义条件边
graph.add_conditional_edges("mock_llm", should_continue)
# 定义边
graph.add_edge("tool_node", "mock_llm")

# 编译
graph = graph.compile()

# 启动
result = graph.invoke({"messages": [{"role": "user", "content": "hi!"}]})

# 打印结果
print(result)

二、结果输出

随机数: 8

我是tool_node逻辑

随机数: 5

{'messages': HumanMessage(content='hi!', additional_kwargs={}, response_metadata={}, id='5649d900-33f3-4473-b336-94fbdf225338'), AIMessage(content='hello world', additional_kwargs={}, response_metadata={}, id='17dd8af6-b1ee-4310-81dc-d526d836b6cd', tool_calls=\[, invalid_tool_calls=\[\]), AIMessage(content='hello world', additional_kwargs={}, response_metadata={}, id='998a3885-6c21-4f61-8d9b-e320c4ba8a17', tool_calls=\[\], invalid_tool_calls=\[\])]}

三、说明

  1. add_conditional_edges方法可以添加一个条件边,第一参数是条件边的上一个节点,第二个参数是一个执行路径判断函数,用来判断接下来的执行路径跳到那一个节点。这里只是简单的根据随机数的奇偶来判断,实际开发中通常会根据大模型返回的推理结果来判断;
  2. tool_node是一个工具执行节点,这里只是简单的打印一句话,实际开发中会根据大模型的推理结果执行对应的工具;
  3. graph.add_edge("tool_node", "mock_llm")会将工具节点跟大模型调用节点连接,如果条件边的判断结果是执行工具节点,则执行完工具节点后跳到大模型节点,然后继续到条件边进行下一轮的判断,直到条件边返回END节点结束。

四、结语

条件边让图具有条件判断的能力,结合普通边连接到大模型节点,图就可以循环执行直到满足最终的结果后返回,条件边的存在让图能描述更加复杂的工作流程。

相关推荐
张张123y2 小时前
2026 Agent 框架怎么选?拆 3 层底层逻辑(运行循环 / 记忆 / 工具协议)+ 一张决策表
linux·ubuntu·microsoft·langgraph·mcp·crewai·agent 框架
云水初3 天前
【项目篇】基于LanGraph的自动处理客服邮件的 Agent汇总
开发语言·笔记·python·学习·fastapi·langgraph
坊钰6 天前
【LangGraph框架入门级】12. 人机交互:interrupt 中断与 Command 恢复
开发语言·数据库·python·人机交互·ai编程·langgraph
范中勤7 天前
LangGraph Checkpointer 封装(下):with 的双层上下文与 MemorySaver 为什么不用 with
python·大模型·llm·agent·langgraph
for_ever_love__8 天前
LangGraph State 设计:多节点之间怎么安全地共享数据
redis·mysql·状态模式·checkpoint·state·状态图·langgraph
for_ever_love__8 天前
LangGraph Checkpointer:持久化、断点续跑与多轮记忆
服务器·数据库·学习·持久化·langgraph·checkpointer·断点续跑
for_ever_love__8 天前
LangChain 多工具协作:一个 Agent 不够用时怎么办
人工智能·langchain·langgraph·协作·多agent·多工具·工具编排
寻道码路8 天前
AI Agent 工程化开发实战(一):Agent 开发的四个层次——积木、运行时、薄壳、套件
人工智能·langchain·大模型·ai agent·langgraph·ai工程化·deep agents
旖旎夜光8 天前
【LangGraph实战】LangGraph 学习笔记(五):信息裁剪、人机交互与时间旅行
笔记·python·学习·ai·人机交互·langgraph
范中勤8 天前
LangChain / LangGraph Memory 记忆体系技术文档(作用域判定 · 官方现版本实现 · 工程坑点)
langchain·大模型·agent·langgraph·记忆体系