LangChain 学习笔记 00:先搭一张 LLM 应用开发地图
刚接触 LangChain 时,我有过一个很直接的疑问:调用大模型不就是发一次 HTTP 请求吗,为什么还需要专门学一个框架?
把 Demo 写到几十行以后,答案就慢慢出现了。提示词要维护,聊天记录要裁剪,模型输出要校验,私有文档要检索,工具调用要鉴权,线上问题还得能追踪。麻烦的从来不是“把请求发出去”,而是怎样把这些环节组织成一个还能继续修改的应用。
这也是我读《LangChain 入门指南》时最想弄清楚的事。它使用的是较早期 LangChain API,但从模型 I/O、数据增强、链、记忆,一直讲到 Agent、回调和第三方集成,恰好给出了一张完整的工程地图。
版本说明:书里的部分包路径、Chain、Memory 和 Agent 写法已经发生变化。这个系列主要记录概念和设计思路,代码实现会尽量对照当前官方文档,不把旧 API 当成现行手册。
一个聊天 Demo 是怎样变复杂的
最开始,我们可能只写三步:准备提示词、调用模型、打印结果。
用户问题 -> Prompt -> Model -> 文本答案
等需求多起来,流程通常会变成这样:
用户问题
-> 权限与输入检查
-> 检索相关资料
-> 组装消息
-> 调用模型
-> 解析并校验结果
-> 记录来源、耗时与 token
-> 返回答案
如果所有逻辑都堆在一个函数里,换模型会改一片,调整提示词也可能碰到检索代码。LangChain 提供的价值,就是把常见能力拆成相对独立的组件,再用清晰的数据流把它们接起来。
我现在更愿意把它看成一套“LLM 应用组织方法”,而不只是一个模型 SDK。
用四层结构读完整本书
为了不被大量类名带着走,我把全书内容重新整理成四层。
| 层次 | 主要组件 | 要解决的问题 |
|---|---|---|
| 模型交互 | Chat Model、Prompt、Output Parser | 输入怎样组织,输出怎样落到程序里 |
| 知识与状态 | Loader、Embedding、Retriever、Memory | 模型从哪里获得外部知识,怎样保留上下文 |
| 流程与决策 | Chain、Agent、Tool | 下一步由固定流程决定,还是由模型动态选择 |
| 运行与集成 | Callback、模型与向量库适配 | 出错后怎样定位,底层服务怎样替换 |
这四层不是严格的框架分包,而是我理解复杂度的一种方式。写一个简单摘要工具时,也许只需要第一层;做企业知识库问答时,会用到前两层;让模型查询订单、发送邮件或操作系统时,才会真正进入 Agent 和工具权限的问题。
Chain 和 Agent 不要混在一起理解
书里既讲 Chain,也讲 Agent。两者看起来都在“串流程”,但控制权不同。
Chain 更像一条事先画好的路线:先检索,再生成,最后校验。每一步做什么,开发者基本知道。Agent 则把一部分选择权交给模型,例如先判断要不要查天气,再决定调用哪个工具。
我的使用原则很简单:能画成固定流程,就先用固定流程。只有任务确实需要根据语义动态选择动作时,再引入 Agent。自由度越高,越要补上权限、预算、循环次数和人工确认。
读旧版技术书,我准备看什么
技术书最容易过时的是代码,最不容易过时的是问题。于是这次学习我会把注意力放在三件事上:
- 这个组件是在解决什么麻烦?
- 它的输入、输出和失败方式是什么?
- 放到真实项目里,哪些工作不能交给框架自动完成?
例如,输出解析器的类名会变,但“模型输出必须校验”不会变;向量库可以更换,但“检索结果要能追溯到原文”不会变;Agent 的创建方式会升级,但“工具必须限制权限”不会变。
这套笔记会写什么
整本书计划拆成 12 篇:先跑通最小应用,再依次讨论模型 I/O、RAG 数据链路、Chain、Memory、Agent、Callback,随后拆解 PDF 问答和 BabyAGI 案例,最后用集成、Embedding、Transformer 与语义检索做一次收束。
每篇不逐页复述,而是尽量留下四样东西:一个具体场景、一条核心流程、几个容易踩的坑,以及我读完后的判断。
先记住三条底线
读完目录后,我先给自己定下三条工程底线。
- 能用普通代码解决的确定性逻辑,不急着交给 Agent。
- 模型返回的内容一律按外部输入处理:解析、校验、限制权限,并准备失败路径。
- 从第一版就记录提示词版本、模型参数、检索片段、工具调用、耗时和 token 消耗。
LangChain 会继续变化,模型也一定会换。真正值得从这本书里带走的,是怎样划分模型、数据、状态和控制流的边界。接下来的学习,就从第一个最小聊天应用开始。
参考资料:本地扫描版《LangChain 入门指南:构建高可复用、可扩展的 LLM 应用程序》;涉及当前 API 的部分以 LangChain 官方文档为准。

浙公网安备 33010602011771号