LangGraph #
什么是 LangGraph? #
LangGraph 是由 LangChain 团队开发的低级编排框架和运行时,专门用于构建、管理和部署长时间运行的有状态 Agent。它基于图结构来定义 Agent 的工作流程,提供了精确的控制和高度的可定制性。
文档结构 #
本指南按以下结构组织,循序渐进地帮助你掌握 LangGraph:
1. 入门基础 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| LangGraph 简介 | LangGraph 的定义、特点、历史与应用场景 | intro.md |
| 快速开始 | 5 分钟上手 LangGraph,运行第一个 Agent | quickstart.md |
| 核心概念 | StateGraph、Node、Edge 等核心概念 | core-concepts.md |
2. 核心组件 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| 状态管理 | 定义和管理 Agent 状态 | state-management.md |
| 节点与边 | 构建工作流的核心元素 | nodes-and-edges.md |
| 工具使用 | 让 Agent 调用外部工具 | tools.md |
3. 进阶功能 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| 记忆与持久化 | 会话记忆和状态持久化 | memory.md |
| 人机交互 | Human-in-the-Loop 模式 | human-in-the-loop.md |
4. 高级应用 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| 高级模式 | 多 Agent、并行执行等高级模式 | advanced-patterns.md |
| 部署与生产 | 生产环境部署指南 | deployment.md |
学习路径 #
text
入门阶段
├── LangGraph 简介
├── 快速开始
├── 核心概念
│
基础阶段
├── 状态管理
├── 节点与边
├── 工具使用
│
进阶阶段
├── 记忆与持久化
├── 人机交互
│
高级阶段
├── 高级模式
├── 生产部署
├── 最佳实践
LangGraph vs 其他框架 #
| 特性 | LangGraph | LangChain Agent | AutoGPT |
|---|---|---|---|
| 控制粒度 | 低级、精细 | 高级、抽象 | 自动化 |
| 循环支持 | 原生支持 | 有限支持 | 支持 |
| 状态管理 | 内置 | 需要额外处理 | 有限 |
| 持久化 | 内置 | 需要额外实现 | 有限 |
| 人机交互 | 原生支持 | 有限支持 | 有限 |
| 生产就绪 | 是 | 是 | 实验性 |
快速开始 #
安装 #
bash
pip install langgraph langchain-openai
第一个 Agent #
python
from langgraph.graph import StateGraph, MessagesState, START, END
from langgraph.prebuilt import ToolNode
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
@tool
def search(query: str) -> str:
"""搜索网络"""
return f"搜索结果: {query}"
tools = [search]
llm = ChatOpenAI(model="gpt-4o-mini").bind_tools(tools)
def agent_node(state: MessagesState):
response = llm.invoke(state["messages"])
return {"messages": [response]}
def should_continue(state: MessagesState):
if state["messages"][-1].tool_calls:
return "tools"
return END
graph = StateGraph(MessagesState)
graph.add_node("agent", agent_node)
graph.add_node("tools", ToolNode(tools))
graph.add_edge(START, "agent")
graph.add_conditional_edges("agent", should_continue)
graph.add_edge("tools", "agent")
app = graph.compile()
result = app.invoke({"messages": [("user", "搜索 LangGraph")]})
核心概念预览 #
StateGraph(状态图) #
python
from langgraph.graph import StateGraph
from typing import TypedDict
class State(TypedDict):
messages: list
documents: list
graph = StateGraph(State)
Nodes(节点) #
python
def agent_node(state: State):
response = llm.invoke(state["messages"])
return {"messages": [response]}
graph.add_node("agent", agent_node)
Edges(边) #
python
graph.add_edge(START, "agent")
graph.add_edge("tools", "agent")
graph.add_conditional_edges(
"agent",
should_continue,
{"continue": "tools", "end": END}
)
Checkpointer(检查点) #
python
from langgraph.checkpoint.memory import MemorySaver
checkpointer = MemorySaver()
app = graph.compile(checkpointer=checkpointer)
适用场景 #
- 智能客服系统:多轮对话、知识检索、人工接管
- 代码助手:代码生成、审查、Bug 修复
- 数据分析 Agent:自然语言查询、自动分析报告
- 研究助手:文献调研、信息收集、报告撰写
- 工作流自动化:审批流程、任务编排
LangGraph 的优势 #
text
✅ 精确控制
- 完全控制 Agent 行为
- 灵活的流程定义
- 支持复杂逻辑
✅ 状态管理
- 内置状态管理
- 类型安全
- 自动合并
✅ 持久化
- 自动保存状态
- 故障恢复
- 暂停/继续
✅ 人机交互
- 原生支持
- 灵活的干预点
- 状态修改
✅ 可观测性
- 完整的执行追踪
- 可视化调试
- LangSmith 集成
资源推荐 #
- LangGraph 官方文档:最权威的 LangGraph 文档
- LangGraph GitHub:LangGraph 源码和问题反馈
- LangChain 文档:LangChain 相关文档
- LangSmith:可观测性平台
开始学习 #
选择适合你的起点:
- 新手入门:从 LangGraph 简介 开始
- 快速上手:直接看 快速开始
- 有经验者:跳到 状态管理 或 高级模式
继续探索本指南,逐步掌握 LangGraph 技术,从新手成长为 AI Agent 开发专家!
最后更新:2026-03-30