28ca43ccb2
将 note、pdd、prd、roadmap 四类文档分别归入 `design/` 下对应子目录中,并新增 `.gitkeep` 占位文件
184 lines
7.8 KiB
Markdown
184 lines
7.8 KiB
Markdown
# LangChain & LangGraph 功能调研笔记
|
||
|
||
> 调研时间:2026-07-06
|
||
> 两者关系:同一公司(LangChain Inc.)维护的堆栈上下两层,不是竞品
|
||
|
||
---
|
||
|
||
## 两者关系
|
||
|
||
```
|
||
┌──────────────────────────────────────────┐
|
||
│ LangChain (v1.0 GA) │ ← 高层框架:模型抽象、工具、提示词、600+集成
|
||
│ create_agent / LCEL / 组件库 │
|
||
├──────────────────────────────────────────┤
|
||
│ LangGraph (v1.0 GA) │ ← 底层运行时:有向图执行引擎
|
||
│ StateGraph / Checkpointing / HITL │
|
||
├──────────────────────────────────────────┤
|
||
│ LangSmith (可观测性) │
|
||
└──────────────────────────────────────────┘
|
||
```
|
||
|
||
2025年10月22日同时达到 v1.0 GA,官方分工:
|
||
|
||
> **LangChain** = agent framework:abstractions and integrations for models, tools, and agent loops.
|
||
> **LangGraph** = orchestration runtime:durable execution, streaming, human-in-the-loop, and persistence.
|
||
|
||
LangChain v1.0 的 `create_agent` 内部已运行在 LangGraph 引擎上。
|
||
|
||
---
|
||
|
||
## LangChain v1.0
|
||
|
||
### 定位
|
||
高层应用框架,提供 agent 所需的**组件抽象**和**集成生态**。
|
||
|
||
### 精简后的核心模块
|
||
|
||
| 模块 | 功能 |
|
||
|------|------|
|
||
| `langchain.agents` | `create_agent`, `AgentState`(取代旧 AgentExecutor) |
|
||
| `langchain.chat_models` | `init_chat_model`, `BaseChatModel`(统一模型初始化) |
|
||
| `langchain.tools` | `@tool`, `BaseTool` |
|
||
| `langchain.messages` | 消息类型、内容块、`trim_messages` |
|
||
| `langchain.embeddings` | `init_embeddings`, `Embeddings` |
|
||
|
||
旧组件(`LLMChain`、`ConversationChain` 等)移入 `langchain-classic`。
|
||
|
||
### 七大组件类别
|
||
|
||
| 类别 | 关键组件 |
|
||
|------|----------|
|
||
| **Models** | Chat models, LLMs, Embeddings — 统一接口跨 provider 切换 |
|
||
| **Tools** | 600+ provider 集成:API、数据库、搜索引擎等 |
|
||
| **Agents** | `create_agent`, ReAct agents, Tool-calling agents |
|
||
| **Memory** | 消息历史、自定义状态 |
|
||
| **Retrievers** | 向量检索器、网络检索器 |
|
||
| **Document** | 加载器、分割器、转换器 |
|
||
| **Vector Stores** | Chroma, Pinecone, FAISS 等集成 |
|
||
|
||
### v1.0 关键新特性
|
||
|
||
**1. Middleware 中间件系统** — `create_agent` 的钩子系统:
|
||
- `before_model` — 模型调用前注入/修改
|
||
- `after_model` — 模型调用后验证/后处理
|
||
- `wrap_tool_call` — 拦截工具调用错误
|
||
|
||
**2. Standard Message Content** — 跨 provider 标准化消息内容格式:
|
||
- 推理/思维链、引用、多模态(图片/音视频/文档)
|
||
- 工具调用、provider 特有工具(web search, code execution)
|
||
- 通过 `.content_blocks` 属性访问,向后兼容
|
||
|
||
**3. `create_agent`** — 取代旧 AgentExecutor,内部运行在 LangGraph 运行时上
|
||
|
||
### 成熟度
|
||
|
||
| 维度 | 状态 |
|
||
|------|------|
|
||
| 版本 | v1.0 GA(2025-10) |
|
||
| 稳定性 | 稳定,agent 层经重构后已稳定 |
|
||
| 生产证明 | Replit, Clay, Rippling, Cloudflare, Workday |
|
||
| 支持 | LTS-style support track |
|
||
| 适用场景 | RAG、信息提取、单 agent 助手、快速原型 |
|
||
|
||
---
|
||
|
||
## LangGraph v1.0
|
||
|
||
### 定位
|
||
底层编排运行时,专为**有状态、长时间运行、多步骤**工作流设计。
|
||
|
||
### 核心抽象链
|
||
|
||
```
|
||
StateGraph → Nodes (纯 Python 函数) → Edges (路由逻辑)
|
||
↓
|
||
Shared State (TypedDict / Pydantic)
|
||
↓
|
||
Checkpointer (每个 super-step 快照)
|
||
```
|
||
|
||
- **StateGraph**: 有状态图,参数化 State 类型
|
||
- **Nodes**: 纯函数,`(State) → updates`
|
||
- **Edges**: `add_conditional_edges`,支持循环/分支/合并
|
||
- **State**: `TypedDict` 或 Pydantic,带 reducer 处理并发更新
|
||
- **Reducers**: `add_messages` 等,自动处理追加 vs 覆盖
|
||
|
||
### 完整功能矩阵
|
||
|
||
| 功能 | 状态 | 细节 |
|
||
|------|------|------|
|
||
| **StateGraph** | ✅ 稳定 | 循环图(非 DAG),条件边缘,并行 fan-out |
|
||
| **Checkpointing** | ✅ v4.1.1 | SQLite / PostgreSQL / Redis 后端 |
|
||
| **Durable Execution** | ✅ 稳定 | 跨失败自动恢复,从精确断点继续 |
|
||
| **Human-in-the-loop** | ✅ 一等公民 | `interrupt()` + `Command(resume=...)` |
|
||
| **Time-travel 调试** | ✅ 稳定 | 回滚任意 checkpoint,fork 重放 |
|
||
| **流式输出** | ✅ 稳定 | Token 级 + State 级 + Event 级 |
|
||
| **多 Agent 编排** | ✅ 稳定 | Supervisor / Swarm / 层级 / Subgraph |
|
||
| **Comprehensive Memory** | ✅ 稳定 | 短时工作记忆 + 长时持久记忆 |
|
||
| **增量状态存储** | 🧪 DeltaChannel beta (v4.1.0+) | 长消息列表只存 delta |
|
||
| **跨进程状态同步** | 🧪 RemoteCheckpointer (v4.1.0+) | 分布式多 agent 架构 |
|
||
| **自动 checkpoint 清理** | ✅ keep_latest TTL (v4.0.2) | 避免无限制积累历史 |
|
||
| **LangGraph Platform** | ✅ 稳定 | Agent Server:持久化、任务队列、版本管理 |
|
||
| **LangGraph Studio** | ✅ 稳定 | 可视化 agent 工作流 |
|
||
|
||
### 成熟度
|
||
|
||
| 维度 | 状态 |
|
||
|------|------|
|
||
| 版本 | v1.0 GA(2025-10),checkpointer v4.1.1 (2026-05) |
|
||
| 稳定性 | 高,持久化为架构一等公民 |
|
||
| 生产证明 | Klarna, Replit, Elastic |
|
||
| 支持 | LTS-style support track |
|
||
| 适用场景 | 多步骤 agent、多 agent 系统、人工审批、长时间运行任务 |
|
||
|
||
---
|
||
|
||
## 功能边界对比
|
||
|
||
| 维度 | LangChain | LangGraph |
|
||
|------|-----------|-----------|
|
||
| **层次** | 高层应用框架 | 底层编排运行时 |
|
||
| **核心抽象** | `create_agent`, LCEL, 组件库 | `StateGraph`, Nodes, Edges, State |
|
||
| **思维模型** | 线性或 DAG 管道 | 节点 + 边缘的循环有向图 |
|
||
| **循环/分支** | 受限 | **一等公民**:任意循环、分支、合并 |
|
||
| **状态持久化** | 无原生支持 | **一等公民**:Checkpointer |
|
||
| **Human-in-loop** | 需手动编排 | **一等公民**:`interrupt()` + `Command` |
|
||
| **Time-travel 调试** | 无 | **一等公民**:回滚 fork 重放 |
|
||
| **Durable Execution** | 无 | **一等公民**:跨故障自动恢复 |
|
||
| **流式** | Token 级 | Token + State + Event 每节点流式 |
|
||
| **多 Agent 编排** | 需手动组合 | **原生**:Supervisor/Swarm/Subgraph |
|
||
| **模型抽象** | **核心优势** | 复用 LangChain |
|
||
| **600+ 集成** | **核心优势** | 可复用 LangChain 集成 |
|
||
| **LCEL 线性链** | **有** | 无 |
|
||
| **Middleware** | **v1.0 特有** | 无 |
|
||
| **学习曲线** | 中等 | 较陡(需图思维) |
|
||
| **部署平台** | 无独立平台 | LangGraph Platform + Studio |
|
||
|
||
---
|
||
|
||
## 决策路线
|
||
|
||
```
|
||
你的 workflow 需要什么?
|
||
│
|
||
├─ 线性、始终相同步骤 → LangChain (LCEL / create_agent)
|
||
├─ 需要循环/分支/重试 → LangGraph (StateGraph)
|
||
├─ 需要持久化/故障恢复 → LangGraph (Checkpointer)
|
||
├─ 需要人工审批 → LangGraph (interrupt())
|
||
├─ 需要 time-travel 调试 → LangGraph (checkpoint + fork)
|
||
├─ 需要多 agent 协作 → LangGraph (Supervisor/Swarm/Subgraph)
|
||
└─ 不确定 → 先用 create_agent,遇到瓶颈下钻到 StateGraph
|
||
```
|
||
|
||
---
|
||
|
||
## 参考来源
|
||
|
||
- [LangChain Blog: v1.0 Milestone](https://www.langchain.com/blog/langchain-langgraph-1dot0)
|
||
- [LangChain Documentation](https://docs.langchain.com/oss/python/langchain/overview)
|
||
- [LangGraph Documentation](https://docs.langchain.com/oss/python/langgraph/overview)
|
||
- [LangGraph GitHub](https://github.com/langchain-ai/langgraph)
|
||
- [Atlan: LangChain vs LangGraph 2026](https://atlan.com/know/ai-agent/ai-agent-memory/langchain-vs-langgraph/)
|
||
- [truefoundry: LangChain vs LangGraph](https://www.truefoundry.com/blog/langchain-vs-langgraph)
|