LangChain 之 【Runnable与LCEL】

发布时间:2026/7/18 0:56:36

LangChain 之 【Runnable与LCEL】
目录1.简单代码展示2. Runnable 接口2.1 什么是 Runnable2.2 为什么需要 Runnable2.3 代码印证3. LCELLangChain 表达式语言3.1 什么是 LCEL3.2 什么是 RunnableSequence4. 深入管道符三种等价的“组合”方式5. 数据流转的底层逻辑1.简单代码展示1.1申请 API key与配置环境变量这里是远程调用大模型 API所以需要在对应大模型官网上申请 api_key同时为了后续便捷调用可以将 api_key 与 base_url 设置进环境变量中1.2.安装 OpenAI 包与定义⼤模型命令行输入pip install -U langchain-openai安装 LangChain 官方提供的 OpenAI 集成包# 定义⼤模型 from langchain_openai import ChatOpenAI model ChatOpenAI(modeldeepseek-v4-flash)通过修改配置(上述两个环境变量等)DeepSeek API 可以使用与 OpenAI 兼容的 API 格式1.3.定义消息列表# 定义消息列表 from langchain_core.messages import HumanMessage, SystemMessage messages [ SystemMessage(content请翻译成中文), HumanMessage(contentHello world), ]消息列表参数说明SystemMessage表示系统角色消息。系统消息通常作为输入消息序列中的第一条传入是用来启动 AI 行为的消息HumanMessage表示用户角色消息。是来自用户的、从用户传递到模型的消息1.4.调⽤⼤模型model 是 LangChain Runnable 可运⾏接⼝的实例这意味着 model 提供了⼀个标准接⼝供我们与之交互。要简单地调⽤模型我们可以将 消息列表 传递给 .invoke ⽅法。使⽤ .invoke ⽅法进⾏⼤模型调⽤核⼼代码response model.invoke(messages) print(response)输出结果调试可以看⻅ response 类型为 AIMessageAIMessage(content你好世界, additional_kwargs{refusal: None}, response_metadata{token_usage: {completion_tokens: 54, prompt_tokens: 10, total_tokens: 64, completion_tokens_details: {accepted_prediction_tokens: None, audio_tokens: None, reasoning_tokens: 50, rejected_prediction_tokens: None}, prompt_tokens_details: {audio_tokens: None, cached_tokens: 0}, prompt_cache_hit_tokens: 0, prompt_cache_miss_tokens: 10}, model_name: deepseek-v4-flash, system_fingerprint: fp_8b330d02d0_prod0820_fp8_kvcache_20260402, id: 91d952ef-75ff-4975-acc0-2def7d7a5d11, service_tier: None, finish_reason: stop, logprobs: None}, idrun--019f2f8b-04ef-7a01-9794-0406ca490dd6-0, usage_metadata{input_tokens: 10, output_tokens: 54, total_tokens: 64, input_token_details: {cache_read: 0}, output_token_details: {reasoning: 50}})输出说明AIMessage来自 AI 的消息。从聊天模型返回作为对提示输入的响应。content消息的内容。additional_kwargs与消息关联的其他有效负载数据。对于来自 AI 的消息可能包括模型提供程序编码的工具调用。response_metadata响应元数据。例如响应标头、logprobs、令牌计数、模型名称。侧重于响应本身的信息比如这次请求的 ID、使用的模型版本、以及服务提供商返回的所有原始元数据。它主要用于调试、日志记录和获取请求的上下文信息。usage_metadata消息的使用元数据例如令牌计数。侧重于资源消耗的量化信息即这次请求消耗了多少 Token。它主要用于成本计算、监控和预算控制。1.5.输出解析若只想输出聊天模型返回的结果字符串可以使⽤StrOutputParser输出解析器组件将⼤模型输出结果解析为最可能的字符串。核⼼代码# 定义str字符串输出解析器 from langchain_core.output_parsers import StrOutputParser parser StrOutputParser() print(parser.invoke(result))1.6.链式执行# 定义链 chain model | parser # 执⾏链 response chain.invoke(messages) print(response)2. Runnable 接口2.1 什么是 Runnable官方定义它为使用 LangChain 组件的基础你可以把它想象成我们生活中的USB-C 接口。无论是大模型、解析器、检索器还是复杂的 Agent只要实现了 Runnable 接口它们就拥有了统一的“插拔”标准2.2 为什么需要 Runnable在没有统一标准前调用模型用model.chat()调用解析器用parser.parse()调用检索器用retriever.get()……方法名五花八门Runnable 接口强制规定了一套标准化的方法论。任何一个实现了 Runnable 的组件都天然具备以下四种核心能力能力对应方法作用解释Invoked调用.invoke()最常用。输入一个东西立刻得到一个输出同步执行。Batched批处理.batch()高效处理一批输入比用for循环快得多支持并行。Streamed流式传输.stream()实现 AI 打字机效果数据边生成边输出提升用户体验。Composed组合配合|使用这是 LCEL 的基础允许将自身与另一个 Runnable 串联。2.3 代码印证from langchain_openai import ChatOpenAI from langchain_core.output_parsers import StrOutputParser # ChatOpenAI 是 Runnable 接口的实例 model ChatOpenAI(modelgpt-4o-mini) result model.invoke(messages) # 调用 .invoke() # StrOutputParser 也是 Runnable 接口的实例 parser StrOutputParser() parser.invoke(result) # 同样调用 .invoke()3. LCELLangChain 表达式语言如果说 Runnable 是“积木”那么LCEL 就是把这些积木拼在一起的“说明书”和“胶水”3.1 什么是 LCELLCEL 采用声明式的方法从现有的 Runnable 对象构建出新的 Runnable 对象。它不改变组件内部的逻辑只负责定义数据流动的方向它的核心语法极其简单使用|管道运算符3.2 什么是 RunnableSequence# model 和 parser 都是 Runnable chain model | parser # 检查 chain 的类型class langchain_core.runnables.base.RunnableSequence print(type(chain)) # 因为 RunnableSequence 也是 Runnable所以它也有 .invoke() result chain.invoke(messages)当我们通过 LCEL 将两个或更多的 Runnable 串联起来时LangChain 会在底层生成一个新的对象 ——RunnableSequence可运行序列。关键点来了RunnableSequence本身也完整地实现了 Runnable 接口这是一个典型的“组合模式”应用。这意味着你拼出来的这条“链”Chain和你之前用的单个model拥有完全一样的调用姿势也有.invoke()、.batch()等方法。你可以把拼好的链再当作一个零件去拼进更大的链里实现无限嵌套4. 深入管道符三种等价的“组合”方式三种将组件串联的方法在逻辑上完全等价只是编码风格不同序号写法方式代码示例适用场景1管道符最常用chain model | parser日常开发首选Python 重载了|运算符简洁直观。2显式实例化chain RunnableSequence(firstmodel, lastparser)底层实现原理通常用于框架内部或需要动态构建链时。3.pipe() 方法chain model.pipe(parser)函数式编程风格与管道符完全同义在某些 IDE 中自动补全更友好。5. 数据流转的底层逻辑chain model | parser当你在 LCEL 中执行 chain.invoke(messages) 时输入messages消息列表传入 chain。第一步LCEL 将 messages 传给 model大模型执行 model.invoke(messages)。中间产出model 返回一个 AIMessage 对象包含内容、元数据、Token 用量等。第二步LCEL 自动将上一步的产出AIMessage作为参数传给 parser执行 parser.invoke(AIMessage)。最终输出parser 提取出 AIMessage 中的 content 字段返回纯字符串 你好。核心公式上一个 Runnable 的输出类型 下一个 Runnable 的输入类型

