LangChain实战 | 3分钟学会SequentialChain怎么传多个参数

在这里插入图片描述

SequentialChain参数传递,总结了以下四种类型

参数传递入参出参
一 对 一11
一 对 多1n
多 对 一n1
多 对 多nn

0.连接大模型

先选一个llm,参考这篇博客选择一个国内大模型
LangChain连接国内大模型测试|智谱ai、讯飞星火、通义千问

from langchain_community.chat_models import ChatZhipuAI
import os
os.environ["ZHIPUAI_API_KEY"] = "xx.xx"
llm = ChatZhipuAI(model="glm-4",temperature=0.5,
)

1. 一对一

from langchain import LLMChain
from langchain.prompts import ChatPromptTemplate
# Chain 介绍某朝代的某个历史人物
prompt1 = ChatPromptTemplate.from_template("请介绍一下{people}"
)
chain1 = LLMChain(llm=llm,prompt=prompt1,output_key="introduce")# SequentialChain,根据chains中每个独立chain对象,和chains中的顺序,决定参数的传递,获取最终的输出结果
overall_chain1 = SequentialChain(chains=[chain1],input_variables=["people"],output_variables=["introduce"],verbose=True
)
res1 = overall_chain1({"people":"多尔衮"})
res1

在这里插入图片描述

> Finished chain.
{‘people’: ‘多尔衮’,
introduce’: ‘多尔衮,全名爱新觉罗·多尔衮,是清朝初期的重要政治家和军事统帅,生于1612年11月17日,卒于1650年12月31日。他是清太祖努尔哈赤的第十四子,与皇太极是同父异母的兄弟,母亲是努尔哈赤的大妃阿巴亥。他的同母兄弟还包括英亲王阿济格和豫亲王多铎。\n\n多尔衮在1626年被封为贝勒,后来因为军功显著,又被封为和硕睿亲王。他的政治生涯充满波折。在他十五岁时,因皇太极的命令,其母阿巴亥被迫为努尔哈赤殉葬,这使得多尔衮失去了继承皇位的机会。\n\n尽管如此,多尔衮在军事上成就斐然。到了皇太极去世时,多尔衮和他的兄弟多铎控制了正白旗与镶白旗,拥有相当大的军事实力。当时,他与皇太极的长子豪格争夺皇位,尽管豪格继承了正黄旗、镶黄旗和正蓝旗,但多尔衮凭借其政治手腕,使豪格未能继位。由于害怕两黄旗的势力,多尔衮也没有自己登基,而是选择支持皇太极的第九子福临,即后来的顺治帝,与郑亲王济尔哈朗共同辅政,实际掌握了朝中大权。\n\n在多尔衮摄政期间,清军入关,打败了李自成等农民军,统一了中国,奠定了清朝在中国近300年统治的基础。顺治帝对他的称呼从“叔父摄政王”逐渐变为“皇父摄政王”,显示了他在朝中的崇高地位。\n\n多尔衮的个人生活奢侈,酷爱狩猎,拥有大量猎鹰。然而,他在顺治七年(1651年)因狩猎坠马去世,享年39岁。死后,由于被顺治帝认为独断专行,并与其母孝庄皇太后的关系引发争议,他的封号一度被剥夺,坟墓被掘。直到乾隆年间,他的名誉才得到恢复,被封号恢复为睿亲王。\n\n总体来说,多尔衮是清朝早期举足轻重的人物,他在军事和政治上的成就对清朝的稳固和发展起到了关键作用。’}

2. 一对多

# 定义第一个链:介绍某朝代的某个历史人物
prompt1 = ChatPromptTemplate.from_template("请介绍一下{people}"
)
chain1 = LLMChain(llm=llm, prompt=prompt1, output_key="introduce")# 定义第二个链:提供该历史人物的生平年份
prompt2 = ChatPromptTemplate.from_template("请提供{people}的生平年份"
)
chain2 = LLMChain(llm=llm, prompt=prompt2, output_key="birth_and_death")# 创建 SequentialChain,其中输入是 "people",输出是 "introduce" 和 "birth_and_death"
overall_chain2 = SequentialChain(chains=[chain1, chain2],  # 两个链的顺序input_variables=["people"],  # 输入变量output_variables=["introduce", "birth_and_death"],  # 输出变量verbose=True
)# 运行链,输入一个历史人物的名字
res2 = overall_chain2({"people":"多尔衮"})
res2

