前言:
在旧版本的
LangChain 中,我们需要写很多复杂的 Chain 类(比如 LLMChain),但现在有了 Runnable 和 |,一切都变得像搭积木一样优雅和简单。
核心原理解析:什么是 Runnable 和 |?
- Runnable(可运行对象): 在最新的 LangChain 架构中,几乎所有的核心组件(Prompt 模板、大语言模型、输出解析器等)都实现了
Runnable接口。这意味着它们都有统一的标准方法,比如.invoke()(单次调用)、.stream()(流式输出)和.batch()(批量处理)。 - 管道符 (
|): 它的灵感来源于 Unix 系统的管道命令。它的作用是将左边 Runnable 的输出,无缝作为右边 Runnable 的输入。
例子
1 | from langchain_core.prompts import ChatPromptTemplate |
核心机制
- 标准化接口:任何实现了
Runnable接口的对象都可以参与管道串联。 - 自动状态传递:当你使用
|时,前一个组件完成处理后,会自动将结果传递给下一个组件的invoke方法,极大减少了中间代码。 - 组合能力:
chain本身也是一个Runnable,因此你可以将一个完整的chain再次通过|串联到另一个更大的流程中。