5.LangChain零基础速通-LCEL链式调用

文章目录

LCEL链式调用

Runnable与LCEL

Runnable

定义:LangChain中的抽象基类(Abstract Base Class:ABC),Runnable是LangChain核心抽象接口统一组件调用方式,定义在langchain_core.runnables,支持LCEL组合,适配同步、异步、流式、批量等场景,是构建工作流的基础。

目标:为所有可执行组件提供统一的操作接口

理念:一切可执行的对象都应该有统一的调用方式

一句话:统一接口,将多个组件按特定顺序组合起来以便完成复杂任务的一个工作流或管道。

核心方法:Runnable是LangChain中所有链的通用接口,用于描述"可以执行的数据流节点",用于构建所有链(Chain)组件,它代表"一个可以调用(运行)的流程单元",无论是:

单个组件(如prompt、model)

一个序列流程(如promptmodelparser)

并行、多路、多输入多输出的复合结构

只要实现了Runnable接口,它就可以像函数一样.invoke(),或用管道符|组合。

invoke(input): 同步执行,处理单个输入,最常用的方法

ainvoke(input): 异步执行,用于高并发场景

batch(inputs): 批量执行,处理多个输入,提升处理效率

stream(input): 流式执行,逐步返回结果,经典的使用场景是大模型进行流式输出

LCEL

定义:LangChain Expression Language

定位:专门用于组合Runnable组件的声明式语法

操作符: 管道符 |

核心思想:使用管道操作符|将多个Runnable对象,像堆积木意义组合起来

典型写法:chain = prompt | model | parser

chain本身也是Runnable,可以通过编标准方法invoke继续调用它

result = chain.invoke({"topic":"python"})

一句话:通过LCEL(|运算符、RunnableSequence、RunnableParallel等)快速拼接多个Runnable为复杂工作流,支持条件分支、并行执行、串行执行等逻辑。

chain结构

定义:我们将使用LCEL创建大的Runnable为"链","链"本身就是Runnable

组成:提示词模版+大模型+解析器(prompt | llm | parser)

典型链结构:

  • RunnableSequence-顺序链
python 复制代码
chain = chat_prompt_template | llm | parser
  • RunnableBranch-分支链
python 复制代码
chain = RunnableBranch(
    (lambda x: determine_language(x) == 'japanese', japanese_prompt | llm | parser),
    (lambda x: determine_language(x) == 'english', english_prompt | llm | parser),
    (korean_prompt | llm | parser),
)
  • RunnableSerializable-串行链
python 复制代码
full_chain = chain_1 | (lambda content: {"question": content}) | chain_2
  • RunnableParallel-并行链
python 复制代码
parallel_chain = RunnableParallel({
    "chain_1": chain_1,
    "chain_2": chain_2,
})
  • RunnableLambda-函数链
python 复制代码
function_chain = chain_1 | RunnableLambda(debug_print) | chain_2
相关推荐
MZ_ZXD0013 小时前
springboot音乐播放器系统-计算机毕业设计源码76317
java·c语言·c++·spring boot·python·flask·php
qq_283720053 小时前
LangChain 文档切割全攻略:8 大主流切割技术选型 + 实战代码详解
python·langchain·选型·切割
DanCheng-studio3 小时前
网安毕业设计最新项目选题指导
python·毕业设计·毕设
_376271533 小时前
Cgo回调函数中处理 const char- 类型参数的正确方法
jvm·数据库·python
斯班奇的好朋友阿法法4 小时前
IP白名单 + 预共享密钥跳转服务
django
2301_809204704 小时前
如何用 Babel 将最新的 JS 特性转译为旧版浏览器兼容代码
jvm·数据库·python
kels88994 小时前
2026 年黄金实时价格数据 API 接口实测推荐
开发语言·笔记·python·金融·区块链
深蓝海拓4 小时前
用HSL颜色系统改造qdarkstyle样式表库
前端·笔记·python·qt·学习
深海鱼在掘金4 小时前
深入浅出 LangChain —— 第十四章:可观测性与生产运维
人工智能·langchain·agent