LangChain手记 Chains

整理并翻译自DeepLearning.AI×LangChain的官方课程:Chains(源代码可见)

Chains

直译链,表达的意思更像是对话链,对话链的背后是思维链

LLM Chain(LLM链)

首先介绍了一个最简单的例子,LLM Chain:

将一个大语言模型和prompt模板组合起来调用LLMChain,即可得到一个LLMChain对象,该对象的run实现的功能即给定输入自动使用prompt模板生成prompt,调用LLM得到回复。

Sequential Chains(顺序链)

顺序链是另外一种类型的链,它的基本思想是以一个链的输出是下一个链的输入这种方式组合的多个链。

目前有2种类型的顺序链:

  1. SimpleSequentialChain:单个输入/输出组合
  2. SequentialChain:多个输入输出组合

SimpleSequentialChain


调用SimpleSequentialChain,传入两个构建好的LLM Chain即可构建一个顺序链,第一个LLM Chain的输出是第二个LLM Chain的输入,同样也可以指定verbose=true将打印对话历史。

图示如下:

SequentialChain

第一个chain将review翻译为英文,第二个chain则提取摘要。

第三个chain识别review的类型。

第四个chain使用指定语言类型和摘要生成回复。

注意点是这些chain里面的变量名称要对齐,否则会报错。

即将构建的顺序链如下图所示:

运行一下:

结果:

视频可能看不太清楚,整条链的输入输出的依赖关系是依靠每一个子链都设置一个output_key,在下一个链的prompt模板里以{output_key}的形式指定来实现的,写python的朋友估计已经习以为常了,其他语言的小伙伴可能需要点时间思考,如下图:

Router Chain 路由链

先决定输入要分发到哪个子链,再分发到对应的子链:

定义回答多个学科的多个prompt模板:

为每个学科的prompt模板添加一些说明信息:

为了实现路由链,引入了MultiPromptChainLLMRouterChain

定义LLM,训练prompt模板列表,构建子链:

再构建一个默认链(用来兜底):

定义路由提示词模板:

定义路由链(注意output_parser指定的是RouterOutputParser对象):

现在,组合起来构建路由链:

python 复制代码
chain = MultiPromptChain(router_chain=router_chain, 
                         destination_chains=destination_chains, 
                         default_chain=default_chain, verbose=True
                        )

尝试运行一下物理题:

尝试运行一下数学题:

如果输入一个不属于路由内的学科,比如下面的生物,则会兜底走默认链,由于GPT也具备生物学知识,所以也可以给出有效回答:

相关推荐
giszz4 分钟前
AI比人脑更强,因为被植入思维模型【53】反熵增思维模型
人工智能
沐雪架构师4 分钟前
大模型分布式推理和量化部署
人工智能·语言模型
AIGC方案3 小时前
deepseek热度已过?
人工智能·大模型
88号技师3 小时前
模糊斜率熵Fuzzy Slope entropy+状态分类识别!2024年11月新作登上IEEE Trans顶刊
人工智能·机器学习·分类·数据挖掘·信号处理·故障诊断·信息熵
死磕代码程序媛3 小时前
谷歌25年春季新课:15小时速成机器学习
人工智能·机器学习
有Li4 小时前
弥合多层次差距:用于超声心动图中基于文本引导的标签高效分割的双向循环框架|文献速递-深度学习医疗AI最新文献
人工智能
橙色小博4 小时前
Transformer模型解析与实例:搭建一个自己的预测语言模型
人工智能·深度学习·神经网络·机器学习·transformer
意.远4 小时前
PyTorch实现二维卷积与边缘检测:从原理到实战
人工智能·pytorch·python·深度学习·神经网络·计算机视觉
电报号dapp1194 小时前
2025年智能合约玩法创新白皮书:九大核心模块与收益模型重构Web3经济范式
人工智能·重构·web3·去中心化·区块链·智能合约
三道杠卷胡5 小时前
【AI News | 20250411】每日AI进展
人工智能·python·计算机视觉·语言模型·aigc