LangChain、LangGraph 与 LangSmith 的分层

从 Agent 系统架构角度理解 LangChain、LangGraph 与 LangSmith 的分工,以及一次请求如何穿过模型、工具、状态、运行时和观测层。

#tech / ai #resource / langchain #resource / langgraph #resource / langsmith #type / synthesis #status / growing

[!info] related notes

LangChain、LangGraph 与 LangSmith 的分层

范围

这篇关系笔记讨论的不是单独某个框架 API 怎么写,而是从 agent 系统架构角度看,LangChain、LangGraph 与 LangSmith 分别处在哪一层、解决什么问题,以及它们如何串成一条可运行、可恢复、可观察的执行链。

为什么要放在一起理解

这三个名字经常一起出现,但它们承担的不是同一类职责:

  • langchain 更偏开发框架和应用抽象
  • langgraph 更偏运行时、状态机和持久执行
  • langsmith 更偏 tracing、debug、eval 和 monitoring

如果把三层混在一起,就容易把“怎么搭 agent”“怎么跑 agent”“怎么观察和评估 agent”说成同一件事。

依赖路径 / 调用链 / 演进链

从工程心智模型看,可以把 agent 系统粗略理解成:

模型 + 工具 + 消息 + 状态 -> 执行循环 -> 持久运行时 -> tracing / eval / monitoring

落到 LangChain 生态里,大致对应:

  1. LangChain 提供 model、messages、tools、retrieval、structured output、middleware 和 agent loop 这类开发抽象
  2. LangGraph 把这些抽象放进 state graph、checkpoint、thread、interrupt、streaming 和 HITL 这样的运行时骨架里
  3. LangSmith 记录与比较整条执行链,帮助定位问题并把真实样本回流成 evals

如果再用“Agent 像操作系统”的类比去记:

  • ChatModel 像推理核心
  • messages 像执行日志和上下文流
  • tools 像系统调用
  • state / memory 像进程内存
  • retriever 像外部知识索引
  • LangGraph 像调度器和状态机内核
  • LangSmith 像 debugger、profiler 和 observability 平台

一次典型请求可以这样穿过整套分层:

  1. 用户消息进入上下文
  2. LangChain 层的 model 读取 messages,决定直接回答还是先调工具
  3. 如果需要 tool call,运行时执行工具并把结果回填成新的观察
  4. 如果流程较长或需要人工介入,LangGraph 负责保存状态、暂停、恢复和继续流转
  5. 整个过程中,LangSmith 记录模型调用、工具参数、检索结果、时延、错误和最终输出

对比与易混淆点

维度LangChainLangGraphLangSmith
核心定位Agent 应用开发框架Stateful agent / workflow 运行时Tracing / eval / monitoring 平台
主要抽象model、messages、tools、retrieval、agent、middlewarestate、node、edge、checkpoint、thread、interrupttrace、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
创建于 2026/5/20 更新于 2026/5/27