发布时间:2026/7/27 23:58:34
LangChain 表达式语言 (LCEL):从序列链接到并行执行 LangChain 表达式语言 (LCEL)从序列链接到并行执行引言什么是 LCELLangChain 表达式语言LangChain Expression Language简称 LCEL是 LangChain 框架中的一种声明式编程方式它允许开发者通过直观的管道运算符|来组合各种组件如模型、提示模板、输出解析器、检索器等从而构建复杂的 AI 工作流。LCEL 的核心优势在于它让代码变得简洁、可读性强同时天然支持并行执行、流式输出和错误处理等高级特性。## 基础概念管道运算符与链式调用LCEL 最基础的概念就是管道运算符|它类似于 Unix 中的管道命令将前一个组件的输出作为后一个组件的输入。这种设计模式被称为链式调用Chaining它让代码的流程一目了然。### 一个简单的序列链示例让我们从一个最基础的例子开始创建一个简单的问答链包含提示模板、语言模型和输出解析器。python# 示例 1基础序列链from langchain_core.prompts import ChatPromptTemplatefrom langchain_openai import ChatOpenAIfrom langchain_core.output_parsers import StrOutputParser# 1. 创建提示模板定义用户输入和系统指令prompt ChatPromptTemplate.from_messages([ (system, 你是一位精通科技的助手请用简洁的语言回答问题。), (human, {question})])# 2. 初始化语言模型这里使用 OpenAI实际使用时需设置 API Keymodel ChatOpenAI(modelgpt-3.5-turbo, temperature0)# 3. 创建输出解析器将模型输出转换为字符串output_parser StrOutputParser()# 4. 使用 LCEL 的管道运算符组合组件chain prompt | model | output_parser# 5. 执行链式调用result chain.invoke({question: 什么是 LangChain 表达式语言})print(链式调用结果)print(result)在这个例子中prompt | model | output_parser形成了一条数据流用户输入的question首先被填入提示模板生成完整的消息然后传递给模型得到原始输出最后经过解析器转换为纯文本字符串。整个过程清晰简洁避免了传统编程中繁琐的中间变量和函数调用嵌套。## 中级应用添加条件逻辑与记忆功能当我们需要更复杂的逻辑时LCEL 提供了RunnablePassthrough、RunnableBranch等工具来实现条件判断和数据传递。### 添加会话记忆的问答链下面的代码展示了如何结合记忆组件Memory和 LCEL 构建一个能记住对话上下文的聊天机器人。python# 示例 2带记忆的对话链from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholderfrom langchain_openai import ChatOpenAIfrom langchain_core.runnables import RunnablePassthroughfrom langchain_core.output_parsers import StrOutputParserfrom langchain.memory import ConversationBufferMemoryfrom langchain_core.messages import HumanMessage, AIMessage# 1. 初始化记忆组件用于存储对话历史memory ConversationBufferMemory(return_messagesTrue)# 2. 创建提示模板包含对话历史和当前输入prompt ChatPromptTemplate.from_messages([ (system, 你是一位友好的助手根据对话历史回答用户的问题。), MessagesPlaceholder(variable_namehistory), # 动态插入历史消息 (human, {input})])# 3. 初始化模型model ChatOpenAI(modelgpt-3.5-turbo, temperature0.7)# 4. 定义输出解析器output_parser StrOutputParser()# 5. 使用 LCEL 构建链并嵌入记忆功能chain ( RunnablePassthrough.assign(historylambda x: memory.chat_memory.messages) | prompt | model | output_parser)# 6. 模拟多轮对话def chat_with_memory(user_input): # 调用链 response chain.invoke({input: user_input}) # 更新记忆保存用户输入和模型回复 memory.chat_memory.add_user_message(user_input) memory.chat_memory.add_ai_message(response) return response# 测试对话print(第一轮对话)resp1 chat_with_memory(你好我是小明。)print(f用户你好我是小明。\n助手{resp1})print(\n第二轮对话记忆测试)resp2 chat_with_memory(你还记得我的名字吗)print(f用户你还记得我的名字吗\n助手{resp2})这个例子中RunnablePassthrough.assign()用于动态注入历史消息到提示模板中而记忆组件则负责维护对话历史。LCEL 的管道设计让这个原本复杂的记忆集成变得异常简洁。## 高级用法并行执行与合并结果LCEL 最强大的特性之一是其对并行执行的天然支持。通过RunnableParallel或RunnableMap我们可以同时执行多个独立的任务然后将结果合并输出。### 并行处理多个数据源假设我们想要同时从两个不同角度分析一个文本总结内容和提取关键词。这两个任务可以并行执行最后将结果合并。python# 示例 3并行执行与结果合并from langchain_core.prompts import ChatPromptTemplatefrom langchain_openai import ChatOpenAIfrom langchain_core.runnables import RunnableParallel, RunnablePassthroughfrom langchain_core.output_parsers import StrOutputParser# 初始化模型model ChatOpenAI(modelgpt-3.5-turbo, temperature0.3)# 定义两个并行任务的任务链# 任务1文本总结summary_prompt ChatPromptTemplate.from_template( 请用一句话总结以下内容\n{text})summary_chain summary_prompt | model | StrOutputParser()# 任务2关键词提取keyword_prompt ChatPromptTemplate.from_template( 请从以下内容中提取3个关键词用逗号分隔\n{text})keyword_chain keyword_prompt | model | StrOutputParser()# 使用 RunnableParallel 并行执行两个任务parallel_chain RunnableParallel( summarysummary_chain, keywordskeyword_chain)# 组合成完整的工作流先传递文本再并行处理full_chain ( RunnablePassthrough.assign(textlambda x: x[article]) | parallel_chain)# 测试并行执行test_article LangChain 是一个用于开发基于大语言模型LLM的应用程序的框架。它提供了模块化组件和表达式语言帮助开发者快速构建复杂的 AI 工作流。LCEL 支持链式调用、并行执行和流式输出大大简化了开发过程。result full_chain.invoke({article: test_article})print(并行执行结果)print(f总结{result[summary]})print(f关键词{result[keywords]})在这个例子中RunnableParallel同时启动了summary_chain和keyword_chain它们各自独立处理相同的输入文本。模型调用是并行进行的如果底层 API 支持并发最终结果以字典形式返回包含了两个任务的输出。这种方式特别适合需要多维度分析的场景如文档分类、情感分析和信息抽取的组合应用。## 总结LCEL 作为 LangChain 的核心表达方式从基础的序列链接到高级的并行执行为 AI 应用开发提供了强大而优雅的解决方案。通过本文的三个示例我们看到了1.序列链用|运算符构建简单的数据流适合问答、翻译等线性任务。2.条件与记忆结合RunnablePassthrough和记忆组件实现有状态的对话系统。3.并行执行利用RunnableParallel同时处理多个任务提升效率并简化代码结构。LCEL 的核心理念是组合优于继承它让开发者能够像搭积木一样构建复杂的 AI 工作流同时保持代码的可读性和可维护性。随着 LangChain 生态系统的发展LCEL 将会支持更多高级特性成为 AI 应用开发不可或缺的工具。

