【LangChain实战】彻底搞懂 Runnable 与 LCEL:从基础单链到 RAG 复杂管道
在构建基于大语言模型LLM的应用时我们经常需要处理Prompt 模板、Chat Model、Output Parser以及Retriever等核心组件。如果每次都通过手动一步步调用这些组件代码不仅啰嗦还难以维护和复用。为了解决这个问题LangChain 引入了LCELLangChain Expression Language和Runnable协议让组件组合就像 UNIX 管道符|一样优雅直观。本文将从基础概念出发通过多个实战案例手把手带你掌握 LCEL 的核心用法。1. 什么是 Runnable在 LangChain 中Runnable是所有可执行和可组合组件的基础接口Protocol。我们常用的许多组件本身就是 Runnable 协议的实现PromptTemplateChatModelOutputParserRetriever所有 Runnable 组件都继承了一套统一的操作方法方法作用说明invoke处理单条输入最基础的同步调用batch批量处理多条输入并发调用适合批处理任务stream流式返回结果逐字/逐块输出常用于流式打字机效果ainvoke/abatch异步版本适用于 FastAPI 等异步 Web 框架2. 什么是 LCELLCELLangChain Expression LanguageLangChain 表达式语言是 LangChain 提供的一种声明式组合组件的方式。只要两个组件都实现了Runnable接口就可以通过管道符|连接成一条执行链ChainPythonchain prompt | model | parser数据会按照管道顺序流动输入传给 Prompt 模板生成提示词提示词送入 LLM 模型模型输出结果再由 Output Parser 进行格式化。原生 Python vs LCEL 对比传统逐步调用方式Python# 1. 格式化 Prompt prompt_value prompt.invoke({topic: AI}) # 2. 调用模型 model_output model.invoke(prompt_value) # 3. 解析输出 result parser.invoke(model_output)使用 LCEL 管道写法Pythonchain prompt | model | parser result chain.invoke({topic: AI})LCEL 的优势代码极简结构直观大幅减少冗余代码。自动支持高级能力只要一条 Chain 组装完成它自动继承invoke、batch、stream以及异步接口。方便复用复杂 Chain 可以作为子链嵌套进更大的 Chain 中。3. LCEL 基础三大调用模式3.1invoke单条同步调用适合用户单次提问、生成单份文档或分析单条数据的场景。Pythonfrom langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_openai import ChatOpenAI prompt ChatPromptTemplate.from_template(请用简明易懂的话解释技术概念{concept}) model ChatOpenAI(modelgpt-4o-mini) parser StrOutputParser() # 组装 Chain chain prompt | model | parser # 传入字典单次调用 response chain.invoke({concept: 向量数据库}) print(response)3.2batch并发批量处理当需要对批量数据如多条评论分类、批量提取简历信息进行处理时使用batch能够大幅提升效率。Python# 批量传入参数列表 inputs [ {product: 无线蓝牙耳机, feature: 降噪、长续航}, {product: 人体工学椅, feature: 腰靠调节、透气网布}, {product: 机械键盘, feature: 热插拔、三模连接} ] # 通过 max_concurrency 限制最大并发数防止触发 Rate Limit results chain.batch(inputs, config{max_concurrency: 2}) for item, res in zip(inputs, results): print(f【{item[product]}】: {res}\n)提示通过config{max_concurrency: N}可以有效限制并发请求数避免触发 API 频控限制Too Many Requests。3.3stream打字机流式输出用于构建 ChatBot 或实时生成长文实现前端打字机效果。Python# 单次调用实现流式输出 for chunk in chain.stream({concept: LCEL 表达式语言}): print(chunk, end, flushTrue)注意在终端打印时加上flushTrue可以防止缓冲区堆积导致文本一次性“蹦出”确保逐字平滑渲染。4. 进阶组件与复杂链构造除了标准的 Prompt、Model、ParserLangChain 还提供了几种特殊的 Runnable 工具用来处理更复杂的业务逻辑。4.1RunnableLambda接入自定义 Python 函数业务开发中我们经常需要在送入 Prompt 前对输入数据进行清洗或预处理。使用RunnableLambda可以无缝将普通 Python 函数打包为标准 Runnable。Pythonfrom langchain_core.runnables import RunnableLambda def clean_input(text: str) - str: 清除首尾空格并转为小写 return text.strip().lower() # 将函数包裹为 Runnable clean_step RunnableLambda(clean_input) # 加入管道数据先经过 clean_step 清洗再传递给后续组件 chain clean_step | prompt | model | parser4.2RunnableParallel多任务并行分支如果需要把同一个输入同时投递给多个处理分支并发执行例如对一条用户评论同时做“情感分析”、“提取关键词”和“自动回复”可以使用RunnableParallel。Pythonfrom langchain_core.runnables import RunnableParallel # 定义三条独立的子链 sentiment_chain sentiment_prompt | model | parser keywords_chain keywords_prompt | model | parser reply_chain reply_prompt | model | parser # 使用 RunnableParallel 并行组合 analysis_pipeline RunnableParallel({ sentiment: sentiment_chain, keywords: keywords_chain, reply: reply_chain }) # 执行分析 result analysis_pipeline.invoke({review: 这款手机屏幕很清晰但是电池续航太差了})执行机制解析同一个输入会同时分发给三条子链。内部并发执行总耗时大约等于最慢的分支耗时而不是各分支耗时相加。最终返回一个字典Key 为分支名称Value 为对应分支的输出结果。5. RAG 核心神器RunnablePassthrough在构建检索增强生成RAG管道时我们常面临一个难题如何既将用户问题送去检索上下文context又将原始问题question原封不动传递给 Prompt 模板RunnablePassthrough就是专门用来解决数据透传与追加的。用法 1原样透传RunnablePassthrough()当管道遇到{ key: Runnable... }字典字面量时LangChain 会自动将其包装为RunnableParallelPythonfrom langchain_core.runnables import RunnablePassthrough # 组合 RAG 链 rag_chain ( { context: retriever | format_docs, # 检索知识库并格式化 question: RunnablePassthrough() # 原样透传用户输入的问题 } | prompt | model | parser ) rag_chain.invoke(什么是 LCEL)用法 2保留原数据并追加新字段.assign()在实际业务中我们往往想保留原始字典如{question: ...}同时新增清洗后的字段或检索到的上下文。使用RunnablePassthrough.assign()可以避免手动繁琐拼接字典Pythondef clean_question(input_dict: dict) - str: return input_dict[question].strip().upper() def mock_retriever(question: str) - str: return f关于【{question}】的相关知识库文档内容... # 使用 assign 追加新字段 processing_chain RunnablePassthrough.assign( clean_qRunnableLambda(clean_question), contextlambda d: mock_retriever(d[question]) ) # 测试执行 output processing_chain.invoke({question: 介绍 assign 用法 }) print(output)assign输出结果JSON{ question: 介绍 assign 用法 , // 1. 保留原始字段 clean_q: 介绍 ASSIGN 用法, // 2. 追加清洗后的新字段 context: 关于【介绍 assign 用法】的相关知识库文档内容... // 3. 追加检索结果 }6. 总结与核心记忆点掌握 LCEL是进阶 LangChain 高级开发如 LangGraph、复杂 RAG 智能体的必经之路。建议重点记住以下核心口诀一切皆 RunnablePrompt、Model、Parser、Retriever 都是 Runnable。|连接万物用管道符组合单链数据自左向右单向流动。接口高度统一单条用invoke批量用batch实时用stream。灵活调度工具自定义逻辑用RunnableLambda多任务并行用RunnableParallel数据透传与字段追加用RunnablePassthrough和assign()。

