图解 LangChain 01|为什么是 LLM 应用框架:从裸调 API 到工程化
直接调 OpenAI 接口也能跑通,为什么还要 LangChain?这一篇先把「裸调 API 为什么不够」讲透,再立起 LLM 应用框架的三根轴:组件复用、流程编排、可观测治理。
从一条 Runnable 协议开始,拆到 LCEL、LangGraph 状态机、Agent 与 middleware、RAG 检索、Tools/MCP、记忆重构,再到 LangSmith 调试与生产部署。
适合从 0 系统学透 LangChain v1.0 架构、生产 Agent 和工程治理的后端/AI 工程师。
为什么需要 LLM 框架、v1.0 三层架构、Runnable 协议、LCEL 管道与 Model I/O 三件套。
从 Chain 到 Graph、StateGraph 五要素、reducer、super-step、checkpoint、HITL 与多 Agent 协作。
create_agent 入口、middleware 切面、hook 点、预置件、context engineering 与 deep agents。
五段流水线、切分策略、Embedding、VectorStore、Retriever 与 Agentic RAG。
工具调用标准化、MCP 协议与三能力、记忆模型重构与短期长期记忆。
LangSmith 可观测、评估、Replay 调试、部署演进与系列收束。
直接调 OpenAI 接口也能跑通,为什么还要 LangChain?这一篇先把「裸调 API 为什么不够」讲透,再立起 LLM 应用框架的三根轴:组件复用、流程编排、可观测治理。
LangChain 不是一个扁平的库,而是分了三层:langchain-core 提供积木,LangGraph 负责编排有状态流程,langchain 包出开箱即用的 Agent。搞清这三层的边界,才不会学得一团乱。
LangChain 地基里最关键的一块积木是 Runnable——它给所有组件定义了统一的输入输出协议。搞懂它,才懂为什么 prompt、模型、解析器能用同一种方式串起来。
当所有组件都是 Runnable,就能用管道符把串成链。LCEL 是 Runnable 协议的组合语法,最大的价值是流式、批处理、异步、追踪开箱即用。
prompt 散落在代码里是技术债。PromptTemplate 把固定文案和变量分离,让 prompt 变成可复用、可管理、可测试的 Runnable 组件。
模型回答的是自由文本,程序要的是结构化数据。输出解析负责这个转换。v1.0 主推 with_structured_output,让模型直接吐结构,比手写解析稳得多。
prompt、model、parser 单看都是积木,串起来才是 Model I/O 闭环。这一篇把它们组成完整链,再加上重试、fallback、限流,让它从能跑变成可靠。
LCEL 管道是直线,但真实 Agent 需要循环、分支、中断。这一篇讲清为什么直线模型不够用,以及 LangGraph 用「图」怎么补上这些缺口。
StateGraph 由五个要素构成:State 状态、Node 节点、Edge 连线、Reducer 合并、Super-step 推进。把这五个概念认全,任何 LangGraph 图你都能看懂。
State 是图的血液。这一篇讲清 state 怎么定义、有哪些字段、为什么消息列表是它的核心,以及 state 和 Agent 记忆的关系。
Node 是图的处理步骤,Edge 是节点间的连线。这一篇讲清怎么定义节点、连线怎么连,以及它们怎么和 state 配合把图跑起来。
普通 edge 固定下一步,条件 edge 根据当前 state 动态决定走哪。这是图能做「根据情况分流」的关键,也是 Agent 灵活性的来源。
多个节点都改同一个 state 字段时,是覆盖还是追加?Reducer 决定合并规则。搞不清它,多 Agent 协作会出现消息丢失、状态被覆盖的诡异 bug。
图不是一口气跑完,而是按 super-step 推进,每步存档。Checkpoint 让长流程 Agent 能恢复、能暂停、能跑很久。这是生产级 Agent 的根基。
Agent 跑到敏感步骤要暂停等人审批,这是生产里绕不开的需求。LangGraph 用 interrupt 实现,而它成立的前提就是上一篇的 checkpoint。
一个复杂任务,单个 Agent 可能搞不定。多 Agent 协作让它分工配合。LangGraph 支持两种主流拓扑:Supervisor 主管型和 Swarm 群组型,各有适用场景。
前面 9 篇把 LangGraph 的概念拆开讲了,这一篇用一个完整的「带工具的客服 Agent」把它们串起来,作为 Phase 2 的实战收束。
上一篇我们手动搭了一个 Agent 的图。create_agent 把这套手工活封装成开箱即用的入口——一行代码搭出标准 Agent。这一篇讲它封装了什么、底层是什么。
create_agent 的核心 loop 是固定的,但你想加记忆、压缩、护栏怎么办?Middleware 让你不碰 loop,通过钩子注入这些横切能力。这是 v1.0 的灵魂设计。
上一篇讲了 middleware 的概念,这一篇落到具体:它能 hook 在哪些位置?主要是 beforeModel 和 afterModel,每个位置适合做什么。
上一两篇讲了 middleware 的钩子点。好消息是:最常见的那些横切能力,官方已经写成预置 middleware 了,你直接用。这一篇做个全景。
Agent 跑久了,上下文会越来越长,超过模型窗口就崩了。Context Engineering 就是管理这件事——通过 middleware 压缩、裁剪、筛选上下文。这是 2026 年 Agent 工程的核心议题。
上一篇讲了 Context Engineering。Deep Agents 就是把 middleware 这套用到位的复杂 Agent——能处理长上下文、多步骤、需要持续记忆的任务。这是 middleware 架构的集大成。
前面 6 篇讲了怎么搭 Agent,这一篇做 Phase 3 收束——讲 Agent 的三种经典范式:边想边做的 ReAct、先规划再执行的 Plan-Execute、做完自我检查的反思。各有适用场景。
让 Agent 能查知识库再回答,靠的是 RAG。这一篇是 Phase 4 开篇,先给 RAG 五段流水线的全景:加载→切分→向量化→存储→检索,每段都是 Runnable。
RAG 第一段:把 PDF、网页、数据库这些原始内容读进来。听起来简单,但格式处理不好,后面切分再聪明也白搭。这一篇讲 Loaders 和 Document 对象。
RAG 第二段:把长文档切成块。这一篇讲切分策略,并给出一个反常识的工程判断——切分质量对 RAG 效果的影响,往往比换 embedding 模型还大。
RAG 第三段:把文本块转向量。这一篇讲向量化是什么、为什么能做相似搜索,以及中文场景的模型选型——别无脑用 OpenAI。
RAG 第四段:把向量存起来。这一篇讲向量库的作用,以及 LangChain 用统一接口抽象它们——换来的是可替换性,换库几乎不改业务代码。
RAG 第五段:检索。Retriever 是「给查询返回文档」的 Runnable 抽象。这一篇讲它为什么重要,以及几种提升检索质量的进阶策略。
Phase 4 收束。固定 RAG 每次都查,Agentic RAG 让 Agent 自己判断要不要查、查什么、查几次。这一篇讲它怎么实现,以及和固定 RAG 的边界。
Agent 的「手」是工具。这一篇讲怎么定义工具、怎么把工具绑给模型。重点:工具的描述和参数 schema 就是给模型看的 API 文档,写不好 Agent 就乱调。
上一篇的 @tool 是应用内的私有工具。MCP 是让工具能跨应用共享的开放协议。这一篇讲它是什么、解决什么,以及和 @tool 的边界。
上一篇提到 MCP 有三种能力。这一篇展开讲:Tools(模型调用的函数)、Resources(模型读的数据)、Prompts(复用模板)。多数人只用 Tools,但另两个也有价值。
Phase 5 转到 Agent 的「脑」——记忆。这一篇讲清 LangChain 的记忆不是神秘机制,它就是 state(存什么)+ middleware(怎么注入),是前面学的东西的组合。
上一篇讲了记忆 = state + middleware。这一篇落到短期记忆:一次会话里的上下文,怎么靠 checkpointer 按 thread 管理、跨轮次保持。
短期记忆管一次会话,长期记忆管跨会话。这一篇讲 LangGraph Store 怎么实现长期记忆——记住用户偏好、历史结论,换个会话也记得。
最后的 Phase 6 讲生产化。这一篇讲 LangSmith Tracing——LLM 调用是黑盒,trace 让每一步可见。没有可观测性,LLM 应用永远停在 demo。
Trace 让单次 run 可见,但整体质量怎么衡量?这一篇讲评估——用数据集批量测,量化改 prompt/换模型有没有变好,而不是凭感觉。
传统断点调试对 Agent 这种多步、有状态的程序不好使。Replay 调试能取一次 run 的状态,改输入重跑。它是 Agent 时代的断点调试。
应用做好了要部署。这一篇讲 LangChain 的部署方案演进:LangServe 适合无状态链,LangGraph Platform 是为有状态 Agent 设计的运行时,是 v1.0 的主推方向。
全系列最后一篇。回顾 42 篇建立的知识地图,并给出一个务实的判断:LangChain 适合什么、不适合什么、什么时候该用它。