相关新闻

3个核心功能解析:Scarab如何成为空洞骑士模组管理的终极解决方案

3个核心功能解析:Scarab如何成为空洞骑士模组管理的终极解决方案

2026/7/15 7:10:27

3个核心功能解析:Scarab如何成为空洞骑士模组管理的终极解决方案 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab Scarab是一个基于Avalonia框架开发的跨平台空洞…

为什么选择LMCache-mindspore?5大核心优势彻底对比

为什么选择LMCache-mindspore?5大核心优势彻底对比

2026/7/16 9:00:10

为什么选择LMCache-mindspore?5大核心优势彻底对比 【免费下载链接】LMCache-mindspore An LMCache extension for mindspore-based inference. 项目地址: https://gitcode.com/openeuler/LMCache-mindspore 前往项目官网免费下载:https://ar.ope…

如何快速上手OpenDesign miniprogram:5分钟学会openEuler社区小程序使用技巧

如何快速上手OpenDesign miniprogram:5分钟学会openEuler社区小程序使用技巧

2026/7/16 2:25:09

如何快速上手OpenDesign miniprogram:5分钟学会openEuler社区小程序使用技巧 【免费下载链接】opendesign-miniprogram The repository of OpenDesign miniprogram 项目地址: https://gitcode.com/openeuler/opendesign-miniprogram 前往项目官网免费下载&am…

