LangGraph

活跃
GitHub Python MIT

简介

LangGraph 是一个用于构建可控、可调试、长期运行的有状态 Agent 框架,以图的方式描述 Agent 的状态与控制流。

核心特性

  • 图模型编排 — 用节点、边、条件分支描述 Agent 流程,比线性 Chain 更灵活
  • 持久化与时间旅行 — 内置 checkpointer 支持断点恢复与状态回放
  • 人机协同 — 内置 interrupt 与 Human-in-the-loop 节点,可在关键步骤暂停等待人工确认
  • 并行与子图 — 支持并行分支、Send 与子图嵌套,便于复杂工作流
  • LangSmith 集成 — 与 LangSmith 深度集成,便于追踪、调试与评估
  • 多语言 SDK — 提供 Python 与 TypeScript 双版本 SDK

适用场景

💡 搭建需要审批、回滚的人工监督 Agent 工作流
💡 构建可中断、可恢复的长时间运行 Agent 任务
💡 用图模型描述带循环与条件分支的研究型 Agent
💡 与 LangChain 工具链组合实现生产级 RAG + 工具 Agent
💡 把现有 Chain 改写为带状态与可观测性的图

快速开始

# 安装依赖
pip install langgraph langchain-openai

# 定义一个带工具的图
from langgraph.graph import StateGraph, MessagesState, START, END
from langgraph.prebuilt import ToolNode
from langchain_openai import ChatOpenAI

def call_model(state: MessagesState):
    model = ChatOpenAI(model='gpt-4o').bind_tools([search])
    return {'messages': [model.invoke(state['messages'])]}

def should_continue(state):
    return 'tools' if state['messages'][-1].tool_calls else END

graph = StateGraph(MessagesState)
graph.add_node('agent', call_model)
graph.add_node('tools', ToolNode([search]))
graph.add_edge(START, 'agent')
graph.add_conditional_edges('agent', should_continue)
graph.add_edge('tools', 'agent')
app = graph.compile()
app.invoke({'messages': [('user', '什么是 LangGraph?')]})

相关项目

相关文章