本页面涵盖了Langflow的核心组件架构,包括组件类层次结构、图执行引擎、顶点管理系统以及组件生命周期流程。
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
组件系统围绕定义组件接口和执行模型的两个主要类展开。
CustomComponent 类为所有自定义组件提供了基础接口
来源: src/backend/base/langflow/custom/custom_component/custom_component.py35-102 src/backend/base/langflow/custom/custom_component/component.py94-161
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
图执行引擎通过一个复杂的顶点管理系统来协调组件执行,该系统处理依赖关系、状态跟踪和执行顺序。
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
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
顶点是组件的执行包装器,负责管理它们在图执行上下文中的状态、依赖关系和生命周期。
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
顶点跟踪执行状态并管理组件生命周期
| 状态管理 | 描述 | 触发器 |
|---|---|---|
ACTIVE | 准备执行 | 初始状态、重新激活 |
INACTIVE | 排除在执行之外 | 手动停用、条件逻辑 |
ERROR | 执行失败 | 组件构建/运行错误 |
来源: src/backend/base/langflow/graph/vertex/base.py38-44 src/backend/base/langflow/graph/vertex/base.py141-149
组件通过顶点系统进行实例化和管理
来源: 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
组件执行过程遵循从实例化到结果生成的明确定义的生命周期。
组件通过评估和加载系统从代码中动态实例化
来源: src/backend/base/langflow/interface/initialize/loading.py24-50 src/backend/base/langflow/interface/initialize/loading.py140-194
组件的构建流程在 CustomComponent 和 Component 类型之间有所不同
| 构建类型 | 方法 | 描述 |
|---|---|---|
| 自定义组件 | 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
组件生成的结果和制品由顶点进行处理
| 工件类型 | 目的 | 生成者 |
|---|---|---|
结果(results) | 主要的组件输出 | 组件执行 |
制品(artifacts) | 元数据和显示信息 | 组件构建过程 |
输出日志(outputs_logs) | 结构化输出数据 | 顶点处理 |
日志(logs) | 执行日志 | 追踪系统 |
来源: src/backend/base/langflow/graph/vertex/base.py454-470 src/backend/base/langflow/graph/schema.py11-47
组件通过结构化的输入和输出规范来定义其接口,从而实现图的连接性和参数管理。
组件使用 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
组件定义了输出,这些输出指定了数据类型和其他组件的连接点。
来源: 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
组件通过一个复杂的连接管理系统相互连接。
| 连接类型 | 目的 | 实现 |
|---|---|---|
| 直接连接 | 组件输出 → 组件输入 | _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
许多组件,特别是 LLM 组件,支持流式响应。
来源: src/backend/base/langflow/base/models/model.py227-228
LLM 组件从模型响应中提取并格式化有用的元数据。
来源: src/backend/base/langflow/base/models/model.py232-233 src/backend/base/langflow/base/models/model.py114-161
组件可以使用输出解析器来转换原始模型输出。
来源: src/backend/base/langflow/base/models/model.py217-218
Langflow 的内置组件为构建语言模型应用程序提供了一套全面的构建块。组件系统使用一致的接口和继承模式,便于在 Flow Editor 中连接和配置组件。
核心组件类型(LLMs、链、代理、工具、内存和向量存储)涵盖了大多数 LLM 应用程序所需的功能范围,从简单的提示-响应流程到复杂的基于代理的系统。