在这里插入图片描述

{‘people’: ‘多尔衮’,
introduce’: ‘多尔衮,全名爱新觉罗·多尔衮,是清朝初期的重要政治家和军事统帅,生于明万历四十年(1612年),卒于清顺治七年(1650年)。他是清太祖努尔哈赤的第十四子,母亲是努尔哈赤的大妃阿巴亥,与英亲王阿济格和豫亲王多铎为同母兄弟。\n\n多尔衮自幼便展现出过人的才智和勇敢,在努尔哈赤晚年时期,他已经开始参与国政。天命五年(1620年),年仅八岁的多尔衮被努尔哈赤提拔为和硕额真,参与共议国政,这在当时是一个重大的政治行动。\n\n在皇太极时期,多尔衮因军功被封为贝勒,后因其母阿巴亥被迫为努尔哈赤殉葬,多尔衮丧失了继承大统的资格。尽管如此,他并未因此退出政治舞台,反而以军功显赫,最终被封为和硕睿亲王。\n\n皇太极去世后,多尔衮面临了一场激烈的权力斗争。他本有实力与皇太极的长子豪格争夺皇位,但最终选择了一个更为稳妥的策略:扶持皇太极的第九子、年仅六岁的福临即位,即后来的顺治帝。多尔衮与郑亲王济尔哈朗共同辅政,实际上掌握了朝中大权。\n\n在多尔衮的摄政时期,清军入关,打败了李自成的农民军,进而统一了中国,为清朝在中国近三百年的统治奠定了基础。顺治帝对他的称呼也由最初的“叔父摄政王”逐渐变为“皇叔父摄政王”,最后尊称为“皇父摄政王”,显示了多尔衮权势的顶峰。\n\n多尔衮个人爱好打猎,其府邸豪华,生活奢侈,在当时极为显赫。他的政治才能和军事指挥能力,为清朝初期的稳定与发展作出了重要贡献。\n\n然而,多尔衮在顺治七年(1650年)去世后,由于政治斗争,他的形象一度被抹黑,家族受到打压。但在后来的历史评价中,他的贡献与地位得到了恢复和肯定。’,
birth_and_death’: ‘多尔衮的生平年份如下:\n\n- 1612年11月17日,明万历四十年,多尔衮出生。\n- 1626年,天命十一年,被封为贝勒。\n- 1628年,天聪二年,17岁的多尔衮开始参与军事行动。\n- 1635年,天聪九年,因军功显著,招降蒙古林丹汗之子额哲。\n- 1636年,崇德元年,因战功被封为和硕睿亲王。\n- 1644年,顺治元年,指挥清军入关,辅佐福临即帝位,成为摄政王。\n- 1650年12月31日,顺治七年,多尔衮在塞北狩猎途中去世。\n- 1651年,顺治八年,多尔衮被剥夺封号。 \n\n这些年份概括了多尔衮从出生到去世的重要生平节点。’}

3. 多对一

# 定义第一个链:介绍某朝代的某个历史人物
prompt3 = ChatPromptTemplate.from_template("请介绍一下{reign}的{people}"
)
chain3 = LLMChain(llm=llm, prompt=prompt1, output_key="introduce")# 创建 SequentialChain,其中输入是 "reign"和"people",输出是 "introduce"
overall_chain3 = SequentialChain(chains=[chain3],  # 两个链的顺序input_variables=["reign","people"],  # 输入变量output_variables=["introduce"],  # 输出变量verbose=True
)# 运行链,输入一个历史人物的名字
res3 = overall_chain3({"reign":"清朝","people":"多尔衮",}
)
res3

在这里插入图片描述

