LangChain框架入门:手把手带你玩转LCEL表达
LangChain框架入门手把手带你玩转LCEL表达LangChain 是当前大模型应用开发中最热门的框架之一而 LCELLangChain Expression LanguageLangChain 表达式语言则是其核心的“魔法棒”。它让我们能够用简洁、可读、可组合的方式将提示词、模型、输出解析器等组件“串联”成一条条强大的处理流水线。本文将带你从零开始循序渐进地掌握 LCEL 的核心概念与实战技巧。### 一、为什么需要 LCEL在 LCEL 出现之前我们通常需要编写大量的样板代码来调用模型、处理中间结果、解析输出。比如你需要手动管理 prompt 模板的填充、调用model.generate()、再手动提取文本。这种代码不仅冗长而且难以复用和扩展。LCEL 的核心设计理念是**“一切皆表达式”**。它提供了一种统一的管道操作符|让不同的组件像 Unix 管道命令一样无缝连接。数据流从左侧流向右侧每一步的输入就是上一步的输出。这种设计极大地简化了代码提升了可读性和可维护性。### 二、LCEL 基础三大核心组件LCEL 的三大核心组件是1.Prompt 模板负责将用户输入和固定指令组合成最终的提示词。2.模型Model通常是 ChatOpenAI 或其它大语言模型负责接收提示词并生成回复。3.输出解析器将模型的原始文本输出解析为结构化的数据如字典、列表、Pydantic 对象。我们来写第一个 LCEL 表达式完成一个最简单的“翻译官”功能。python# 导入必要的库from langchain.prompts import ChatPromptTemplatefrom langchain.chat_models import ChatOpenAIfrom langchain.schema import StrOutputParser# 1. 创建 Prompt 模板prompt ChatPromptTemplate.from_template( 请将以下英文翻译成中文{english_text})# 2. 初始化模型请设置你的 OPENAI_API_KEY 环境变量model ChatOpenAI(modelgpt-4o-mini, temperature0)# 3. 初始化输出解析器直接返回字符串parser StrOutputParser()# 4. 使用管道符构建 LCEL 链chain prompt | model | parser# 5. 调用链传入输入参数result chain.invoke({english_text: Hello, LangChain!})# 输出翻译结果print(result) # 输出你好LangChain代码解读-prompt是一个模板它接受一个变量english_text。-model是核心的语言模型。-parser将模型返回的AIMessage对象提取为纯字符串。-chain.invoke()是执行 LCEL 链的统一入口。数据流是输入字典 → prompt 生成完整提示词 → 模型生成回复 → 解析器输出字符串。### 三、进阶链式调用与 RunnablePassthroughLCEL 的强大之处在于它可以组合多个链并且可以在链中传递和变换数据。RunnablePassthrough允许我们直接传递未修改的输入或者配合itemgetter提取特定字段。下面我们构建一个更复杂的链它先进行关键词提取再进行回答同时保留原始输入。pythonfrom langchain.prompts import ChatPromptTemplatefrom langchain.chat_models import ChatOpenAIfrom langchain.schema import StrOutputParserfrom langchain.schema.runnable import RunnablePassthrough, RunnableParallel# 子链1提取关键词keyword_prompt ChatPromptTemplate.from_template(从以下文本中提取3个关键词用逗号分隔{text})keyword_chain keyword_prompt | ChatOpenAI(modelgpt-4o-mini) | StrOutputParser()# 子链2基于关键词和原文生成摘要summarize_prompt ChatPromptTemplate.from_template( 以下是用户输入{text}\n\n提取的关键词{keywords}\n\n请基于这些信息生成一份简洁的总结。)summarize_chain summarize_prompt | ChatOpenAI(modelgpt-4o-mini) | StrOutputParser()# 组合链并行执行关键词提取并保留原始输入chain ( RunnableParallel( { keywords: keyword_chain, text: lambda x: x[text] # 直接传递原始文本 } ) | summarize_prompt | ChatOpenAI(modelgpt-4o-mini) | StrOutputParser())# 执行result chain.invoke({text: LangChain 是一个强大的框架它简化了 LLM 应用的开发流程。})print(result)关键点-RunnableParallel可以并行执行多个子链例如keyword_chain并将结果组装成一个字典。- 我们使用lambda x: x[text]将原始输入传递给后续步骤而keywords则由子链生成。- 这样最终链能同时使用关键词和原文生成更高质量的总结。### 四、高级技巧条件分支与自定义函数LCEL 还支持条件逻辑和自定义函数这让它几乎可以处理任何复杂的业务逻辑。#### 1. 条件分支使用RunnableBranch可以根据输入内容动态选择不同的处理路径。pythonfrom langchain.schema.runnable import RunnableBranch, RunnableLambda# 定义一个函数判断文本长度def is_long(text: str) - bool: return len(text) 50# 定义两个分支long_chain RunnableLambda(lambda x: f处理长文本{x[:10]}...)short_chain RunnableLambda(lambda x: f处理短文本{x})# 构建分支链branch_chain RunnableBranch( (lambda x: is_long(x[text]), long_chain), # 如果条件为True执行long_chain short_chain # 否则执行short_chain)result branch_chain.invoke({text: 这是一个很短的文本})print(result) # 输出处理短文本这是一个很短的文本#### 2. 自定义函数通过RunnableLambda我们可以将普通 Python 函数无缝嵌入到 LCEL 链中。pythonfrom langchain.schema.runnable import RunnableLambdadef add_score(text: str) - str: 自定义函数给文本添加评分 score len(text) * 2 return f{text} (得分{score})chain ( RunnableLambda(lambda x: x[input_text]) # 提取输入 | RunnableLambda(add_score) # 应用自定义函数)print(chain.invoke({input_text: 你好})) # 输出你好 (得分4)### 五、与 LangSmith 集成调试与监控在实际开发中调试 LCEL 链非常方便。你可以使用chain.invoke()直接运行也可以通过chain.batch()批量处理。更重要的是LCEL 原生支持 LangSmith 追踪你可以查看每一步的输入输出快速定位问题。python# 开启 LangSmith 追踪需要环境变量 LANGCHAIN_TRACING_V2true# 然后你的链会自动记录所有运行日志# 批量调用示例results chain.batch([{input_text: 你好}, {input_text: 世界}])print(results)### 六、总结LCEL 是 LangChain 中极具革命性的设计它让复杂的大模型应用变得像拼积木一样简单。通过|管道符我们可以轻松组合 Prompt、模型、解析器、Runnable 等组件构建出可读性高、可扩展性强的 AI 应用。从简单的翻译到并行处理、条件分支、自定义函数LCEL 都提供了优雅的解决方案。掌握 LCEL 不仅提升了开发效率也为构建更复杂的 Agent、RAG 系统打下了坚实的基础。希望本文能为你打开 LangChain 世界的大门赶快动手试试吧

