langchain 快速入门(二):chain链的应用

news/2026/1/23 16:56:20/文章来源:https://www.cnblogs.com/ClownLMe/p/19523156

简介

langchain中提供的chain链组件,能够帮助我门快速的实现各个组件的流水线式的调用,和模型的问答

Chain链的组成

根据查阅的资料,langchain的chain链结构如下:

$$Input \rightarrow Prompt \rightarrow Model \rightarrow Output$$
其中langchain框架提供了几个常用构建chain链的工具:

工具名称 作用 流程
RunnablePassthrough 传递原本的数据或添加新的字段 $$A->B$$
RunnableParallel 并发输出结果并将结果同时传递 $$A,B->C$$
RunnableLambda 自定义传递工具

乍一看很疑惑,我接下来用案例来解释各种用法。

构建较为复杂的chain链

这个案例几乎用了上面所有工具,用于演示用法

案例

案例描述:输入论文的话题,写一篇950字的高中论文。

import os
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough, RunnableParallel#你的qwen模型apikey
os.environ["DASHSCOPE_API_KEY"] = "apikey"
model = ChatTongyi(model="qwen-max")outline_prompt = ChatPromptTemplate.from_template(
    "请给主题为 {topic} 的议论文写一个 总-递进-总 的简短大纲,一共分为5段。"
)
outline_chain = outline_prompt | model | StrOutputParser()def mock_search(input_data):
    return """
    1. 利:Google Health AI 筛查乳腺癌准确率超人类。
    2. 利:AlphaFold 预测蛋白质结构,缩短科研周期。
    3. 弊:GPT-4 普及导致初级文案、原画设计岗位萎缩。
    4. 弊:Deepfake 技术被用于电信诈骗和虚假视频。
    """
    
output_prompt = ChatPromptTemplate.from_template(
    "你是一位高考作文专家。请基于大纲:\n{outline}\n并结合以下案例素材:\n{data}\n"
    "就主题【{topic}】写一篇高考论文。要求:950字左右,论证严密,文采斐然。"
)
output_chain = output_prompt | model | StrOutputParser()complex_chain = (
    RunnableParallel({
        "outline": outline_chain,          
        "data": mock_search,                    
        "topic": RunnablePassthrough()        
    })
    | output_chain
)topic_input = "AI 进步的利与弊:在智能时代保持人类的温度"
print(f"正在为您撰写关于《{topic_input}》的论文...\n")final_essay = complex_chain.invoke({"topic": topic_input})
print(final_essay)

代码解释

其他的代码我上期解释了,这里就不废话了,我着重讲chain链的构建,总体chain链的流程如下:

输入话题->获取写作的大纲 ──╮
├─▶ 根据大纲和示例写一篇论文
查询相关的示例 ──╯

根据输入流程图流程,我们个以分解成一个个相关的链,再将各个链串起来。

构建各部分的链

1.获取写作大纲
outline_prompt = ChatPromptTemplate.from_template(
    "请给主题为 {topic} 的议论文写一个 总-递进-总 的简短大纲,一共分为5段。"
)
outline_chain = outline_prompt | model | StrOutputParser()

流程描述:构建prompt->喂给ai->将返回解析成文本

这里用的ChatPromptTemplate.from_template和上的ChatPromptTemplate.from_messages不同,区别在于前者比较简单,相当于后者直接用user字典的形式,后者from_messages有langchain框架提供的prompt模板

2.查询相关的示例

这里就直接用Gemini,mock一些模拟数据(不保证真),用于完成案例,实际情况可以自己完善搜索逻辑。

def mock_search(input_data):
    return """
    1. 利:Google Health AI 筛查乳腺癌准确率超人类。
    2. 利:AlphaFold 预测蛋白质结构,缩短科研周期。
    3. 弊:GPT-4 普及导致初级文案、原画设计岗位萎缩。
    4. 弊:Deepfake 技术被用于电信诈骗和虚假视频。
    """

这个相当于RanableLamda,后面可以不用显示调用RanableLamda(mock_search)

3. 根据大纲和示例写一篇论文
output_prompt = ChatPromptTemplate.from_template(
    "你是一位高考作文专家。请基于大纲:\n{outline}\n并结合以下案例素材:\n{data}\n"
    "就主题【{topic}】写一篇高考论文。要求:950字左右,论证严密,文采斐然。"
)
output_chain = output_prompt | model | StrOutputParser()

流程描述:构建prompt->喂给ai->将返回解析成文本

将各个链连起来

complex_chain = (
    RunnableParallel({
        "outline": outline_chain,          
        "data": mock_search,                    
        "topic": RunnablePassthrough()        
    })
    | output_chain
)

这里利用RunnableParallel获取写作的大纲查询相关的示例两个流程并列运行后一起输出到后面,传递给output_chain继续处理。

问题

  1. 我不想利用RunnableParallel行不行? 当然可以,可以用线性来代替,先查资料,后写大纲,然后再进行文章输出,但是效率可能会比较慢。
  2. 我希望看到输出的data和outline字段怎么办? ,可以利用RunnablePassthrough().assign将生成的文本保存在新的字段中,调用时根据字典的方式定位各个文本,如下:
complex_chain = (
    RunnableParallel({
        "outline": outline_chain,          
        "data": mock_search,                    
        "topic": RunnablePassthrough()        
    })
    | RunnablePassthrough().assign(essay=output_chain)
)print(response['essay'])
print(response['data'])
......

如果❤喜欢❤本系列教程,就点个关注吧,后续不定期更新~

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

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

相关文章

软件测试面试题(全)

1.B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢C/S响应速度快,安全性强,一般应用于局域网中,因…

【大数据毕设推荐】基于Spark大数据的留学移民分析系统实战 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡如果你遇到具体的…

