菜单

组件架构和执行

相关源文件

本页面涵盖了Langflow的核心组件架构,包括组件类层次结构、图执行引擎、顶点管理系统以及组件生命周期流程。

1. 组件类架构

Langflow组件系统建立在分层架构之上,自定义组件、其执行环境以及协调它们的图引擎之间有清晰的划分。

组件架构概述

来源: src/backend/base/langflow/custom/custom_component/custom_component.py35 src/backend/base/langflow/custom/custom_component/component.py94 src/backend/base/langflow/graph/vertex/base.py46 src/backend/base/langflow/graph/graph/base.py60 src/backend/base/langflow/interface/initialize/loading.py24-50

2. 核心组件类

组件系统围绕定义组件接口和执行模型的两个主要类展开。

2.1. CustomComponent 基类

CustomComponent 类为所有自定义组件提供了基础接口

来源: src/backend/base/langflow/custom/custom_component/custom_component.py35-102 src/backend/base/langflow/custom/custom_component/component.py94-161

2.2. 组件类结构

Component 类扩展了CustomComponent,增加了执行特定的功能

功能目的关键方法
输入/输出管理定义组件接口map_inputs(), map_outputs()
执行控制处理组件执行run(), _run(), build_results()
参数处理管理组件参数set_attributes(), validate()
状态管理跟踪组件状态set_vertex(), get_state()
连接管理处理组件连接set(), _process_connection_or_parameter()

来源: src/backend/base/langflow/custom/custom_component/component.py154-161 src/backend/base/langflow/custom/custom_component/component.py355-361 src/backend/base/langflow/custom/custom_component/component.py423-455

3. 图执行引擎

图执行引擎通过一个复杂的顶点管理系统来协调组件执行,该系统处理依赖关系、状态跟踪和执行顺序。

3.1. Graph 类架构

Graph 类作为中央执行协调器

来源: src/backend/base/langflow/graph/graph/base.py60-148 src/backend/base/langflow/graph/graph/base.py362-372 src/backend/base/langflow/graph/graph/base.py497-523

3.2. RunnableVerticesManager

RunnableVerticesManager 负责执行顺序和依赖关系解析

组件目的关键数据结构
run_predecessors跟踪顶点依赖关系dict[str, list[str]]
vertices_to_run待执行的顶点set[str]
vertices_being_run当前正在执行的顶点set[str]
cycle_vertices执行循环中的顶点set[str]

来源: src/backend/base/langflow/graph/graph/runnable_vertices_manager.py4-46

4. 顶点管理系统

顶点是组件的执行包装器,负责管理它们在图执行上下文中的状态、依赖关系和生命周期。

4.1. Vertex 类结构

Vertex 类提供了组件的执行环境

来源: src/backend/base/langflow/graph/vertex/base.py46-111 src/backend/base/langflow/graph/vertex/base.py38-44 src/backend/base/langflow/graph/vertex/base.py380-413

4.2. Vertex 状态管理

顶点跟踪执行状态并管理组件生命周期

状态管理描述触发器
ACTIVE准备执行初始状态、重新激活
INACTIVE排除在执行之外手动停用、条件逻辑
ERROR执行失败组件构建/运行错误

来源: src/backend/base/langflow/graph/vertex/base.py38-44 src/backend/base/langflow/graph/vertex/base.py141-149

4.3. 组件-顶点集成

组件通过顶点系统进行实例化和管理

来源: src/backend/base/langflow/graph/vertex/base.py380-413 src/backend/base/langflow/interface/initialize/loading.py24-50 src/backend/base/langflow/graph/vertex/base.py454-470

5. 组件生命周期与执行流程

组件执行过程遵循从实例化到结果生成的明确定义的生命周期。

5.1. 组件实例化过程

组件通过评估和加载系统从代码中动态实例化

来源: src/backend/base/langflow/interface/initialize/loading.py24-50 src/backend/base/langflow/interface/initialize/loading.py140-194

5.2. 组件构建流程

组件的构建流程在 CustomComponentComponent 类型之间有所不同

构建类型方法描述
自定义组件build_custom_component()使用参数调用组件的 build() 方法
常规组件build_component()调用组件的 build_results() 方法

来源: src/backend/base/langflow/interface/initialize/loading.py53-72 src/backend/base/langflow/interface/initialize/loading.py140-194 src/backend/base/langflow/graph/vertex/base.py454-470

5.3. 结果处理与制品

组件生成的结果和制品由顶点进行处理

工件类型目的生成者
结果(results)主要的组件输出组件执行
制品(artifacts)元数据和显示信息组件构建过程
输出日志(outputs_logs)结构化输出数据顶点处理
日志(logs)执行日志追踪系统

来源: src/backend/base/langflow/graph/vertex/base.py454-470 src/backend/base/langflow/graph/schema.py11-47

6. 组件输入/输出系统

组件通过结构化的输入和输出规范来定义其接口,从而实现图的连接性和参数管理。

6.1. 输入系统架构

组件使用 Input 类来定义输入,该类包含类型验证和参数处理功能。

来源: src/backend/base/langflow/custom/custom_component/component.py456-474 src/backend/base/langflow/custom/custom_component/component.py867-877 src/backend/base/langflow/template/field/base.py34-163

6.2. 输出系统架构

组件定义了输出,这些输出指定了数据类型和其他组件的连接点。

来源: src/backend/base/langflow/custom/custom_component/component.py423-455 src/backend/base/langflow/custom/custom_component/component.py532-542 src/backend/base/langflow/template/field/base.py165-223

6.3. 组件连接系统

组件通过一个复杂的连接管理系统相互连接。

连接类型目的实现
直接连接组件输出 → 组件输入_process_connection_or_parameter()
方法连接特定输出方法 → 输入_find_matching_output_method()
列表连接多个组件 → 单个输入_process_connection_or_parameters()

来源: src/backend/base/langflow/custom/custom_component/component.py647-674 src/backend/base/langflow/custom/custom_component/component.py591-645

7. 高级组件功能

7.1. 流式支持

许多组件,特别是 LLM 组件,支持流式响应。

来源: src/backend/base/langflow/base/models/model.py227-228

7.2. 响应元数据

LLM 组件从模型响应中提取并格式化有用的元数据。

来源: src/backend/base/langflow/base/models/model.py232-233 src/backend/base/langflow/base/models/model.py114-161

7.3. 输出解析

组件可以使用输出解析器来转换原始模型输出。

来源: src/backend/base/langflow/base/models/model.py217-218

8. 总结

Langflow 的内置组件为构建语言模型应用程序提供了一套全面的构建块。组件系统使用一致的接口和继承模式,便于在 Flow Editor 中连接和配置组件。

核心组件类型(LLMs、链、代理、工具、内存和向量存储)涵盖了大多数 LLM 应用程序所需的功能范围,从简单的提示-响应流程到复杂的基于代理的系统。