一.什么是langgraph
langgraph 是 LangChain 生态中用于构建状态 ful、多步骤、分支化 AI 工作流的图结构引擎,核心是通过 “节点” 和 “边” 的组合,实现复杂任务的自动化编排,比如智能体(Agent)的决策流程、多工具协同、RAG 检索链等场景。
二.核心概念
| 概念 | 作用 |
|---|---|
| 节点(Node) | 工作流的执行单元,可是函数、LLM 调用、工具调用等,输入 / 输出为 “状态(State)”。 |
| 边(Edge) | 节点间的流转规则,支持无条件跳转或条件分支(如 if-else 逻辑)。 |
| 状态(State) | 全局共享的数据存储(字典或自定义对象),存储任务输入、中间结果、节点输出等。 |
| 图(Graph) | 由节点和边组成的完整工作流,支持循环、并行、分支等复杂逻辑。 |
三.核心特性
- 图结构编排:用节点拆分任务,用边定义流程,支持灵活的分支(条件判断)、循环(重复执行)、并行(多节点同时运行)。
- 状态管理:全局状态贯穿整个工作流,节点可读取 / 修改状态,无需手动传递参数。
- 兼容性强:无缝集成 LangChain 的 LLM、工具、RAG 组件,也支持自定义函数作为节点。
- 可视化调试:可导出工作流为 Mermaid 图,直观查看节点关系和执行路径。
四.使用尝试
1.构建基础python工程,安装
pip install langgraph
2.引入demo依赖包
import sys
import io
# 设置标准输出编码为UTF-8,解决Windows中文乱码问题
if sys.platform == 'win32':
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
from IPython.display import Image, display
from langgraph.constants import START, END
from langgraph.graph import StateGraph
from langgraph.graph.state import CompiledStateGraph
from typing_extensions import TypedDict
import threading
import time
from apscheduler.schedulers.blocking import BlockingScheduler
3.定义状态类(节点之间传递信息使用)
# 1. 定义状态
class EventState(TypedDict):
count_status: int #累计计数状态
is_end: bool # 是否结束
4.定义节点函数
def first_node(state: EventState) -> EventState:
state["count_status"] += 1
print("当前计数状态:", state["count_status"])
if state["count_status"] >= 100:
state["is_end"] = True
return state
def second_node(state: EventState) -> EventState:
state["count_status"] += 2
print("当前计数状态:", state["count_status"])
if state["count_status"] >= 100:
state["is_end"] = True
return state
def third_node(state: EventState) -> EventState:
state["count_status"] += 3
print("当前计数状态:", state["count_status"])
if state["count_status"] >= 100:
state["is_end"] = True
return state
5.定义判断函数(用作图的判断分支)
def should_continue(state):
# state 是当前工作流的状态(字典或自定义对象)
if state["is_end"]:
return "finish" # 如果结束,返回finish
else:
return "continue"
6.定义图
# 创建事件流
graph = StateGraph(EventState)
graph.add_node("first_node", first_node)
graph.add_node("second_node", second_node)
graph.add_node("third_node", third_node)
graph.add_edge(START, "first_node")
graph.add_conditional_edges(
"first_node",
should_continue, # 判断函数
{
"continue": "second_node",
"finish": END,
})
graph.add_conditional_edges(
"second_node",
should_continue, # 判断函数
{
"continue": "third_node",
"finish": END,
})
graph.add_conditional_edges(
"third_node",
should_continue, # 判断函数
{
"continue": "first_node",
"finish": END,
})
7.图的运行结构如下

8.运行
print("开始执行事件流")
# 初始化状态
state = {"count_status": 0, "is_end": False}
graph = graph.compile()
graph.invoke(state, config={"recursion_limit": 200})
9.运行结果如下:


五.结论
大家发现我们通过langgraph可以非常方便地创建智能体工作流,相对dify等工具更加智能化,动态化。
1285

被折叠的 条评论
为什么被折叠?