相关新闻

区间预测 | MATLAB实现QGPR高斯过程分位数回归多变量时间序列区间预测

区间预测 | MATLAB实现QGPR高斯过程分位数回归多变量时间序列区间预测

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知,求助可私信。 &#x1f52…

2026/8/1 13:08:37阅读更多 →
Wand-Enhancer深度指南:3步解锁WeMod无限游戏时间与远程控制

Wand-Enhancer深度指南:3步解锁WeMod无限游戏时间与远程控制

Wand-Enhancer深度指南:3步解锁WeMod无限游戏时间与远程控制 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为WeMod(现…

2026/8/1 13:06:36阅读更多 →
苹果设备iCloud激活锁终极免费绕过教程:applera1n完整指南

苹果设备iCloud激活锁终极免费绕过教程:applera1n完整指南

苹果设备iCloud激活锁终极免费绕过教程:applera1n完整指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否因为忘记Apple ID密码而无法使用自己的iPhone?或者购买的二手苹…

2026/8/1 13:06:36阅读更多 →
深度解析:League Akari 1.5.0的Electron模块化架构演进与性能优化实践

深度解析:League Akari 1.5.0的Electron模块化架构演进与性能优化实践

深度解析:League Akari 1.5.0的Electron模块化架构演进与性能优化实践 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akar…

2026/8/1 14:29:17阅读更多 →
gdb断点调试python代码

gdb断点调试python代码

最近在解程序cordump的问题,代码是C/C++与python混合部署的,gdb的bt命令只能看到C/C++的调用栈,看不到python的调用栈。踩了一些坑,这里记录下最终的结果。 下面都是在Python-3.11.12版本上实现的。 python调用栈打印 网上搜到的一些教程,是让下载对应python版本的libp…

2026/8/1 14:29:17阅读更多 →
Unity历史版本下载终极指南:告别官方链接失效烦恼

Unity历史版本下载终极指南:告别官方链接失效烦恼

Unity历史版本下载终极指南:告别官方链接失效烦恼 【免费下载链接】download.unity.com Unity国际版下载,解决国内打不开网站和被重定向的问题 项目地址: https://gitcode.com/gh_mirrors/do/download.unity.com 还在为Unity官方下载链接失效而烦…

2026/8/1 14:29:17阅读更多 →
InfluxDB 1.x 部署指南:兼容性考量与Web界面配置实践

InfluxDB 1.x 部署指南:兼容性考量与Web界面配置实践

1. 项目概述:为什么选择这两个特定版本?最近在整理一个老项目的监控数据迁移,发现历史数据存储用的还是InfluxDB 1.x的版本。为了复现当时的部署环境,我不得不重新搭建一套InfluxDB 1.1.0和1.8.0的测试实例,并且需要开…

2026/8/1 14:29:17阅读更多 →
深入解析HashMap:从哈希函数到红黑树,揭秘Java核心数据结构

深入解析HashMap:从哈希函数到红黑树,揭秘Java核心数据结构

1. 从“键值对”到“数组链表/红黑树”:HashMap的设计哲学 如果你写过Java,或者用过任何现代编程语言,那么HashMap对你来说一定不陌生。它就像一个超级高效的“字典”或“电话本”,给你一个名字(Key)&#…

2026/8/1 14:29:16阅读更多 →
大模型API自动化测试流水线——用TokenStar一个Key做多模型A/B评测

大模型API自动化测试流水线——用TokenStar一个Key做多模型A/B评测

200条业务数据、零人工参与、10分钟跑完全部评测。含完整的评测流水线代码模型评测最烦的是什么——每个月模型一更新就得重新测一遍。200 条测试数据、人工看至少两小时。我们后来搞了一套自动化评测流水线——让 AI 当裁判去评 AI——现在 10 分钟跑完全部。核心思路——用AI…

2026/8/1 14:27:16阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →