001:LangChain的LCEL语法学习

LangChain多任务Agent系统工程实践:LCEL调度与Memory架构设计 在构建生产级AI应用时,单任务Agent常因状态不可控、错误不可溯、内存不可管而失效。本文围绕LangChain生态中的多任务协同问题,深入解析LCEL作为声明式流程引擎的核心价值——它不仅是语法糖,更是支持任务原子化、状态显式化与策略化调度的底层操作系统。结合ReAct范式重构为结构化决策循环,并通过三层Memory架构(瞬态缓冲、任务上下文池、持久化知识图谱)解决Hermes等框架常见的4GB内存上限与缓存泄漏难题。适用于已掌握RAG与基础Chain、正面临Agent稳定性与可运维性挑战的中级开发者。 阅读详情

本文是 refine-rag 系列教程的第二篇,带你体验一下LangChain 的 LCEL 语法。
本文所有代码都在:https://github.com/zonezoen/refine-rag

前言

LCEL (LangChain Expression Language),语言链表达式语言,是LangChain的表达式语言,用于描述数据处理逻辑。有点类似 Unix 的管道符号。本质就是把前面的输出
传递给后面作为输入。

基础使用

Chain = Prompt | Model | OutputParser

这个比较简单,就是先写好几个实例,然后用 | 连接起来,形成一个链。想要尽快掌握的话,可以教大模型给你出几道 LCEL 相关的题目给你,写完之后叫AI 给你评分并指导正确答案。

本文所有代码都在:https://github.com/zonezoen/refine-rag
创建 .env 文件,放到项目根目录,文件里面写入以下配置信息:

# DeepSeek API 配置
DEEPSEEK_API_KEY=sk-xxx
# 千问
DASHSCOPE_API_KEY=sk-yyy

如何获取 API Key:

  • DeepSeek: https://platform.deepseek.com/
  • 千问(DashScope): https://dashscope.aliyun.com/
from langchain_deepseek import ChatDeepSeek
from langchain_core.prompts import ChatPromptTemplate
from dotenv import load_dotenv
from langchain_core.output_parsers import StrOutputParser
import os

load_dotenv()

prompt_01 = ChatPromptTemplate.from_template(
    """
    介绍这个人物的生平事迹:{person}
    """
)

prompt_02 = ChatPromptTemplate.from_template(
    """
    把这个介绍转换成文言文:{text}
    """
)

llm = ChatDeepSeek(
    model="deepseek-chat",  # DeepSeek API 支持的模型名称
    temperature=0.7,  # 随机性
    max_tokens=2048,  # 最大输出长度
    api_key=os.getenv("DEEPSEEK_API_KEY")  # 从环境变量加载API key
)
ps = {"text": (prompt_01 | llm | StrOutputParser())}
chain = ps | prompt_02 | llm | StrOutputParser()

answer = chain.invoke({"person": "周杰伦"})
print(answer)

运行结果

周杰伦(Jay Chou),己未年(西元一九七九)正月十八日生于台湾新北。乃华语乐坛巨擘,集歌者、制乐、词曲、导演、伶人于一身,世誉“亚洲流行天王”。

**早年志学**
幼习琴律,天赋初显。丙子年(一九九七)参演《超级新人王》,擢亚魁,其才为吴宗宪所识,遂入阿尔发乐司为助。初为他人撰曲(若《眼泪知道》《双截棍》皆尝见拒),曲风新奇,时人未尽纳。

**乐业腾骞**
*   **首辑破局**:庚辰年(二〇〇〇)发专辑《Jay》,融R&B、嘻哈并中国雅韵,一举革新乐坛旧制,夺金曲奖最佳专辑。
*   **开宗中国风**:以传统文脉入流行宫商,作《东风破》《发如雪》《青花瓷》《千里之外》诸名篇,倡“中国风”为一时潮流。
*   **丰产屡进**:嗣后岁出一辑,若《范特西》《叶惠美》《七里香》《十一月的萧邦》等,皆风行四海。曲格多元,兼摄古典、摇滚、电子;其词多与方文山共谋,诗象盎然。
*   **荣冠载途**:累获金曲奖十五座,销录屡破,实千禧年后华语乐坛之圭臬。

**跨界骋才**
*   **影戏**:乙酉年(二〇〇五)初主演《头文字D》,获金马奖新人魁首。丁亥年(二〇〇七)自导自演《不能说的秘密》,成乐影合璧之经典。
*   **导艺与演游**:掌镜多部曲影,戊戌年(二〇一八)主创《周游记》。壬寅年(二〇二二)监制并出演好莱坞影戏《极限追杀》。
*   **商略**:创潮服牌“PHANTACi”、电竞赛旅“J Team”,亦涉饮馔诸业。

RunnableParallel和RunnablePassthrough

现实中,数据流不会总是这么简单。有时候你需要同时处理多个输入,或者把某些数据原样传递。这时候就需要 RunnableParallel 和 RunnablePassthrough。

2.1 RunnableParallel (并行处理)

当你需要把一份输入分发给多个组件,或者构造一个复杂的字典传给下一个环节时,用它。

2.2 RunnablePassthrough (原样通过)

它像是一个透明的管道,把输入数据直接传给下一级,不做任何修改。

代码示例:

from langchain_deepseek import ChatDeepSeek
from langchain_core.prompts import ChatPromptTemplate
from dotenv import load_dotenv
from langchain_core.output_parsers import StrOutputParser
import os
from langchain_core.runnables import RunnablePassthrough, RunnableParallel

load_dotenv()

prompt_01 = ChatPromptTemplate.from_template(
    """
    生成该公司的“口号(Slogan):{company}
    """
)

prompt_02 = ChatPromptTemplate.from_template(
    """
    预测该公司“明年的股价”:{company}
    """
)

llm = ChatDeepSeek(
    model="deepseek-chat",  # DeepSeek API 支持的模型名称
   
    temperature=0.7,  # 随机性
    max_tokens=2048,  # 最大输出长度
    api_key=os.getenv("DEEPSEEK_API_KEY")  # 从环境变量加载API key
)

chain1 = {"company": RunnablePassthrough()} | prompt_01 | llm | StrOutputParser()
chain2 = {"company": RunnablePassthrough()} | prompt_02 | llm | StrOutputParser()
chain = RunnableParallel({"slogan": chain1, "stock": chain2})

answer = chain.invoke("百度")
print(answer)

ok,这些你掌握之后,就算基本掌握了 LCEL 的语法了,后续学习中可能会陆陆续续用到这些知识。

学习路径

  1. 简易RAG 学习
  2. LCEL 语法学习
  3. LangChain 读取数据
    1. LangChain 读取文本数据
    2. LangChain 读取图片数据
    3. LangChain 读取 PDF 数据
    4. LangChain 读取表格数据
  4. 文本切块
  5. 向量嵌入
  6. 向量存储
  7. 检索前处理
  8. 索引优化
  9. 检索后处理
  10. 响应生成
  11. 系统评估

项目地址

本文所有代码示例都在 GitHub 开源:

https://github.com/zonezoen/refine-rag

欢迎 Star 和 Fork,一起学习 RAG 技术!

LangChain Chain模块:构建多步骤AI工作流的编排范式与实践 在AI应用开发中,工作流编排是连接基础模型能力与复杂业务场景的关键技术。其核心原理在于将不确定的大模型调用封装成确定性的执行流程,通过声明式的领域特定语言(如LCEL)进行组合,从而将离散的AI能力模块化、管道化。这一技术价值在于显著降低了多步骤AI智能体(Agent)的开发复杂度,提升了构建效率和系统可维护性。其典型应用场景包括内容审核流水线、自动化报告生成、多步骤决策代理等。本文以LangChain的Chain模块为例,深入探讨了如何利用顺序链、路由链、转换链及代理等集成策略,高效构建从数据处理到决策执 阅读详情

相关推荐

001、开篇:为什么是LangChain?大模型应用开发范式变革

昨天深夜调试一个对话场景,被大模型的输出格式折腾得够呛。需求很简单:从用户消息里提取时间、地点、事件三个字段,返回结构化的JSON。我对着API文档写了二十多行提示词,测试时却发现模型偶尔会把地点塞进事件描述里,偶尔又返回纯文本而非JSON。凌晨三点盯着屏幕,突然意识到问题不在模型——我们正在用写自然语言提示的方式,去解决一个本应属于工程架构的问题。这就是LangChain要回答的核心命题。

G_RE_RE的博客 593

【LangChain】(二)深入掌握LCEL语法:精通Chain的核心技巧与应用

LCEL是一种专为构建复杂链式组件设计的表达语言,它支持流式处理、并行执行以及日志记录等多种功能。LCEL的基本语法通过“|”符号连接各个组件,形成一个清晰的链式结构。这个“|”符号类似于Unix系统中的管道符号,可以将一个组件的输出直接传递给下一个组件,实现高效的数据流转和处理。LCEL的语法设计旨在简化复杂任务的实现,适应多种应用场景。

万物皆有灵 1203

汇川AM系列PLC玩转CNC:手把手教你用File模式读取G代码文件(附避坑指南)

本文详细介绍了如何使用汇川AM系列PLC的File模式读取G代码文件,涵盖从CAD设计到PLC配置的全流程。特别针对路径格式、文件类型等常见问题提供避坑指南,帮助工程师快速实现CNC加工的自动化控制。

weixin_33582311的博客 405

LCEL(Lang Chain Expression Language) 介绍:LangChain 的开发提效技巧

LCEL(Lang Chain Expression Language)是将一些有趣的 Python 概念抽象成一种格式,使得可以构建 LangChain 组件链的 “极简主义” 代码层。

kebijuelun的博客 1428

新手必看:TwinCAT死活扫不到倍福CX5020?别慌,先检查这3个地方(附静态IP配置)

本文详细介绍了TwinCAT软件无法扫描到倍福CX5020控制器的常见问题及解决方案。从网络连通性检查、系统环境配置到静态IP设置,提供了一套完整的排查流程和优化建议,帮助新手快速解决通信问题,确保设备稳定运行。

weixin_27219587的博客 364

基于CubeMX与lwip的STM32轻量级HTTP服务器搭建及VSCode高效开发指南

本文详细介绍了如何在STM32单片机上,利用STM32CubeMX图形化配置工具和轻量级TCP/IP协议栈lwIP,快速搭建一个轻量级HTTP服务器。通过结合VSCode的高效代码编辑能力,提供了一套从硬件连接到动态网页交互(SSI/CGI)的完整开发指南,旨在为嵌入式设备提供零成本、跨平台的Web交互界面。

weixin_29163857的博客 582

大模型 LangChain 开发框架:Runable 与 LCEL 初探

Runnable 接口是 LangChain 众多组件以及 LangChain 表达语言构建的基础抽象。invoke 方法:该方法能够将单个输入转换为相应的输出,是实现基本功能的核心。例如,在一个简单的文本处理任务中,输入一段文本,通过 invoke 方法可以得到处理后的结果,如文本分类、摘要生成等。batched 方法:支持多个输入高效地转换为输出。这在处理批量数据时非常有用,能够显著提高处理效率。比如,同时对多篇文档进行关键词提取,使用 batched 方法可以一次性处理多个文档,减少处理时间。

qq1164014750 1815

雷达截面积建模仿真(RCS)

在目标侧,其形状、材料、尺寸(相对于雷达波长)和相对于雷达观察方向的方向等特征都会影响雷达看到的RCS。严格的数学处理超出了讨论的范围,但入射波和目标之间的相互作用可以定性描述。对于给定的散射方向,可以积分求和物体表面电流的振幅相位,当电流同相时,会出现较大的回波幅度。随着目标方向和雷达视角随时间变化,电流振幅和相位会发生变化,形成看似随机的峰值和零点的散射模式,出现“相长”和“相消”干涉。除了雷达到目标的距离外,雷达截面(RCS)是RRE(雷达距离方程)中唯一与目标相关的参数,因此不在雷达设计者的。

qq_30796447的博客 3138

关于 LangChain Execution Language (LCEL) 的详细解释,涵盖其核心概念、语法、应用场景及示例

关于 LangChain Execution Language (LCEL) 的详细解释,涵盖其核心概念、语法、应用场景及示例

爱的叹息的专栏 1085

Vue3 - Element Plus 表格组件 el-table “表格行数据中又嵌套了二维对象数组“,按平级循环渲染(嵌套数组视为同级行数据), 对嵌套的数组循环展示为表格,智能合并行或列详细教程

vue3,nuxt3,element-plus,table表格组件,el-table,vue3element表格组件,数据中有二维数组怎么遍历循环显示,表格数据带二级数组怎么循环渲染显示,表格数据中存在一个数组要怎么才能显示到表格,el-table表格合并详细教程示例,table表格如果对象里面还有对象数组那该怎么去渲染,平常都是数组中一个对象渲染成一行,每行中还有嵌套数组怎么办,每个行数据下还有一个数组怎么显示,怎么把表格相同的数据合并为一行,合并上下两行相同数据单元格,合并行或列如果遇到相同单元格就合

🏆 前端领域优质创作者 1万+

Python爬虫:招聘网站岗位要求、薪资与求职者数据爬取与分析

