核心要点

  • Chain 是把一步或多步 LLM 调用与处理串成可复用流程的抽象

  • 经典类型:LLMChain、SequentialChain、RouterChain、RetrievalQA、ConversationChain

  • LLMChain(模板+模型)是最基础单元,现已被 LCEL 取代

  • SequentialChain 串行多步、RouterChain 按输入路由到不同子链

  • RetrievalQA 是 RAG 问答、ConversationChain 带记忆多轮对话

  • 2026 推荐:用 LCEL 管道组合 Runnable 替代具体 Chain 子类

标准回答

Chain(链)是 LangChain 的核心抽象:把一步或多步对 LLM 的调用以及前后处理串接成一个可复用、可调用的流程。

为什么需要 Chain

单次调用模型只能完成"输入 prompt → 输出文本"。但真实任务往往是多步的:先填模板、再调模型、再解析输出、可能还要先检索资料或先路由判断。Chain 把这些步骤封装成一个有明确输入输出的整体,可被复用、嵌套和组合。

常见类型

  • LLMChain:最基础的链,把"提示模板 + 模型"绑成一步调用,是其它复杂链的构件。注意:它已被 LCEL 的 prompt | model 写法取代。
  • SequentialChain:把多个子链按顺序串联,前一步输出作为后一步输入,适合"先总结再翻译再润色"这类多阶段流程。
  • RouterChain:根据输入内容动态路由到不同的子链,比如把数学问题、写作问题、代码问题分发给各自专精的提示与模型。
  • RetrievalQA:RAG 问答链,先从向量库检索相关文档,再把文档与问题拼进提示交给模型作答,是知识库问答的标准模式。
  • ConversationChain:带 Memory 的对话链,自动在每轮把历史上下文回填进提示,实现连贯多轮对话。

2026 现状

上述这些具体 Chain 子类多数已被标记为旧式用法。官方推荐改用 LCEL 用管道把 Runnable 组合起来:例如 RetrievalQA 现在写成 retriever | prompt | model | parser 风格的链;SequentialChain 直接用 | 顺序连接;路由用 RunnableBranch 表达。这样能复用 LCEL 统一的流式、异步、批量、重试与可观测能力,比硬编码 Chain 更灵活。所以回答时要点明"概念上叫 Chain,但落地优先用 LCEL 组合"。

常见误区

⚠️ 常见踩坑

把各种具体 Chain 类(如 LLMChain、RetrievalQA)当成必须记的"标准 API";2026 它们多已是旧式写法,面试更看重你理解 Chain 的编排思想并能用 LCEL 组合 Runnable 实现等价能力。

追问

追问 1SequentialChain 和直接用 LCEL 的 | 串联有什么区别?

本质都是顺序编排,但 LCEL 更轻量灵活。旧的 SequentialChain 需要显式声明每步的输入输出键名、做键映射,配置繁琐;LCEL 用 prompt | model | parser 直接以管道连接,上一步输出自动成为下一步输入,还顺带获得流式、异步、批量和重试能力。需要在步骤间重组数据时配合 RunnablePassthrough/字典即可,比 SequentialChain 的键映射直观得多。

追问 2RetrievalQA 链内部大致是怎么工作的?

先用检索器(基于向量库)对用户问题做相似度检索,取回 top-k 相关文档片段;再按某种"文档合并"策略(如 stuff 直接拼接、map_reduce 分别处理再汇总、refine 迭代精炼)把文档与问题填入提示模板;最后交给 LLM 生成带依据的答案。它本质就是 RAG 的标准封装,用 LCEL 重写时就是 retriever 取文档、与问题一起进 prompt、再过 model 和解析器。

追问 3路由(RouterChain)在 LCEL 里怎么实现?

用 RunnableBranch,按一组"条件 → 对应子链"规则匹配:可以先用一个轻量 LLM 或规则对输入分类,再根据分类结果路由到数学链、代码链或通用链。相比旧 RouterChain,LCEL 的分支写法把判断逻辑和子链都表达成 Runnable,组合统一、可观测,也更容易加默认兜底分支。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习