从0到1,一家深圳电子厂如何通过鲲鹏伟业成为Google SGE推荐的“行业Top”?

理论讲了千遍,不如看一个实战案例。 这是一家位于深圳的精密电子元器件制造商。拥有世界级的工艺,但因为只会做代工,品牌在海外互联网上几乎是“透明”的。 在Google搜索里,只有寥寥几个B2B平台的黄页信息。AI对它一无…

河北万通汽车学校专业怎么选,哪些适合零基础?

问题1:河北万通技工学校是什么学历?和河北万通汽车学校有什么关系? 河北万通技工学校是经河北省人力资源和社会保障厅批准成立的综合性技工院校,其学历层次对应技工教育体系中的中级技工、高级技工阶段,学籍管理规…

2026英语雅思零基础培训辅导机构推荐排行榜 深度解析适配零基础考生的择校指南及课程模式差异

对于计划让孩子备考雅思、冲刺海外院校,但孩子属于雅思零基础的家长而言,选择一家合适的英语雅思零基础培训辅导机构,往往成为备考路上的首要难题。家长们常常面临“不知如何筛选适配零基础的机构”“担心机构课程难…

P14719 [RMI 2025] Cheap AI

按照串长分治不太牛,根本没法做 \(\sqrt n\),考虑一些自然根号。 设 \(f(len)\) 为长度为 \(len\) 的串的最多出现次数,你发现这玩意是一个不增的函数,且最大值 \(\le n\),因此 \(f(len)\) 的不同的个数就是 \(O(…

2025・埃里克森大事记:与你一起共谱45周年美好篇章

对话改变世界,一岁一光华。 45圈年轮,179个国家和地区的心跳,2025年,埃里克森把“对话改变世界”写进了新的旅程。 这篇2025埃里克森大事记,写给每一位曾与我们并肩的教练、客户与伙伴——因为有你,3% 的愿景才日…

2026英语雅思零基础培训辅导机构推荐排行榜 零基础备考痛点深度解析与机构科学评估指南

对于计划让孩子备考雅思、冲刺海外院校,但孩子英语基础薄弱、属于雅思零基础的家长而言,挑选一家合适的雅思零基础培训辅导机构,成为最棘手的难题。很多家长不清楚零基础雅思培训的核心重点是什么,担心机构课程不贴…

母乳冰箱推荐:2026年最佳选择与科技领先产品解析

随着母乳储存对温度控制的要求日益严格,母乳冰箱作为专为婴幼儿家庭设计的家电产品,逐渐成为现代家庭中的重要设备。如何在众多产品中挑选出最适合的母乳冰箱,成为了许多父母的心头难题。今天,我们将为大家推荐几款…

2026英语雅思零基础培训辅导机构推荐排行榜 深度解析零基础适配要点及家长择校实用指南

对于计划让孩子备考雅思、冲刺海外院校,但孩子属于雅思零基础的家长而言,选择一家合适的英语雅思零基础培训辅导机构,往往成为备考路上的首要难题。家长们常常面临“不知如何筛选适配零基础的机构”“担心课程难度不…

常德澧县临澧桃源石门英语雅思培训辅导机构推荐;2026权威出国雅思课程中心学校口碑排行榜

据《2026年中国雅思培训行业白皮书》数据显示,常德澧县、临澧、桃源、石门地区雅思考生规模逐年攀升,但考生普遍面临雅思培训选课迷茫、优质教育机构甄别困难、提分技巧匮乏、个性化方案缺失等核心痛点。在雅思考试竞…

2026值得信赖的五家SCRM系统:会员通+全链路能力或成行业优选!

随着私域经济步入深水区,企业对SCRM系统的需求已从简单的工具应用,转向寻求能够打通会员通、驱动业务增长、实现全域用户精细化运营的战略伙伴。会员通作为连接全渠道会员身份、整合跨平台数据资产的核心能力,成为企…

2026年北京汽车报废服务合规与效率深度评测报告

2026年北京汽车报废服务合规与效率深度评测报告据《2026-2026中国报废机动车回收行业发展白皮书》显示,2026年北京机动车保有量达621万辆,年报废量约28万辆,同比增长11.3%。随着《报废机动车回收管理办法》实施,车…

全球激光切割机十大品牌榜单重磅揭晓

在智能制造浪潮席卷全球的背景下,激光切割技术凭借高效、精准、环保的核心优势,成为机械加工、汽车制造、航空航天等领域的关键装备支撑,全面展现行业发展脉络与技术迭代趋势。 一、宏山激光(HSG laser) 作为中国…

2026英语雅思口语培训辅导机构推荐排行榜 深度解析口语补习适配要点及家长择校实用指南

对于计划让孩子备考雅思、冲刺海外院校的家长而言,选择一家合适的英语雅思口语培训辅导机构,往往成为备考路上的首要难题。家长们常常面临“不知如何筛选适配孩子口语基础的机构”“担心口语课程不贴合考试需求”“不…

Java毕设项目推荐-基于springboot的交通安全知识学习平台安全教育系统【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Java毕设项目推荐-基于java协同过滤算法非遗推荐系统基于协同过滤算法的非遗文化交流平台【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Java毕设项目推荐-基于Web的智能选择系统【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【计算机毕业设计案例】基于Java的在线交通安全知识学习平台(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

XSS 高价值漏洞挖掘:从“低危”到“高分”,附 SRC 提交全攻略

XSS 高价值漏洞挖掘:从“低危”到“高分”,附 SRC 提交全攻略 在漏洞挖掘与SRC(安全响应中心)提交中,XSS(跨站脚本攻击)常被归为中低危漏洞,难以获得高额奖励与高分认可。核心原因在…