{‘people’: ‘多尔衮’,
reign’: ‘清朝’,
introduce’: ‘多尔衮,全名爱新觉罗·多尔衮,是清朝初期的重要政治家和军事统帅,生于明万历四十年(1612年)十月二十五日,卒于清顺治六年(1650年)十二月三十一日。他是清太祖努尔哈赤的第十四子,母亲是努尔哈赤的大妃阿巴亥。\n\n多尔衮从小就生活在政治斗争的漩涡之中。在他还不满百日的时候,努尔哈赤就率军灭亡了其母的母国乌拉,使多尔衮母子面临极大的政治压力。但由于努尔哈赤对降顺者的优待政策以及阿巴亥的智谋,他们最终安然无恙。\n\n公元1616年,努尔哈赤建立后金国,多尔衮虽年纪轻轻,但在天命五年(1620年)已跻身参与国政的和硕额真行列,显示出其政治地位的重要性。1626年,他被封为贝勒。\n\n在皇太极时代,多尔衮因军功显赫被封为和硕睿亲王。在皇太极去世后,多尔衮失去了继承大统的机会,因为皇太极迫使其母阿巴亥为努尔哈赤殉葬,这使他无法继承皇位。尽管如此,他在军事上的成就依然卓越。\n\n在皇位继承问题上,多尔衮有足够的实力与皇太极的长子豪格争夺汗位,但他最终选择不直接继位,而是扶持皇太极的九子福临,即后来的顺治帝,入主皇位。当时福临年仅六岁,多尔衮与郑亲王济尔哈朗共同辅政,实际上掌握了朝中大权。\n\n多尔衮的摄政时期对清朝的发展具有决定性意义,在这一时期,清军入关,满清开始统治中原,奠定了近300年的统治基础。顺治帝对他的称呼从“叔父摄政王”逐渐演变为“皇叔父摄政王”,最后定为“皇父摄政王”,显示了他在朝中的极高地位。\n\n多尔衮个人爱好打猎,有着极其奢华的生活,其府邸建筑宏伟,生活用品极尽奢华。他的政治才能和军事贡献,为清朝的稳固和发展起到了重要作用。’}

4.多对多

# 定义第一个链:介绍某朝代的某个历史人物
prompt3 = ChatPromptTemplate.from_template("请介绍一下{reign}的{people}"
)
chain3 = LLMChain(llm=llm, prompt=prompt1, output_key="introduce")# 定义第二个链:提供该历史人物的生平年份
prompt4 = ChatPromptTemplate.from_template("请提供{people}的生平年份"
)
chain4 = LLMChain(llm=llm, prompt=prompt2, output_key="birth_and_death")# 创建 SequentialChain,其中输入是 "reign"和"people",输出是 "introduce"
overall_chain4 = SequentialChain(chains=[chain3,chain4],  # 两个链的顺序input_variables=["reign","people"],  # 输入变量output_variables=["introduce","birth_and_death"],  # 输出变量verbose=True
)# 运行链,输入一个历史人物的名字
res4 = overall_chain4({"reign":"清朝","people":"多尔衮",}
)
res4

在这里插入图片描述

{‘reign’: ‘清朝’,
people’: ‘多尔衮’,
introduce’: ‘多尔衮,满洲爱新觉罗氏,是清朝初期的重要政治家和军事统帅,生于明万历四十年(1612年),卒于清顺治七年(1650年)。他是清太祖努尔哈赤的第十四子,母亲是努尔哈赤的大妃阿巴亥,与英亲王阿济格和豫亲王多铎为同母兄弟。\n\n多尔衮自幼聪慧,八岁时即参与国政,成为和硕额真(即亲王)之一。在努尔哈赤建立后金国时,他虽年纪轻轻,但已被纳入参预国政的行列,显示出其政治地位的重要性。\n\n天聪二年(1628年),多尔衮被封为贝勒,但在其十五岁时,因皇太极的命令,其母阿巴亥被迫为努尔哈赤殉葬,这使得多尔衮失去了继承皇位的机会。尽管如此,他并未因此消沉,反而以军功显赫,多次参与对抗明朝的战役,并取得显著成就。\n\n多尔衮在军事上的表现尤为突出,他掌管正白旗与镶白旗,拥有相当数量的兵力。在皇太极去世后,多尔衮有足够的力量与皇太极的长子豪格争夺皇位,但最终他选择了扶持皇太极的九子福临即位,即后来的顺治帝。福临年幼,多尔衮与郑亲王济尔哈朗共同辅政,实际上掌握了朝中大权。\n\n在多尔衮摄政期间,清军入关,打败李自成,定都北京,开始了清朝在中国近三百年的统治。他的政治才能和军事手腕对清朝的建立和稳固起到了决定性的作用。\n\n多尔衮的个人生活奢侈,爱好打猎,其府邸豪华,生活排场盛大。在顺治帝时期,他的地位不断提升,从“叔父摄政王”到“皇叔父摄政王”,最后被称为“皇父摄政王”,显示了他在朝中的无上权威。\n\n总的来说,多尔衮是清朝早期杰出的政治和军事领导人,他的贡献对清朝的发展和中国历史的进程产生了深远影响。’,
birth_and_death’: ‘多尔衮的生平年份如下:\n\n- 1612年11月17日(明万历四十年),多尔衮出生。\n- 1626年(后金天命十一年),被封为贝勒。\n- 1628年(后金天聪二年),17岁的多尔衮开始参与军事行动。\n- 1635年(后金天聪九年),参与收降蒙古林丹汗之子额哲等行动。\n- 1636年(后金崇德元年),因战功封为和硕睿亲王。\n- 1644年(清顺治元年),指挥清军入关,协助清朝入主中原。\n- 1650年12月31日(清顺治七年),多尔衮在塞北狩猎途中去世。\n- 1651年(清顺治八年),多尔衮被剥夺封号。’}

