LangChain、LangGraph 与 LangSmith 的分层
从 Agent 系统架构角度理解 LangChain、LangGraph 与 LangSmith 的分工,以及一次请求如何穿过模型、工具、状态、运行时和观测层。
#tech / ai
#resource / langchain
#resource / langgraph
#resource / langsmith
#type / synthesis
#status / growing
[!info] related notes
- 所属 MOC: AI MOC, Agent MOC, Agent Evals MOC, Python 大模型应用开发 MOC
- 相关概念: Agent, Agent Runtime, Agent 执行闭环, Agent 中的 Tool Use, AI Agent Memory Layer
- 易混淆概念: LangChain、LangGraph 与 CrewAI 的定位对比
- 相关资源: langchain, langgraph, langsmith
LangChain、LangGraph 与 LangSmith 的分层
范围
这篇关系笔记讨论的不是单独某个框架 API 怎么写,而是从 agent 系统架构角度看,LangChain、LangGraph 与 LangSmith 分别处在哪一层、解决什么问题,以及它们如何串成一条可运行、可恢复、可观察的执行链。
为什么要放在一起理解
这三个名字经常一起出现,但它们承担的不是同一类职责:
如果把三层混在一起,就容易把“怎么搭 agent”“怎么跑 agent”“怎么观察和评估 agent”说成同一件事。
依赖路径 / 调用链 / 演进链
从工程心智模型看,可以把 agent 系统粗略理解成:
模型 + 工具 + 消息 + 状态 -> 执行循环 -> 持久运行时 -> tracing / eval / monitoring
落到 LangChain 生态里,大致对应:
- LangChain 提供 model、messages、tools、retrieval、structured output、middleware 和 agent loop 这类开发抽象
- LangGraph 把这些抽象放进 state graph、checkpoint、thread、interrupt、streaming 和 HITL 这样的运行时骨架里
- LangSmith 记录与比较整条执行链,帮助定位问题并把真实样本回流成 evals
如果再用“Agent 像操作系统”的类比去记:
- ChatModel 像推理核心
- messages 像执行日志和上下文流
- tools 像系统调用
- state / memory 像进程内存
- retriever 像外部知识索引
- LangGraph 像调度器和状态机内核
- LangSmith 像 debugger、profiler 和 observability 平台
一次典型请求可以这样穿过整套分层:
- 用户消息进入上下文
- LangChain 层的 model 读取 messages,决定直接回答还是先调工具
- 如果需要 tool call,运行时执行工具并把结果回填成新的观察
- 如果流程较长或需要人工介入,LangGraph 负责保存状态、暂停、恢复和继续流转
- 整个过程中,LangSmith 记录模型调用、工具参数、检索结果、时延、错误和最终输出
对比与易混淆点
| 维度 | LangChain | LangGraph | LangSmith |
|---|---|---|---|
| 核心定位 | Agent 应用开发框架 | Stateful agent / workflow 运行时 | Tracing / eval / monitoring 平台 |
| 主要抽象 | model、messages、tools、retrieval、agent、middleware | state、node、edge、checkpoint、thread、interrupt | trace、dataset、run、feedback、eval |
| 最擅长的问题 | 快速搭建 tool agent、RAG、结构化输出 | 长流程、恢复执行、审批点、持久状态 | 调试行为漂移、比较版本、做质量回归 |
| 更像什么 | 上层开发接口 | 底层内核和调度器 | 调试器、观测台和评估平台 |
| 主要风险 | 抽象很多,容易过度复杂化 | 图和状态设计不清会很难维护 | 没有质量标准时只会堆 traces |
几个实用判断:
- 你在搭 messages、tools、retrieval 和 agent loop 时,主要在用 LangChain
- 你在处理 checkpoint、thread、interrupt、streaming 和 HITL 时,主要在用 LangGraph
- 你在追查“它为什么这么做”以及“新版到底变好还是变坏”时,主要在用 LangSmith
这也是为什么成熟 agent 工程不是只写一个长 prompt,而是同时设计:
- 工具接口
- 状态模型
- 执行图
- 中断与恢复
- tracing 与 eval