水军大提督 发表于 前天 11:24

LangChain Runnable简介

LangChain 是一个强大的语言模型开发框架,而 Runnable 接口则是其核心底子之一。通过 Runnable,可以将各种处理逻辑模块化、标准化,并灵活地组合成强大的链式处理流程。本文将详细介绍 Runnable 接口的原理、常用方法、典型用法,并给出详细代码示例,帮助你快速上手。
什么是 Runnable 接口?
Runnable 是一个用于界说“可运行组件”的抽象协议。它答应你将各类处理单元(如文本预处理、模型推理、输出解析等)标准化封装,同一调用,并在链式流程中灵活组合。
重要特性包括:


[*]标准化:同一的调用和组合接口
[*]组合性:可串联(顺序)、并联(并行)多个 Runnable
[*]扩展性:支持同步、异步、批量、流式等多种实行方式
核心方法与用法

Runnable 接口通常包括以下核心方法:


[*]invoke:对单个输入实行处理,返回输出
[*]batch:对一组输入批量处理,返回输出列表
[*]stream:对单个输入举行流式处理,边处理边输出
[*]对应的异步方法:ainvoke、abatch、astream
[*]input_schema、output_schema:可选,用于描述输入输出数据结构
代码示例

1. 自界说Runnable 类

假设我们要实现一个简单的文本处理组件,将输入文本转为大写:
from abc import ABC, abstractmethod

class Runnable(ABC):
    @abstractmethod
    def run(self, input_data):
      pass

    @abstractmethod
    def configure(self, **kwargs):
      pass

    @abstractmethod
    def validate(self, input_data):
      pass

class TextToUpperCase(Runnable):
    def configure(self, **kwargs):
      pass

    def validate(self, input_data):
      if not isinstance(input_data, str):
            raise ValueError("Input data must be a string")

    def run(self, input_data):
      self.validate(input_data)
      return input_data.upper()

# 使用示例
processor = TextToUpperCase()
print(processor.run("hello, langchain"))# 输出:HELLO, LANGCHAIN
该例中,TextToUpperCase 组件实现了 Runnable 接口,支持配置、校验和处理输入。
2. 使用 LangChain 内置 RunnableLambda

LangChain 提供了更轻便的方式,将恣意函数包装为 Runnable:
from langchain_core.runnables import RunnableLambda

def greet(name):
    return f"Hello, {name}!"

greet_runnable = RunnableLambda(greet)
result = greet_runnable.invoke("Alice")
print(result)# 输出:Hello, Alice!
这样,任何 Python 函数都能被包装成标准 Runnable,便于链式组合和同一管理。
3. 组合 Runnables 构建链式流程

使用 | 运算符或 pipe 方法,可以将多个Runnable 顺序组合,形成复杂的处理链:
from langchain_core.runnables import RunnableLambda

add_one = RunnableLambda(lambda x: x + 1)
mul_two = RunnableLambda(lambda x: x * 2)

sequence = add_one | mul_two
print(sequence.invoke(1))# 输出:4
print(sequence.batch())# 输出:
这里,输入先加 1,再乘 2,形成了一个处理链。
应用场景



[*]文本预处理(如分词、去除停用词、文本规范化)
[*]模型推理(如调用 LLM 举行生成)
[*]输出解析与后处理
[*]多步骤管道集成(如检索-生成、问答系统)
总结

LangChain 的 Runnable 接口为构建可扩展、可组合的语言处理系统提供了坚实底子。通过标准化接口和灵活的链式组合机制,开发者可以高效地搭建和管理复杂的天然语言处理流程。无论是简单的函数包装,还是多步骤的复杂管道,Runnable 都能让你的项目结构更清楚、更易维护。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: LangChain Runnable简介