本章导读:如果说第 2 章教你识别和使用了各种「积木块」,那本章就是教你如何把这些积木块搭成完整的建筑。链式编程是 LangChain 早期最核心的设计理念,也是理解更高级的 Agent 编程的必经之路。
链式编程解决的核心问题是流程编排——把多个处理步骤串联成一个完整的处理流水线。在 LangChain 中,一条「链」(Chain)就是一组有序的处理步骤,上一步的输出是下一步的输入。
为什么需要链?因为真实的 LLM 应用几乎不可能一步完成。以一个「文档问答」系统为例,完整流程至少包括:加载文档、切片、生成 Embedding、存入向量库、检索相关片段、构造 Prompt、调用模型、解析输出。这些步骤必须按顺序执行,每一步的输出都是下一步的输入——这就是链。
这是很多学习者困惑的问题,提前在这里讲清楚。
用链的场景:流程固定、步骤明确。比如「接收用户输入 → 构造翻译 Prompt → 调用模型 → 返回翻译结果」。每一步做什么你事先就完全清楚,不需要模型参与决策。
用 Agent 的场景:流程不固定、需要模型动态决策。比如「用户可能问天气、可能查订单、可能要求退款」——你无法预先编排所有可能的流程分支,必须让模型根据用户的具体意图动态选择不同的处理路径。
混合场景:在复杂系统中,往往是一部分用链、一部分用 Agent。Agent 的内部工具实现可能本身就是一条链。两者不是互斥的,而是互补的。
掌握 LangChain 的提示词管理方案。你将学会使用 ChatPromptTemplate 定义结构化提示词,支持变量动态填充、多角色消息组装(system/user/assistant)、部分变量预填充等高级功能。提示词模板是所有链式调用的起点,也是影响模型输出质量最关键的因素——好的模板能让输出准确率提升百分之二十以上。
核心收获:定义可复用、可维护、支持动态变量的提示词模板。
掌握将模型返回的文本转化为结构化数据的方法。你将学会使用 StrOutputParser、JsonOutputParser 和 PydanticOutputParser 三种解析器,分别处理纯文本、JSON 和强类型对象。这是链式编程中不可或缺的一环——没有解析器,你的代码拿到的只是原始文本。
核心收获:让模型的输出从「字符串」变成你代码可以直接使用的结构化数据,为后续的自动化处理奠定基础。
本章的核心内容。你将学会使用管道操作符把多个组件串联成完整的处理链,理解 LCEL(LangChain Expression Language)的核心设计思想——Runnable 接口和组合模式。你将构建几个完整的端到端链:翻译链、摘要链和 RAG 问答链。
核心收获:独立构建完整的端到端处理链,理解 LCEL 的组合模式。
深入链式编程的高级特性:并行执行(同时调用多个链)、条件分支(根据输入选择不同的处理路径)、动态路由(根据模型输出决定下一步)。这些能力让链从「线性流水线」进化为「有分支的流程图」。
核心收获:构建带并行执行和条件分支的复杂链式流程,突破简单线性链的能力限制。
进一步深入序列的高级用法,包括序列的嵌套组合、序列与工具的集成、以及序列的调试技巧和性能优化策略。本节是链式编程的收尾篇,也承担着过渡到第 4 章 Agent 的桥梁角色——当你发现链的固定流程无法满足需求时,就到了用 Agent 的时候。
核心收获:掌握序列的高级组合方式,掌握序列的高级组合方式,理解链式编程的能力边界和局限性,为第 4 章的 Agent 编程做好认知准备。
在进入具体内容之前,先列几个链式编程最典型的应用场景,帮你建立直觉:
场景一:翻译链。 输入原文 + 目标语言 → 提示词模板填充 → 模型翻译 → 输出解析。三步完成,流程完全固定。
场景二:文档摘要。 加载长文档 → 切片 → 每片分别摘要 → 合并摘要 → 二次摘要生成最终版本。涉及并行执行和合并操作。
场景三:RAG 问答。 用户问题 → 检索相关文档 → 拼装 Prompt(问题 + 检索结果)→ 模型生成回答 → 输出解析。这是链式编程最经典的实战应用。
场景四:数据提取。 非结构化文本 → Prompt 指定提取格式 → 模型提取 → JSON 解析 → Pydantic 校验。把自由文本变成结构化数据。
这四个场景在 3.3 节都会有完整的代码实现。你可以先在心里有个预期,学完 3.3 节后回来对照。
3.4 和 3.5 都是关于序列的内容,之所以拆成两节,是因为序列的高级特性内容较多,拆开后每节的认知负担更合理。3.4 聚焦于「结构」——并行、条件、路由;3.5 聚焦于「实践」——嵌套、调试、优化和边界。如果你已经熟悉 LCEL,可以快速浏览 3.4 后重点看 3.5。
LangChain Expression Language(LCEL)是本章的核心语法。它的设计灵感来自 Unix 管道——用竖线符号把多个操作串联起来。代码层面,LCEL 基于 Runnable 接口,所有 LangChain 组件(模型、提示词、解析器等)都实现了这个接口,因此可以用管道操作符自由组合。
LCEL 的三个核心操作:
prompt | model | parser,上一步的输出自动作为下一步的输入。这三个操作覆盖了绝大多数流程编排需求。3.3 节会深入管道组合,3.4 节讲解并行和条件分支。理解了这三个操作,你就掌握了 LCEL 的全部核心用法。LCEL 的设计哲学是「简单的事情简单做,复杂的事情组合做」——最简单的链只需要一个管道操作符,复杂的流程通过嵌套组合实现。
关键词:LangChain框架精通, 链式编程, LCEL, 提示词模板, 输出解析器, 序列化, 管道操作, Runnable
难度:入门到进阶
预计阅读:70 分钟