上一篇立了三根价值轴:组件复用、流程编排、可观测治理。但如果你现在打开 LangChain 的官方文档,会立刻撞上一个困惑——到处都在讲 LangChain、LangGraph、langchain-core,名字像,又不止一个。
很多人卡在这里:以为是三个互相竞争的库,或者以为要全部学完才能用。都不是。它们是同一个体系的三层,各管一摊,边界清晰。这一篇就把这张地图铺开:三层分别是什么、各解决什么问题、你该在哪一层花力气。
先看一张总图:三层叠起来
LangChain 的 v1.0 架构,最底下一层、中间一层、最上面一层,从下往上抽象程度递增,越往上越「开箱即用」,越往下越「灵活可控」。
三层从下到上分别是:
- 底层
langchain-core:提供最基础的「积木」——Runnable 协议、Prompt、Parser、模型接口、Embedding、VectorStore、Retriever。这是整个生态的地基,最稳定。 - 中层
LangGraph:负责把积木编成「有状态的流程」——图、状态、checkpoint、中断。这是引擎,处理循环、分支、长时间运行。 - 顶层
langchain:在 LangGraph 之上包出「开箱即用的 Agent」——create_agent、middleware、标准工具。这是你日常最常直接用的。
一句话记住它们的关系:core 提供积木,LangGraph 把积木编成图,langchain 在图上包出 Agent。三层不是竞争,是分工。
底层:langchain-core,最稳的地基
这一层做的是最朴素的事——把 LLM 应用里所有异构的东西,统一成一种可组合的积木。
它在 v1.0 里提供的核心抽象:
| 抽象 | 是什么 | 解决什么 |
|---|---|---|
| Runnable | 统一的输入→输出协议 | 所有组件用同一种方式组合(上一篇讲过) |
| Prompt 模板 | 把变量填进固定文案 | prompt 复用、不散落在代码里 |
| OutputParser / 结构化输出 | 把模型的自由文本解析成结构 | 让模型输出可被程序消费 |
| ChatModel / LLM 接口 | 统一不同模型厂商的调用 | 换模型不改业务代码 |
| Embedding 接口 | 把文本转向量的统一接口 | 换 embedding 模型不动 |
| VectorStore / Retriever 接口 | 存储与检索的统一抽象 | 换向量库不动 |
这一层的关键特征是只定义接口和最基础实现,不做编排。它不知道「先检索再调模型」这种流程——那是中层的活。底层只保证:无论你用 OpenAI 还是 Anthropic、用 Pinecone 还是 Chroma,它们都能被当成同一种东西来对待。
什么时候你主要和底层打交道?当你只是做单点功能(一个 prompt、一次解析、一次检索),还不需要复杂流程的时候。整个 Phase 1 后半段(05–07)都在讲这层。
中层:LangGraph,把积木编成图
这是 v1.0 之后整个体系的重心。底层解决了「单点标准化」,但真实应用是流程——要循环、要分支、要中断恢复——这些底层管不了,由 LangGraph 接手。
LangGraph 在底层之上引入了几个新东西:
- StateGraph(图):把流程建模成「节点 + 连线」的图,节点是一步处理,连线决定下一步去哪
- State(状态):在节点间流转的数据,比如对话历史 + 业务上下文
- Checkpoint(检查点):每一步把状态存下来,让流程能暂停、能恢复、能跑很久
- Interrupt(中断):在某个点暂停,等人介入后再继续
为什么需要这一层?因为 LLM 应用里的流程不是直线。一个 Agent 要「思考 → 调工具 → 看结果 → 再思考」,这是个循环;遇到敏感操作要「停下来等人审批」,这是个中断;不同情况走不同分支,这是个条件路由。这些用底层的链式管道(LCEL)硬写,很快就会失控。LangGraph 把它们变成看得见、改得动的图。
整个 Phase 2(08–17)都聚焦这层。它是你能不能从「会跑 demo」走到「做得出靠谱 Agent」的关键。
顶层:langchain,开箱即用的 Agent
不是每个人都想从「画图、定义状态」开始造 Agent。很多人只是想要一个「能调工具、能记住上下文、能被定制」的 Agent,拿来就用。这一层就是为这类需求准备的。
顶层提供的核心:
create_agent:标准 Agent 入口,底层跑的就是一个 LangGraph——模型调用 → 执行工具 → 回灌 → 重复,直到给出答案- Middleware:不改核心 loop,通过钩子注入「记忆管理、上下文压缩、护栏」等横切关注点
- 标准工具集:开箱即用的工具定义、绑定、调用
这一层的价值是封装好的套路:你不需要自己画 Agent 的状态机图,create_agent 给你一个合理的默认实现;你想定制,用 middleware 钩进去,而不是重写整个循环。
Phase 3(18–24)讲透这层,重点是 create_agent 和 middleware 这对组合。
一个判断:三层我该在哪层花力气
很多人会问:是不是三层都要学透才能用?不是。这三层对应不同用法,你的精力分配应该跟着用法走。
| 你的目标 | 主要在哪层 | 占用精力 |
|---|---|---|
| 做单个功能(prompt、检索、解析) | 底层 core | 低 |
| 做标准 Agent(调工具、有记忆) | 顶层 langchain | 中 |
| 做复杂流程(多 Agent、循环、人工审批) | 中层 LangGraph | 高 |
一个务实的判断:先吃透顶层拿到产出,遇到顶层不够用时下沉到中层,底层按需查。这是从「能做出东西」到「能驾驭复杂场景」的进阶路径,而不是一上来就从底层啃。
这也是本系列的讲解顺序设计:Phase 1 铺底层基础(让你理解积木),但很快进 Phase 2 的 LangGraph(重心),再用 Phase 3 的顶层把 Agent 收回来——是「基础 → 引擎 → 应用」的循环,不是按层数线性堆叠。
收束:有了地图,再上路
这一篇铺开了 LangChain v1.0 的三层地图:
- 底层 core 提供统一的积木,只管标准化,不管流程
- 中层 LangGraph 把积木编成有状态的图,管循环、分支、中断
- 顶层 langchain 在图上包出开箱即用的 Agent,管开箱即用和定制
带着这张地图,你会发现后面每一篇都在讲「这张地图上的某一块」。下一篇会落到地图的最底——Runnable 协议:它是整个地基里最关键的一块积木,也是理解「为什么所有组件都能用同一种方式组合」的钥匙。
关于十三Tech
我是十三,All in AI Agent 方向的架构师,专注 AI 工程实践。我相信 AI 是程序员的最佳搭档。
如果你想跟完这套「图解 LangChain」,欢迎关注公众号 「十三Tech」。全系列 42 篇,会按认识基础、LangGraph 状态机、Agent 与 middleware、RAG 检索、Tools/MCP/记忆、生产化收束这条线更新。