相关新闻

A05 | 硬件安全指标体系:PMHF、SPFM、LFM 三大指标的本质与计算

A05 | 硬件安全指标体系:PMHF、SPFM、LFM 三大指标的本质与计算

1. 开篇——一个数字决定的命运2020 年,某国内 Tier 1 供应商的制动 ECU 项目进入最终评审阶段。硬件设计团队信心满满——原理图评审通过、EMC 测试通过、环境可靠性测试通过。然而在功能安全评审会上,一个数字像一盆冷水浇下来:PMHF 计算结…

2026/8/4 5:35:21 阅读更多 →
NVIDIA Skills:Jetson平台AI应用快速原型开发实战指南

NVIDIA Skills:Jetson平台AI应用快速原型开发实战指南

1. 从“想法”到“原型”的加速器:为什么是NVIDIA Skills?在嵌入式AI和边缘计算领域,Jetson系列开发板以其强大的GPU算力和紧凑的形态,成为了机器人、无人机、智能相机等众多创新项目的核心大脑。然而,对于很多开发者&…

2026/8/2 3:25:43 阅读更多 →
电商高并发订单场景:基于幂等设计与分层容错的防重复扣款实践

电商高并发订单场景:基于幂等设计与分层容错的防重复扣款实践

电商高并发订单场景:基于幂等设计与分层容错的防重复扣款实践 问题背景 电商大促或日常运营中,订单重复提交是高频痛点:前端用户重复点击、客户端网络超时重试、网关重试、批量操作的人工重复提交都可能导致同一订单被多次处理,轻…

