菜单

组件系统

相关源文件

组件系统是 Langflow 中核心的可扩展框架,它允许用户在可视化流程中创建、执行和管理 AI 组件。该系统为内置组件和自定义组件提供了基础,处理它们从实例化到执行和结果处理的整个生命周期。组件系统与图执行引擎集成,以实现可视化 AI 应用的构建。

有关流程管理和可视化编辑的信息,请参阅 流程编辑器系统。有关输入字段定义和验证的详细信息,请参阅 输入类型和字段系统

组件架构概述

组件系统围绕分层类结构构建,将组件定义与其运行时实例和执行上下文分开。

来源: src/backend/base/langflow/custom/custom_component/component.py:94-162, src/backend/base/langflow/graph/vertex/base.py:46-111, src/backend/base/langflow/interface/initialize/loading.py:24-51

组件生命周期和执行流程

组件生命周期包括在图执行上下文中的实例化、参数构建、执行和结果处理。

来源: src/backend/base/langflow/graph/vertex/base.py:380-414, src/backend/base/langflow/interface/initialize/loading.py:140-194, src/backend/base/langflow/custom/custom_component/component.py:355-362

核心组件类

组件基类

Component 类是 Langflow 中所有组件的主要基类,为组件行为、输入/输出管理和执行控制提供了必需的基础设施。

方法/属性目的文件引用
__init__()使用输入、输出和配置初始化组件component.py99-162
run()异步执行组件逻辑component.py355-362
set()将组件连接到其他组件或设置参数component.py331-345
build_results()处理组件执行并返回结果component.py727-738
_inputs将输入名称映射到 Input 对象的字典component.py112
_outputs_map将输出名称映射到 Output 对象的字典component.py113

自定义组件基类

CustomComponent 类为用户定义的组件提供了附加功能,包括状态管理、流程集成和数据处理的辅助方法。

方法/属性目的文件引用
build()组件逻辑的主要入口点(由子类覆盖)custom_component.py55
update_state()使用新值更新图状态custom_component.py119-127
get_state()从图中检索状态值custom_component.py169-177
to_data()将输入数据转换为 Data 对象custom_component.py265-318
stop()/start()控制组件执行流程custom_component.py129-157

来源: src/backend/base/langflow/custom/custom_component/component.py:94-162, src/backend/base/langflow/custom/custom_component/custom_component.py:68-101

组件执行引擎

执行引擎通过 loading.py 模块和顶点管理系统处理组件实例化、参数解析和结果处理。

组件实例化过程

实例化过程包含几个关键步骤

  1. 参数处理:通过 get_params()loading.py74-78 中进行转换和验证。
  2. 代码评估:组件代码使用 eval_custom_component_code()loading.py40 中动态评估。
  3. 实例创建:在 loading.py41-47 中使用经过处理的参数来实例化组件类。
  4. 属性设置:在 loading.py145 中从已验证的参数设置组件属性。

构建和执行管道

执行管道处理同步和异步组件构建

来源: src/backend/base/langflow/interface/initialize/loading.py:66-71, src/backend/base/langflow/interface/initialize/loading.py:140-194

自定义组件创建和注册

组件代码结构

自定义组件遵循标准化结构,支持动态加载和执行

组件发现和加载

该系统支持多种组件发现机制

  1. 基于目录的加载:使用 DirectoryReaderdirectory_reader.py41-89 中从文件系统目录发现组件。
  2. 动态评估:使用 eval_custom_component_code() 在运行时评估组件代码。
  3. 前端集成:组件表示为 CustomComponentFrontendNode 对象以用于 UI 渲染。

来源: src/backend/base/langflow/template/frontend_node/custom_components.py:5-42, src/backend/base/langflow/custom/directory_reader/directory_reader.py:41-89

输入和输出管理

输入系统架构

组件通过 Input 类定义输入,该类指定字段类型、验证规则和 UI 渲染属性。

输出系统架构

组件输出通过 Output 类进行管理,并与图执行流程集成。

输出属性目的文件引用
名称输出的唯一标识符base.py169-179
types输出可产生的类型列表base.py169-179
method生成此输出的组件方法base.py537-542
value当前输出值(在执行期间设置)base.py416-421

来源: src/backend/base/langflow/template/field/base.py:34-108, src/backend/base/langflow/custom/custom_component/component.py:456-474, src/backend/base/langflow/graph/vertex/base.py:325-347

前端集成与模板系统

组件模板生成

组件通过模板系统转换为前端表示

模板字段处理

模板系统将组件定义处理成可 UI 渲染的字段

  1. 字段发现:从类定义和方法签名中发现组件输入
  2. 字段配置:将输入属性映射到 UI 字段配置
  3. 类型解析:解析和验证输入/输出类型以用于前端显示
  4. 模板序列化:序列化整个模板以供前端使用

来源: src/backend/base/langflow/custom/custom_component/component.py:818-865, src/backend/base/langflow/template/frontend_node/base.py:9-51, src/backend/base/langflow/template/template/base.py:12-39