LangChain 学习笔记 00:先看全景,LLM 应用为什么需要一层工程框架

这本《LangChain 入门指南》的副标题是“构建高可复用、可扩展的 LLM 应用程序”。读完整个目录后,我觉得重点其实不在某个类怎么调用,而在一个更基础的问题:当大模型从演示走向应用,代码为什么会迅速变乱,以及我们应该怎样划分边界。

书中从模型 I/O、数据增强、链、记忆、Agent、回调一路讲到 PDF 问答、BabyAGI 和第三方集成。它展示的不是一组互不相干的组件,而是一条应用复杂度逐步上升的路线。

单次模型调用为什么不够

最简单的大模型程序只有三步:拼接提示词、调用模型、打印文本。这种写法适合验证想法,但很快会遇到输入格式不统一、供应商接口不同、输出难解析、上下文越来越长、知识需要外接、工具需要执行等问题。

LangChain 的价值,是给这些问题提供一组可组合的边界。模型包装器统一调用入口,提示词模板管理输入,输出解析器把自由文本转成结构化数据,加载器与检索器负责外部知识,链负责流程,Agent 负责动态决策,回调负责观察运行过程。

因此我不会把 LangChain 理解成“替我调用 OpenAI 的库”。它更像 LLM 应用的组织方式:把变化频繁的模型与相对稳定的业务流程隔开。

全书可以看成四层

第一层是模型交互。第 2、3 章解决如何初始化框架、组织提示词、调用 LLM 或聊天模型,以及如何得到可验证的输出。

第二层是知识与状态。第 4、6 章分别处理外部文档和对话记忆。前者回答“模型如何知道参数之外的信息”,后者回答“系统如何记住当前会话发生了什么”。

第三层是流程与决策。第 5 章的链描述确定性流程,第 7 章的 Agent 描述由模型参与选择下一步的动态流程。两者不是互相替代,而是风险和灵活性的不同取舍。

第四层是运行与集成。回调处理器让 token、步骤、错误和耗时可见;集成层则隔离模型、向量库、检索器和工具的供应商差异。

学旧版 LangChain 仍然有价值吗

需要先说明:这本书基于较早期 LangChain API,今天直接复制示例,很可能遇到包路径、类名或调用方式变化。尤其是旧式 Chain、Memory 和 Agent API,不能把书中的代码当作当前版本手册。

但它讲的抽象仍然成立:提示词需要模板化,输出需要结构化,检索需要独立评估,Agent 需要工具边界,运行过程需要追踪。学习时应把“概念”与“具体 API”分开,代码以当前官方文档为准。

我准备怎样读这本书

这套笔记会拆成 12 篇。第 1 篇跑通最小应用;第 2 篇拆模型 I/O;第 3 篇进入 RAG 数据底座;第 4 到第 7 篇依次讨论链、记忆、Agent 和回调;第 8、9 篇拆应用案例;第 10 篇看集成;最后一篇用 Embedding、Transformer 和语义检索收束全书。

每篇都不会逐页复述,而是回答三个问题:这个组件解决什么工程问题,它与其他组件怎样协作,真实项目里最容易踩什么坑。

先立下三个原则

第一,优先使用确定性流程。能用普通函数和显式分支解决的任务,不必急着交给 Agent。

第二,把模型输出当作不可信输入。即使要求 JSON,也要解析、校验、重试并设计失败路径。

第三,把可观察性放进第一版。提示词、模型参数、检索片段、工具调用、耗时和 token 消耗都应留下记录。

这本书真正值得带走的,不是一份 LangChain 类名表,而是一套构建 LLM 应用的分层思路。框架会变,模型会换,但边界、状态、控制流和可观察性不会消失。

参考资料:本地扫描版《LangChain 入门指南:构建高可复用、可扩展的 LLM 应用程序》;当前代码请以 LangChain 官方文档为准。

文章摘自:https://www.cnblogs.com/hazy-star/p/22032597