7. LangChain链式调用1

概念 作用 特点 LangChain 实现
Chain 单个处理单元 接收输入、生成输出 LLMChain、TransformChain
Pipe/Filter 多个处理单元的组合 串联处理数据,每个 Filter 做单一任务 SequentialChain、SimpleSequentialChain
  • Chain 是基本单元,每个链可以是 LLM、工具调用、解析等。
  • Pipe/Filter 是组合模式,把多个 Chain 串成一个完整流程。

7.1 Chain 基础

1.定义

在 LangChain 中,Chain 是一系列操作(通常是调用 LLM、检索、解析等)按顺序执行的封装。每个 Chain 可以接收输入,处理后输出给下一个 Chain,形成“链式调用”。

2.特点

  • 每个 Chain 有明确的输入/输出接口。
  • 可组合不同类型的操作:PromptTemplate、LLM、工具(Tool)、检索器(Retriever)。
  • 支持嵌套 Chain(一个 Chain 的输出可以作为另一个 Chain 的输入)。

3.示意

输入数据 -> Chain1(预处理) -> Chain2(LLM生成) -> Chain3(后处理) -> 输出

4.示例(Python)

from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate

llm = OpenAI(temperature=0)

template = "请将以下文本翻译成英文:{text}"
prompt = PromptTemplate(template=template, input_variables=["text"])

chain = LLMChain(llm=llm, prompt=prompt)

result = chain.run("逢人不说人间事,便是世间无事人")
print(result)

这里 LLMChain 就是一个简单的 Chain,把输入文本通过 LLM 转成英文。


7.2 Pipe/Filter Pattern

(管道/过滤器模式)

1.定义

Pipe/Filter 是一种软件设计模式,把复杂任务拆分成多个小处理单元(Filter),通过管道(Pipe)顺序传递数据,每个 Filter 只做一件事。

2.特点

  • 单一职责:每个 Filter 只做一个小操作(如清洗文本、提取关键词、调用 LLM)。
  • 可组合:多个 Filter 串联形成完整处理流程。
  • 灵活扩展:新增 Filter 不影响其他 Filter。

与 LangChain Chain 的关系

  • 在 LangChain 中,Chain 可以看作 Pipe/Filter 的实现方式。
  • 每个 Chain 类似 Filter,ChainList/SequentialChain 则类似 Pipe,将多个 Filter 串联。

3.示意

数据 -> Filter1(清洗) -> Filter2(LLM生成) -> Filter3(格式化) -> 输出

4.示例(Python)

from langchain.chains import SequentialChain, LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate

llm = OpenAI(temperature=0)

# 1. 翻译
template1 = "将下面这段中文翻译成英文:\\n{text}"
prompt1 = PromptTemplate(template=template1, input_variables=["text"])
chain1 = LLMChain(llm=llm, prompt=prompt1, output_key="translation")

# 2. 总结
template2 = "请根据以下英文内容,用一句话总结其核心情感:\\n{translation}"
prompt2 = PromptTemplate(template=template2, input_variables=["translation"])
chain2 = LLMChain(llm=llm, prompt=prompt2, output_key="summary")

# 串联
pipe = SequentialChain(
    chains=[chain1, chain2],
    input_variables=["text"],
    output_variables=["translation", "summary"]
)

result = pipe.invoke({
    "text": "花藤缠绕几行,欣喜后待开放;浅浅路过一趟,却扎根在我左心房;为了你亦步亦趋,像是陷阱;留我沉入了湖底,不愿苏醒;抛开无关的犹豫;如果能拥抱你,让我再相爱一场;头顶着月光,跟你去流浪;我千万次想象,千万次模仿;思念的形状,想在你身旁;陪你等天亮,独占你目光;我千万次想象,千万种模样;还是只能,停在你的脸庞;"
})

print(result)

这里 SequentialChain 就是 Pipe/Filter 模式的实现:

  • chain1 → 翻译

  • chain2 → 总结

    数据通过管道顺序处理。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