根据官网demo提示,传参用({})字典格式,四种形式参数传递都适用。
否则会遇到TypeError错误,见参考链接2

参考

  1. LangChain 🦜️🔗 中文网-顺序(Sequential)链
  2. 完美解决TypeError: Chain.call() got an unexpected keyword argument

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/842910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络侦察技术

网络侦察技术 收集的信息网络侦察步骤搜索引擎检索命令bing搜索引擎Baidu搜索引擎Shodan钟馗之眼(zoomeye) whois数据库:信息宝库查询注册资料 域名系统网络拓扑社交网络跨域拓展攻击 其它侦察手段社会工程学社会工程学常见形式Web网站查询 其它非技术侦察手段总结网…

巅峰对决:OpenAI与Google如何用大模型开创未来

2024年,人工智能领域正引领着一场波澜壮阔的全球技术革命。 5月14日,OpenAI揭开了其新一代多模态人工智能大模型GPT4系列的神秘面纱,其中GPT-4o不仅拥有流畅迷人的嗓音,还展现出幽默、机智和深刻的洞察力……紧接着,在…

linux下cp和mv命令显示进度条

1.查看当前系统下coreutils工具包的版本号: [rootk8s-master ~]# rpm -qa | grep -w coreutils coreutils-8.22-24.el7_9.2.x86_64当前版本为8.22。 因为cp 和 mv 命令由 coreutils 软件包提供,所以需要重新下载 coreutils 软件包配置补丁 2.下载core…

数据结构——顺序表基本操作的实现(初始化、取值、查找、插入)

一、线性表与顺序表的概述 线性表的数据元素的逻辑特征是线性的,是一种典型的线性结构。这样的结构可以借鉴数组,如数组a[10]中,a[1]前一定是a[0],a[1]后一定是a[2],首结点(a[0])前面无元素&am…

java医院管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的医院管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 医院管理系统的主要使用者分…

VR法治教育展厅互动体验突破了地域限制

VR全景互动展厅搭建编辑器以其卓越的特点、强大的功能及实际应用中的显著优势,成为企业级VR应用的得力助手。这款软件不仅能够制作逼真的虚拟场景,更能让用户沉浸其中,体验前所未有的真实感。 它拥有高度逼真的视觉效果,采用先进的…

智能单款计划助力品牌利润增长

零售品牌若要在激烈的市场竞争中胜出,季中单款的管理无疑是商品生命周期管理的核心环节之一。而单款计划的制定,首先依赖于对爆款、平销及滞销产品的敏锐洞察。一个利润现象不得不引起我们的关注:爆款产品的销售,往往成为拉动品牌…

svix - webhooks

文章目录 一、关于 SvixClient Library Overview与 Svix 托管服务的区别 二、运行服务器1、部署1.1 Docker1) 使用 Docker Compose2) 独立容器 1.2 预编译的二进制文件1.3 从源代码构建 2、运行时依赖项3、Redis/Valkey 注意事项持久性 Eviction 政策4、服务器配置4.1 配置文件…

express.js--生成token(二)