通过本文的教程,我们学习了如何通过 Python 编写招聘数据爬虫,爬取招聘网站上的岗位要求、薪资和求职者数据,并通过数据存储、清洗、分析和可视化,获取有价值的信息。网站如智联招聘、猎云网、前程无忧等,都提供了大量的招聘信息,包括岗位要求、薪资范围、工作经验、学位要求、招聘公司等。本文将介绍如何通过 Python 编写爬虫,爬取招聘网站上的岗位要求、薪资、求职者数据,并通过数据存储、分析和可视化等手段,为求职者或招聘者提供实用的信息和决策支持。通过循环抓取多个页面的数据,可以获取不同岗位的信息。

2201_76125261的博客 722

LangChain从入门到实践——LCEL链式调用

LangChain是一个基于链式调用的语言模型框架,其核心概念是LCEL(LangChain表达式语言)。LCEL通过管符(|)串联提示模板、模型和解析器等Runnable组件,形成模块化的工作流,实现复杂任务处理。它具有简洁语法、灵活组合、明确边界等优势,支持同步/异步/批量/流式调用。典型链式结构包含PromptTemplate、模型和OutputParser三部分,数据依次流经各组件完成处理。这种设计提高了构建语言模型应用的可读性、可维护性和复用性。

qq_33816243的博客 700

Open3D DBSCAN聚类

DBSCAN算法做为一种有名的密度聚类算法,它是通过邻域参数(Distance,MinPts)来刻画样本分布的紧密程度。而在真正开始之前,首先要理解下面这几个概念:更为具体的内容也可参考这篇文章点云DBSCAN聚类算法。...

dayuhaitang1的博客 1795

001:LCEL 语法学习

LCEL (LangChain Expression Language),语言链表达式语言,是LangChain的表达式语言,用于描述数据处理逻辑。想要尽快掌握的话,可以教大模型给你出几道 LCEL 相关的题目给你,写完之后叫AI 给你评分并指导正确答案。ok,这些你掌握之后,就算基本掌握了 LCEL 的语法了,后续学习中可能会陆陆续续用到这些知识。当你需要把一份输入分发给多个组件,或者构造一个复杂的字典传给下一个环节时,用它。它像是一个透明的管道,把输入数据直接传给下一级,不做任何修改。

zone_的博客 282

[Dify实战] [安全合规] 用 Dify 优化安全巡检:从经验驱动到标准闭环-带绑定资源

摘要:企业信息系统安全管理中,安全合规巡检面临标准不统一、整改难追踪等痛点。本文提出基于Dify工具的智能化解决方案,通过自动化工作流实现标准检查清单生成、风险等级标注、整改建议输出及审计记录归档。方案采用结构化Prompt模板和Markdown输出格式,涵盖账号权限、数据安全等核心维度,并提供证据收集建议和闭环管理机制,帮助组织从人工经验驱动转向数据流程驱动的合规管理。配套可导入Dify的工作流文件将随后发布。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 272

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LangChain数据检索+LCEL实战:4步从PDF到AI问答,踩了4个坑才跑通

LangChain 是一个用于构建大语言模型(LLM)应用的开发框架,核心目标是解决 LLM 上下文有限、无法高效连接外部数据、难以实现复杂逻辑流程的问题。其核心设计理念是“模块化”,将 LLM 应用拆解为多个可组合、可替换的组件,通过组件串联实现复杂功能,核心组件包括:数据检索相关组件、Chain 流程组件、LCEL 表达式语言、记忆组件等。学习重点:掌握各组件的核心作用、使用场景,以及如何通过组件组合构建端到端 LLM 应用。

专注 Java / Python 开发,AI 大模型应用学习,持续输出源码教程,实战项目案例,学习笔记,拒绝空话,只写能直接跑的代码与可落地方案,关注我,一起少走弯路。 865

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《Learning Langchain》阅读笔记4-基于 Gemini 的 Langchain:组装 LLM 应用的多个部分

到目前为止,我们所了解的关键组件是LangChain框架的基本构建块。这就引出了一个关键问题:我们如何有效地结合它们来构建LLM应用程序?

m0_46464899的博客 1387

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

1.1 langchain :临时记忆

这段代码是一个非常典型的LangChain 多轮对话 Agent 原型。它通过轻松实现了上下文记忆,并结合了通义千问模型、结构化提示模板和 LCEL 链式编排。理解这段代码,等于掌握了 LangChain 核心的聊天应用开发范式,是面试中展示你工程能力的绝佳示例。

你是人间四月天 231

第九章 LangChain快速入门

