组件系统是 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 模块和顶点管理系统处理组件实例化、参数解析和结果处理。
实例化过程包含几个关键步骤
get_params() 在 loading.py74-78 中进行转换和验证。eval_custom_component_code() 在 loading.py40 中动态评估。执行管道处理同步和异步组件构建
来源: src/backend/base/langflow/interface/initialize/loading.py:66-71, src/backend/base/langflow/interface/initialize/loading.py:140-194
自定义组件遵循标准化结构,支持动态加载和执行
该系统支持多种组件发现机制
DirectoryReader 在 directory_reader.py41-89 中从文件系统目录发现组件。eval_custom_component_code() 在运行时评估组件代码。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 渲染的字段
来源: 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