主要作用是访问路由接口时,生成身份权限信息 下载依赖 npm i express-jwt npm i jsonwebtoken 配置管理 config/index.js module.exports {app: {port: process.PORT || 3000,//jwt密钥jwtSecret: jwtSecret,//token过期时间expiresIn: 60 * 60 * 24,} } con…

从零开始:如何集成美颜SDK和优化美颜接口

今天,小编将从零开始,详细讲解如何集成SDK并优化美颜接口。 一、选择合适的美颜SDK 评估SDK的功能 在评估过程中,可以通过阅读官方文档、查看示例代码以及实际测试来确定SDK是否符合需求。 兼容性和性能 确保其支持你开发的应用平台&…

Android15 Beta更新速览

Android15 Beta更新速览 前台服务变更 前台服务使应用保持活动状态,以便它们可以执行关键且对用户可见的操作,通常以牺牲电池寿命为代价。在 Android 15 Beta 2 中,dataSync 和 mediaProcessing 前台服务类型现在具有约 6 小时的超时时间&a…

内网安全--隧道技术-CS上线本地

免责声明:本文仅做技术交流与学习...请勿非法搞破坏... ---隧道技术:硬刚网络协议,(你不让我走我偏走!) 解决不出网协议上线的问题(利用出网协议进行封装出网) 代理协议: SOCKS4/5 代理软件: SocksCap Proxifier ProxyChains(…

磁盘管理以及文件系统08

1、为什么要对磁盘进行分区? 业务层面:为满足一定的需求所是做的特定操作。 2、硬盘是什么,以及硬盘的作用 硬盘:计算机的存储设备,一个或者多个带磁性的盘组成的,可以在盘片上进行数据的读写。硬盘的最…

LVGL圆弧、线条、图片、色环、按钮矩阵、文本区域、键盘部件

目录 LVGL圆弧部件 LVGL线条部件 LVGL图片部件 LVGL色环部件 LVGL按钮矩阵部件 LVGL文本区域部件 LVGL键盘部件 LVGL圆弧部件 圆弧部件以弧形滑动的形式来调节、显示某个参数的值。 圆弧部件组成部分: 背景弧(LV_PART_MAIN) 前景弧&am…

浏览器提示网站不安全怎么办?有什么解决办法吗?

当你在浏览器中访问一个网站时,如果看到提示说该网站不安全,这通常是由于网站没有使用SSL证书或者SSL证书存在问题。SSL证书在这里扮演着非常关键的角色,下面我会详细解释它的作用以及如何解决这类不安全提示。 SSL证书的作用: 1…

【CTF Web】CTFShow web11 Writeup(RCE+PHP+代码审计)

web11 1 阿呆听完自己菜死了&#xff0c;自己呆了。决定修好漏洞&#xff0c;绝对不能让自己再菜死了。 解法 可知 flag 在 config.php。 <?php # flag in config.php include("config.php"); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/system…

WorldSpace下的合批策略与ScreenSpace有什么区别

1&#xff09;WorldSpace下的合批策略与ScreenSpace有什么区别 2&#xff09;在iOS上用Metal取代OpenGL的多么 3&#xff09;在动画蓝图中将两个或多个动画同时融合到同一个网格 4&#xff09;Mipmap如何限定层级 这是第387篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的…

java面对对象编程-多态

介绍 方法的多态 多态是在继承&#xff0c;重载&#xff0c;重写的基础上实现的 我们可以看看这个代码 package b;public class main_ {public static void main(String[] args) { // graduate granew graduate(); // gra.cry();//这个时候&#xff0c;子类的cry方法就重写…

结合Django和Vue.js构建现代Web应用

文章目录 1. 创建Django项目2. 配置Django后端3. 创建Vue.js前端4. 连接Django和Vue.js5. 构建和部署 在现代Web开发中&#xff0c;结合后端框架和前端框架是非常常见的&#xff0c;其中Django作为一种流行的Python后端框架&#xff0c;而Vue.js则是一种灵活强大的前端框架。本…

仿冒、钓鱼、入侵……警惕邮件安全这些“坑”

为了保证用户对电子邮箱系统的安全使用&#xff0c;保证个人的隐私和财产的安全&#xff0c;我们呼吁每个人都要加强自己的网络安全意识&#xff0c;在对电子邮件进行处理的时候&#xff0c;要对钓鱼邮件进行认真的识别&#xff0c;同时还需要设定一个客户的密码来保证你的邮箱…