大语言模型(LLM)本身是"无状态"的——你给它一个问题,它给你一个回答。我们需要让 LLM记住上下文(Memory)我们需要让 LLM查询外部数据(RAG)我们需要让 LLM调用工具和API(Agent)我们需要把多个 LLM 调用串联成工作流(Chain)LangChain 就是为了解决这些问题而生的。它提供了一套统一的抽象,让开发者可以像搭积木一样构建复杂的 LLM 应用。"""自定义 Chain:将代码从一种语言翻译到另一种语言。

qq_53460854的博客 1680

LangChain Tool定义性能瓶颈(实测:不当BaseModel继承导致LCEL pipeline吞吐量下降63.8%)

本文揭示LangChain Tool定义中的关键性能陷阱,实测发现不当BaseModel继承使LCEL pipeline吞吐量骤降63.8%。适用于构建高并发AI应用的开发者,提供正确Tool定义范式与优化验证方法,显著提升推理效率。值得收藏

VarIsle的博客 190

[LangChain RAG] 05 LCEL 链与 Memory:从竖线组链到多轮对话

除了固定功能的解析器,也可以自己编写 Lambda 完成自定义逻辑。把普通函数转换为 Runnable 实例,方便自定义函数加入 chain。RunnableLambda(函数对象或 lambda 匿名函数)"我邻居姓:{lastname},刚生了{gender},请起名,仅告知我名字,不要额外信息""姓名{name},请帮我解析含义。res: str = chain.invoke({"lastname": "张", "gender": "女儿"})print(res)

· 350

[深度学习] 大模型学习9-LangChain核心概念详解

LangChain于2022年10月作为面向LLM应用开发的开源项目发布,最初主要适配GPT-3,并在同年11月30日ChatGPT发布后迅速跟进,持续扩展以支持更多模型。其核心优势在于模块化设计,将复杂的LLM开发拆解为可复用组件,使开发者能够灵活组合。基于这一设计,LangChain不仅能够实现广为人知的RAG,还支持智能体、流程编排、工具调用以及多模型协作等功能,展现出良好的可扩展性。

You and Me 301

LangChain提示词工程化:从字符串拼接到生产级组件

提示词工程(Prompt Engineering)已超越单纯的语言技巧,演进为融合软件工程思想的系统性实践。其核心原理在于通过模板抽象、变量解耦、协议适配与组件化编排,实现提示逻辑与模型调用、记忆管理、检索增强等能力的正交分离。这种工程化设计显著提升AI应用的可维护性、多模型兼容性与A/B测试效率,支撑金融问答、多语言客服、科研摘要等高可靠场景落地。LangChain的PromptTemplate与ChatPromptTemplate正是这一范式的基础设施载体,将提示词真正升级为可观测、可灰度、可版本控制的

weixin_34167819的博客 614

LangChain工具系统实战:BaseTool、Callable与Runnable三种抽象详解

在大语言模型应用开发中,工具调用是实现智能体功能扩展的核心机制。工具系统通过将外部API、数据库查询或函数封装为可调用单元,赋予大模型执行实际任务的能力,使其从文本生成器进化为任务执行者。其技术价值在于解决了大模型缺乏“手”和“眼”的局限,通过标准化接口实现模型与外部环境的交互。在应用场景上,工具系统广泛应用于智能客服、自动化工作流、数据分析助手等领域。本文聚焦LangChain框架下的工具实现,深入解析BaseTool、Callable和Runnable三种核心抽象,涵盖串行与并行调用策略,并探讨错误处理

weixin_34021089的博客 407

Langchain 总结(上)

学习笔记

qq_62260432的博客 238

基于Google Generative AI与LangChain构建智能问答机器人实战指南

大语言模型(LLM)作为当前人工智能领域的核心技术,通过海量数据训练获得了强大的语言理解和生成能力。其工作原理基于Transformer架构,通过自注意力机制捕捉文本中的长距离依赖关系。在工程实践中,LLM的价值在于能够将通用语言能力转化为解决特定业务问题的工具,广泛应用于智能客服、文档分析、自动化工作流等场景。然而,直接使用原始模型往往面临缺乏领域知识、无法调用外部工具等局限。检索增强生成(RAG)技术通过结合外部知识库,有效弥补了模型在特定领域信息上的不足,是构建专业应用的关键。本文以金融领域为例,详细

weixin_33727510的博客 342
上一篇: 001:LCEL 语法学习
下一篇: 002:RAG入门-LangChain读取文本数据
zone7_
博客等级 码龄10年 144粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值