相关新闻

2026/7/27 23:58:34

AI Agent动态知识管理:原理、实现与优化

1. 为什么AI Agent需要动态知识管理 在真实业务场景中部署的AI系统,常常面临一个根本性矛盾:一方面需要持续吸收新数据来保持相关性,另一方面又受限于计算资源和模型容量。去年我们团队为某电商平台构建的推荐系统就遇到了典型问题——经过半…

2026/7/27 23:53:33

云南瓦猫文化符号提取与非遗活化设计研究

云南瓦猫文化符号提取与非遗活化设计研究技术说明:本文围绕云南瓦猫文化元素的提取与非遗活化设计进行方法复盘,重点整理文化符号分析、用户调研、造型提炼、结构推演、系列化方案和传播设计等研究过程。文章聚焦非物质文化遗产创新设计与文化传播方法。…

2026/7/27 23:53:33

TVA数字小脑:具身智能商业化落地的关键支撑(7)

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

2026/7/28 0:54:03

瑞德克斯平台:从外汇投教内容建设切入的方法解读

外汇市场信息更新频繁,平台口碑的形成更依赖长期一致性:入口是否好找、说明是否前后一致、提示是否稳定出现。围绕瑞德克斯平台,下面从稳定体验与信息呈现等角度做一次正面观察。在外汇相关服务中,读者最在意的通常是信息是否清楚…

2026/7/28 0:54:03

HarmonyOS应用开发实战:猫猫大作战-在 HarmonyOS 应用中,冷启动是指用户从桌面点击图标到看到首屏内容的完整过程

前言 在 HarmonyOS 应用中,冷启动是指用户从桌面点击图标到看到首屏内容的完整过程。这个过程中的第一个回调就是 onCreate——它在 UIAbility 实例首次创建时被触发,且在整个生命周期中仅执行一次。正确地使用 onCreate 管理启动参数、初始化全局状态、…

2026/7/28 0:54:03

C语言二级考试通关指南

本文重点讲解通过考试的方法,并简要介绍C语言的学习路径。通过二级考试并不困难,真正的挑战在于取得高分。若计划深入掌握C语言,二级水平尚显不足,还需进一步系统深入地学习,夯实基础,提升编程能力。 1、 首…

2026/7/28 0:54:03

HarmonyOS应用开发实战:猫猫大作战-Hero 共享元素概念、bindElements 双页面绑定、AnimationParams 转场参数、与

前言 前面我们用 animation/animateTo 做了组件内动画——位置补间、缩放弹跳。但有种「跨页面」动画做不了:点击列表里的猫咪小图,跳到详情页大图,小图「飞」到大图位置平滑放大——这种「同一元素在两个页面间连续过渡」就是 Hero 共享元素…

2026/7/27 9:04:58

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/28 0:03:34

学术论文研究创新点梳理与核心价值提炼指南

本科毕业论文是大学四年最大的坎。开题报告憋一周写不出三页,找文献翻遍十几个网站还是缺关键资料,写正文卡壳半天憋不出一句话,降重改到凌晨三点结果逻辑全乱,答辩前一天PPT还没做完。别慌,亲测这四个工具能让你少熬半…

2026/7/28 0:03:34

开发商售楼处数字化升级怎么做?

房企的数字化转型投入正在快速增长,据行业数据显示,2025年房企数字化投入规模已突破800亿元,年复合增长率达35%。售楼处的数字化升级不是单一环节的改造,而是从“获客-展示-成交-服务”全链路的系统升级。数字化升级四步法第一步&…

2026/7/28 0:03:34

模型不再值钱之后,AI 编程工具在争什么

2026 年 7 月,AI 编程工具赛道发生了一个标志性转折:模型本身不再值钱了。当 Kimi K3 开源模型在编程基准上击败 GPT 和 Claude,当 GitHub Copilot 第一次把开源模型纳入选择器,当 OpenAI 把 Codex 并入 ChatGPT 做成三合一超级应…

2026/7/27 3:13:33

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…