大模型应用开发(十二)_LangChain链式调用1
大模型应用开发(十二)_LangChain链式调用1
·
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→ 总结数据通过管道顺序处理。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)