RunnableSequence(SimpleSequentialChain 的现代替代品)
前置重要结论SimpleSequentialChain已经被官方标记 Deprecated废弃LangChain v0.1 推荐彻底迁移到RunnableSequenceLCEL 管道|它就是新版替代 SimpleSequentialChain 的标准实现。 旧版SimpleSequentialChain基于LLMChain 新版等价物RunnableSequenceLCEL 原生一、旧版 SimpleSequentialChain 原理回顾理解迁移必须看懂1. 核心定义SimpleSequentialChain单输入 → 单输出线性流水线执行规则初始输入传入第一条子链上一条链字符串输出直接作为下一条链{input}的输入所有子链只能接收单个变量链式传递字符串只支持LLMChain作为子单元不能直接放 Prompt、Parser、自定义函数。2. 旧版标准参数SimpleSequentialChain( chains[chain1, chain2, chain3], # 有序子链列表只能是 LLMChain verboseFalse, # 打印链路日志 strip_outputsFalse, # 自动修剪每一步首尾空白 input_keyinput, output_keyoutput )3. 旧版完整示例过时写法仅用于对比from langchain_openai import ChatOpenAI from langchain_core.prompts import PromptTemplate from langchain.chains import LLMChain, SimpleSequentialChain llm ChatOpenAI(modelgpt-4o-mini) # Step1根据主题写标题 prompt1 PromptTemplate.from_template(给{input}写一个吸引人文章标题) chain1 LLMChain(llmllm, promptprompt1) # Step2根据标题写简介 prompt2 PromptTemplate.from_template(根据标题{input}写一段100字简介) chain2 LLMChain(llmllm, promptprompt2) # 串联 seq_chain SimpleSequentialChain(chains[chain1, chain2], verboseTrue) result seq_chain.invoke({input: 人工智能发展趋势}) print(result[output])4. 旧版致命缺陷为什么被废弃强绑定 LLMChain无法直接串联输出解析器、自定义函数、Retriever只能传递纯字符串不支持字典多参数传递原生不支持流式 stream ()、batch ()组合能力弱很难和并行链、分支链嵌套样板代码极多可读性差不兼容 LangSmith 完整追踪、重试、回调高级特性。二、新版本RunnableSequenceSimpleSequentialChain 的现代替代品2.1 核心定位RunnableSequenceLCEL 标准顺序执行流水线对应旧概念SimpleSequentialChain单数据流串行 底层所有|管道运算符内部自动构造RunnableSequence执行模型相比旧版重大升级任意Runnable均可串联Prompt / ChatModel / Parser / RunnableLambda / 子 Chain / Retriever数据类型不再限制字符串dict 字典、字符串、对象自由流转统一接口invoke / stream / batch / ainvoke / astream开箱即用支持嵌套、并行混合、重试、fallback、中间日志数据流转规则r1 | r2 | r3r1 输出 → 传给 r2 输入r2 输出 → 传给 r3 输入2.2 三种创建 RunnableSequence 写法等价from langchain_core.runnables import RunnableSequence, RunnableLambda from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI from langchain_core.output_parsers import StrOutputParser llm ChatOpenAI(modelgpt-4o-mini) parser StrOutputParser() prompt1 PromptTemplate.from_template(给{topic}写吸引人标题) prompt2 PromptTemplate.from_template(根据标题{title}写100字简介) # --------------------------- # 写法1管道符 |【官方推荐最简】 # --------------------------- chain1 prompt1 | llm | parser # 注意chain1输出是字符串我们需要包装成字典喂给prompt2 full_chain chain1 | RunnableLambda(lambda title: {title: title}) | prompt2 | llm | parser # --------------------------- # 写法2显式构造 RunnableSequence # --------------------------- full_chain RunnableSequence( prompt1 | llm | parser, RunnableLambda(lambda title: {title: title}), prompt2 | llm | parser ) # --------------------------- # 写法3from_list 列表传入适合动态步骤数组 # --------------------------- steps [ prompt1 | llm | parser, RunnableLambda(lambda title: {title: title}), prompt2 | llm | parser ] full_chain RunnableSequence.from_list(steps) # 调用输入字典 res full_chain.invoke({topic: 人工智能发展趋势}) print(res)✅ 上面这段代码完全等价旧版 SimpleSequentialChain 业务逻辑。2.3 关键难点新旧数据格式差异90% 踩坑点旧 SimpleSequentialChain链输出字符串自动把字符串封装{input: xxx}传给下一条链内部隐式做了格式转换开发者无感新版 RunnableSequence不会自动包装字典完全显式流转如果前一步输出字符串下一步 Prompt 需要字典{key: value}必须手动用 RunnableLambda 转换# 典型转换模板 RunnableLambda(lambda text: {input: text})如果你想要复刻旧 SimpleSequentialChain 的自动转发行为加上这一层即可。2.4 RunnableSequence 常用内置能力旧版完全没有# 1. 流式输出原生支持 async for chunk in full_chain.astream({topic: 大模型应用}): print(chunk, end) # 2. 批量执行 full_chain.batch([{topic: 汽车}, {topic: 云计算}]) # 3. 添加重试策略 from langchain_core.runnables import RunnableRetry retry_chain full_chain.with_retry(max_attempts2) # 4. 获取链路图LangSmith可视化 full_chain.get_graph() # 5. pipe() 等价 | chainA.pipe(chainB).pipe(chainC)三、SimpleSequentialChain → RunnableSequence 迁移对照表表格特性SimpleSequentialChain旧RunnableSequence新版 LCEL子单元仅支持 LLMChain任意 RunnablePrompt、LLM、Parser、函数、检索器传递数据强制字符串自动封装 {input: str}str/dict/ 对象格式完全手动可控调用接口invoke /runrun 逐步废弃invoke / ainvoke / stream / astream / batch流式输出不原生支持原生支持组合嵌套困难只能链套链自由和 RunnableParallel、RunnableBranch 组合状态追踪简陋完整 LangSmith 追踪代码风格大量样板代码ABC 极简声明式维护状态Deprecated未来移除持续迭代LCEL 核心原语四、两种典型业务场景迁移模板场景 1复刻原版 SimpleSequentialChain 行为字符串自动传递旧逻辑A 输出字符串 → 自动作为下一级 {input}from langchain_core.runnables import RunnableSequence, RunnableLambda from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI from langchain_core.output_parsers import StrOutputParser llm ChatOpenAI(modelgpt-4o-mini) # 步骤1 step1 PromptTemplate.from_template(写{input}的标题) | llm | StrOutputParser() # 步骤2 step2 PromptTemplate.from_template(扩写{input}) | llm | StrOutputParser() # 模拟旧SimpleSequentialChain自动把字符串转为 {input: xxx} def wrap_input(text: str): return {input: text} seq RunnableSequence( step1, RunnableLambda(wrap_input), step2 ) result seq.invoke({input: 低碳经济}) print(result)场景 2进阶改进保留中间变量旧 SimpleSequentialChain 做不到旧链无法保存中间结果Runnable 搭配RunnablePassthrough轻松实现from langchain_core.runnables import RunnablePassthrough seq_advance ( PromptTemplate.from_template(写{topic}标题) | llm | StrOutputParser(), {title: RunnablePassthrough(), desc: PromptTemplate.from_template(简述 {}) | llm | parser} )五、常见坑汇总❌ 报错KeyError: input原因上一步输出字符串下一个 Prompt 期待字典缺少格式转换 ✅ 修复插入RunnableLambda(lambda s: {input: s})❌ 继续使用 LLMChain 搭建流水线 建议新版本直接抛弃 LLMChain使用prompt | model | parser原生写法❌ 混用旧链与 LCEL Runnable 可以临时兼容但长期全部统一为 LCEL 结构❌ 认为RunnableSequence.from_list([...])和管道符行为不一致 二者底层完全等价管道符更推荐日常开发。六、最终总结不要再新项目使用 SimpleSequentialChain官方废弃路线已定它的现代替代方案 RunnableSequence日常直接使用|LCEL 管道核心变化不再自动完成字符串→字典封装数据流显式可控换取极强灵活性旧单输入线性流水线通过增加一层RunnableLambda数据适配器即可无缝迁移。

相关新闻

KeyboardChatterBlocker:彻底告别键盘连击问题的终极解决方案

KeyboardChatterBlocker:彻底告别键盘连击问题的终极解决方案

KeyboardChatterBlocker:彻底告别键盘连击问题的终极解决方案 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是否曾经遇到…

2026/7/24 23:00:09 阅读更多 →
工具集(持续更新)

工具集(持续更新)

工具(持续更新)BSP-toolsSensorDumpDebug分区解包其他(free)DUMPlinux版本代码对比软件小游戏资源文件everything奇奇怪怪的工具网卡驱动BSP-tools Sensor 调试工具: 普通:可以查看硬件信息,sensor上报数…

2026/7/24 23:00:09 阅读更多 →
一文搞懂Token经济学:同样额度多干3倍活,只需理解消耗机制

一文搞懂Token经济学:同样额度多干3倍活,只需理解消耗机制

一文搞懂Token经济学:同样额度多干3倍活,只需理解消耗机制01 你的一句话背后:一次 API 调用到底发了什么1.1 Token 不是字数Token 是模型处理文本的最小单元。不同模型的 tokenizer 略有差异,以 Claude / GPT 系列为例的粗略换算&…

2026/7/24 23:00:09 阅读更多 →

最新新闻

HybridSim:用于毫米波人体感知的物理-学习混合数字孪生

HybridSim:用于毫米波人体感知的物理-学习混合数字孪生

大家读完觉得有帮助记得关注和点赞!!!摘要针对动态人体运动的高保真毫米波雷达信号仿真,对于开发基于雷达的人体感知模型非常有价值;然而,针对特定部署地点收集精确标注的测量数据仍然代价高昂。我们提出了…

2026/7/24 23:07:11 阅读更多 →
工业与AI融合应用 | 7大核心用例落地:AI如何破解半导体研发周期长、良率低难题

工业与AI融合应用 | 7大核心用例落地:AI如何破解半导体研发周期长、良率低难题

本文梳理了覆盖芯片设计、制造、测试全流程的7大AI高价值应用场景,包括AI辅助设计、工艺优化、良率分析等,并结合英伟达、英特尔等标杆案例,展示AI如何将芯片设计效率提升3倍、良率分析从数天缩短至分钟级。数据显示,AI可助力新材…

2026/7/24 23:07:11 阅读更多 →
Agentic AI核心技术解析与应用实践

Agentic AI核心技术解析与应用实践

1. 什么是Agentic AI?Agentic AI(自主智能体)是当前人工智能领域最前沿的研究方向之一,它指的是一类能够自主设定目标、制定计划并执行任务的智能系统。与传统的被动响应式AI不同,这些系统展现出类似"代理人"…

2026/7/24 23:07:11 阅读更多 →
内存管理(三)

内存管理(三)

引用计数的存储 在64位中,引用计数可以直接存储在优化过的isa指针中,也可能存储在SideTable类中。 isa指针中存储的什么东西,具体可以参考Runtime的本质(一) 在isa里面,有一个extra_rc参数 其中:rc就是retainCount引…

2026/7/24 23:07:11 阅读更多 →
如何用 AI 绘制宏大的战争/科幻背景,且不失细节?

如何用 AI 绘制宏大的战争/科幻背景,且不失细节?

在AI漫剧和概念原画的创作中,宏大的战争场面和复杂的科幻背景(如星际战舰群、万军对垒)是公认的“细节杀手”。如果直接用一句话描述去生图,AI 往往会顾此失失——要么远景飞船糊成一片,要么中景士兵沦为没有五官的“火…

2026/7/24 23:06:11 阅读更多 →
如何为你的 AI 漫剧设计一个让人一眼记住的“反派角色”?

如何为你的 AI 漫剧设计一个让人一眼记住的“反派角色”?

在 AI 漫剧和短视频的创作红海中,一个极具辨识度的“反派角色”往往比主角更能拉动完播率与互动量。然而,传统的 AI 生图很容易产生千篇一律的“网感反派”,缺乏个性和戏剧张力。为了打破这种套路,目前行业内的成熟做法是先利用 C…

2026/7/24 23:06:11 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