Cursor国际化插件选型与深度定制(企业级多语言架构实测报告)

Cursor国际化插件选型与深度定制(企业级多语言架构实测报告)

2026/7/18 0:52:04

更多请点击: https://codechina.net 第一章:Cursor国际化插件选型与深度定制(企业级多语言架构实测报告) 在构建面向全球用户的企业级开发环境时,Cursor 的国际化能力成为关键基础设施。我们对当前主流插件生态进行了…

仅限前500名开发者获取:Gemini编程辅助黄金Prompt矩阵(含金融/医疗/嵌入式垂直领域专用指令集)

仅限前500名开发者获取:Gemini编程辅助黄金Prompt矩阵(含金融/医疗/嵌入式垂直领域专用指令集)

2026/7/18 0:52:04

更多请点击: https://kaifayun.com 第一章:Gemini编程辅助黄金Prompt矩阵概览 Gemini 编程辅助黄金Prompt矩阵是一套经过工程验证、面向开发者场景的结构化提示词设计体系,聚焦于提升代码生成准确性、上下文理解深度与任务可复现性。该矩阵并…

从本地拖拽到云端同步:Cursor文件上传全链路拆解(含WebSocket握手日志+multipart/form-data原始载荷样本)

从本地拖拽到云端同步:Cursor文件上传全链路拆解(含WebSocket握手日志+multipart/form-data原始载荷样本)

2026/7/18 0:52:04

更多请点击: https://kaifayun.com 第一章:从本地拖拽到云端同步:Cursor文件上传全链路概览 Cursor 作为一款面向开发者的 AI 增强编辑器,其文件上传能力并非简单的 HTTP POST 请求,而是一套融合前端交互、本地沙箱校…

2026科技驱动型亚洲EMBA性价比榜单:民企老板避坑择校测评

2026科技驱动型亚洲EMBA性价比榜单:民企老板避坑择校测评

2026/7/18 0:52:04

【客观中立测评声明】本文基于2026年公开院校官方数据,从学费成本、课程落地、圈层纯度、长期赋能四大维度客观打分,无夸大宣传、无院校抹黑,仅针对民企创始人、科创企业实控人适配度做理性分析,规避择校营销误区。 不少民企老板…

2026小程序制作平台排行榜出炉!高性价比制作工具盘点!

2026小程序制作平台排行榜出炉!高性价比制作工具盘点!

2026/7/18 0:52:04

2026小程序制作平台排行榜出炉!高性价比制作工具盘点!行业数据显示,2026年国内小程序制作市场规模有望突破9800亿元,同比增长47.6%,超过80%的中小企业明确表示将在2026年投入专项资金用于小程序开发。小程序早已不是“…

终极揭秘:kyclassifier分层算法如何实现openEuler包的智能层级划分

终极揭秘:kyclassifier分层算法如何实现openEuler包的智能层级划分

2026/7/18 0:42:04

终极揭秘:kyclassifier分层算法如何实现openEuler包的智能层级划分 【免费下载链接】kyclassifier Use for analyzes layers and categories inforamtion of packages in openEuler. 项目地址: https://gitcode.com/openeuler/kyclassifier 前往项目官网免费…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/17 10:50:47

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/17 17:34:09

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/16 14:18:17

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

2026/7/18 0:02:02

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

2026/7/18 0:02:02

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

某智驾大牛创业

某智驾大牛创业

2026/7/18 0:02:02

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…