LangChain Chains 组件详解

0 阅读4分钟

LangChain Chains 组件详解

在 LangChain 中,Chain 是把“模型能力”变成“工程能力”的核心组件

  • Prompt 决定模型怎么说
  • Model 决定能说什么
  • Chain 决定事情怎么做

如果没有 Chain,你只有一次模型调用;有了 Chain,你才拥有“流程”。


Chain 在整体架构中的位置

image.png

image.png

image.png

结构逻辑:

用户输入
   ↓
Prompt
   ↓
Model
   ↓
Chain(流程控制)
   ↓
输出

关键理解:Chain 是“可组合计算单元”、本质是:输入 → 处理 → 输出、可以嵌套、组合、并行


什么是 Chain(底层抽象)

在 LangChain 2.x 中,Chain 本质是一个:

Runnable

统一接口:

result = chain.invoke(input)

支持:invoke(单次)、batch(批量)、stream(流式)、async(异步)

这意味着:

Chain 是一个标准化可执行单元,而不是某个具体类。


最基础的 Chain:Prompt + Model

LCEL 写法

from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate

model = ChatOpenAI()
prompt = ChatPromptTemplate.from_template("解释:{topic}")

chain = prompt | model

result = chain.invoke({"topic": "什么是向量数据库?"})

执行过程:

变量填充
   ↓
生成 Prompt
   ↓
调用模型
   ↓
返回结果

这就是最基础的 Chain。


Chain 的常见类型

LLMChain

旧版本常见:

from langchain.chains import LLMChain

特点:包装 Prompt + LLM、结构固定、灵活性较低、现在推荐使用 LCEL 替代。


SequentialChain

多个步骤顺序执行。

步骤1:问题重写
   ↓
步骤2:知识检索
   ↓
步骤3:答案生成

LCEL 表达:

chain = rewrite_chain | retrieve_chain | answer_chain

典型场景:RAG、文档分析、数据处理


RouterChain

根据输入内容决定走哪条子链。

结构:

输入
  ↓
分类判断
  ↓
选择子链

示例场景:

  • 技术问题 → 技术回答链
  • 财务问题 → 财务回答链

这是“规则驱动”的轻量版 Agent。


Map-Reduce Chain

用于长文档处理。

image.png

image.png 流程:

文档分块
   ↓
每块单独生成摘要(Map)
   ↓
汇总所有摘要(Reduce)

适合:长文档总结、法律文件分析、报告汇总


RAG Chain 结构拆解

在生产环境中,RAG 几乎都是 Chain 实现。

image.png

image.png

image.png

完整流程:

用户问题
   ↓
查询重写
   ↓
向量检索
   ↓
文档过滤
   ↓
Prompt 构造
   ↓
模型生成

注意:检索部分是确定性流程、只有最后一步是模型生成

这也是为什么:

RAG 系统 80% 应该是 Chain


Chain 的高级能力

条件分支

from langchain_core.runnables import RunnableBranch

结构:

条件判断
  ↓
不同路径执行

适合:输入长度不同、不同问题类型、是否命中缓存


并行执行

from langchain_core.runnables import RunnableParallel

结构:

输入
   ↓
同时执行多个子链
   ↓
合并结果

场景:多路检索、多模型对比、多任务生成


流式处理

for chunk in chain.stream(input):
    print(chunk)

用于:实时问答、WebSocket 接口、前端渐进显示


Chain与 Agent

很多人误用 Agent,其实应该用 Chain。

区别:

Chain = 预定义流程
Agent = 动态决策流程

用 Chain 的情况

  • RAG
  • 数据管道
  • 结构化输出
  • 固定步骤任务

用 Agent 的情况

  • 工具选择不确定
  • 执行路径不固定
  • 需要多轮决策

经验:

只要流程能提前设计出来,就不要用 Agent。


生产环境设计原则

小链组合

不要写超大 Chain。

推荐:

小功能链
  ↓
组合成中链
  ↓
组合成主链

Chain 要可测试

  • 每个子链独立测试
  • 输入输出明确
  • 支持 Mock 模型

减少模型调用次数

模型调用:成本高、延迟高、不稳定、

尽量用:规则逻辑、向量检索、数据过滤、替代模型判断。


可观测性

使用:LangSmith、日志追踪、Token 统计。否则无法定位问题。


Chain 内部执行模型

你可以把 Chain 理解成:

函数式数据流图

每个节点:

  • 接收输入
  • 处理
  • 输出

多个节点:

  • 串联
  • 分支
  • 汇合

这本质上是“声明式流程编排”。


一个完整生产级示例结构

用户输入
   ↓
输入校验 Chain
   ↓
问题重写 Chain
   ↓
检索 Chain
   ↓
过滤 Chain
   ↓
回答生成 Chain
   ↓
格式校验 Chain
   ↓
输出

优势:

  • 可控
  • 可测试
  • 可扩展
  • 成本可预测

Chain 的核心价值:

  • 把随机模型行为嵌入确定性流程
  • 把复杂任务拆解成可执行单元
  • 提供可观测、可测试的结构

在真实生产系统中:

稳定性来自 Chain,而不是模型。

更多精彩内容请关注微信公众号 “学GIS的小宝同学”

qrcode_for_gh_c97ecdcb886c_344.jpg