2026/8/2 3:25:43 阅读更多 →

最新新闻

全国24年NDVI数据集解析与应用实践

全国24年NDVI数据集解析与应用实践

1. 项目背景与数据价值 NDVI(归一化植被指数)是遥感领域最经典的植被监测指标之一,通过计算近红外波段与红光波段的反射率差异来反映植被覆盖状况。这份覆盖全国省市县三级行政区划、时间跨度达24年(2000-2024)的NDVI数…

2026/8/4 13:19:48 阅读更多 →
3分钟掌握微博备份:Speechless免费Chrome扩展终极指南

3分钟掌握微博备份:Speechless免费Chrome扩展终极指南

3分钟掌握微博备份:Speechless免费Chrome扩展终极指南 【免费下载链接】Speechless 把新浪微博的内容,导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 在数字时代,微博承载着…

2026/8/4 13:19:48 阅读更多 →
深度解析OpenProject企业级认证架构:5大安全策略与技术实现

深度解析OpenProject企业级认证架构:5大安全策略与技术实现

深度解析OpenProject企业级认证架构:5大安全策略与技术实现 【免费下载链接】openproject OpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning…

2026/8/4 13:19:48 阅读更多 →
ECDICT开源英汉词典数据库:你的终极英语学习伴侣

ECDICT开源英汉词典数据库:你的终极英语学习伴侣

ECDICT开源英汉词典数据库:你的终极英语学习伴侣 【免费下载链接】ECDICT Free English to Chinese Dictionary Database 项目地址: https://gitcode.com/gh_mirrors/ec/ECDICT 你是否曾经在学习英语时感到困惑,不知道某个单词在真实语境中的使用…

2026/8/4 13:19:48 阅读更多 →
WSA Toolbox:Windows 11上安装Android应用的终极指南

WSA Toolbox:Windows 11上安装Android应用的终极指南

WSA Toolbox:Windows 11上安装Android应用的终极指南 【免费下载链接】wsa-toolbox A Windows 11 application to easily install and use the Windows Subsystem For Android™ package on your computer. 项目地址: https://gitcode.com/gh_mirrors/ws/wsa-tool…

2026/8/4 13:19:47 阅读更多 →
【SRC】基础思路篇19:RCE远程代码执行漏洞挖掘完全指南

【SRC】基础思路篇19:RCE远程代码执行漏洞挖掘完全指南

文章目录引言一、RCE漏洞概述1. RCE漏洞类型2. RCE漏洞危害二、命令注入漏洞挖掘1. 命令注入原理2. 命令注入点识别3. 命令注入测试方法4. 无回显数据外带5. 外网不通的应对三、代码注入漏洞挖掘1. 代码注入原理2. 异常输入测试3. 代码封装格式测试4. 延时测试验证四、文件上传…

2026/8/4 13:18:44 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →