28.Langflow架构深度分析

作者:

在

项目: langflow-ai/langflow

Stars: 154k+ | License: MIT | 语言: Python + TypeScript

定位: 可视化 AI 工作流构建与部署平台,支持多 Agent 编排


一、项目概览与核心理念

Langflow 是一个用于构建和部署 AI 驱动的 Agent 和工作流的可视化平台。它提供拖拽式界面,让用户通过连接组件节点来构建 LLM 应用,同时内置 API 服务器和 MCP 服务器,可将工作流转化为工具集成到任意框架中。项目创建于 2023 年 2 月,目前已成为 AI 工作流可视化领域 star 数最高的开源项目之一(154k+)。

核心理念:“Source code access lets you customize any component using Python” — 每个可视化组件背后都是真正的 Python 代码,用户既可以拖拽使用,也可以直接编写 Python 自定义组件。这种”可视化 + 代码”的双模态设计是 Langflow 区别于纯低代码平台的关键差异。


二、整体架构分层

Langflow 采用经典的前后端分离 + 服务化后端架构:

前端层

  • 基于 React + TypeScript 构建
  • 使用 React Flow 作为画布引擎,实现节点拖拽、连线、缩放等交互
  • 通过 Vite 构建,支持热重载开发

后端层

  • 基于 FastAPI (Python) 构建 REST API
  • 核心包路径: src/backend/base/langflow/
  • 采用 lfx 作为底层引擎包(langflow 包本身是对 lfx 的封装/重导出)

数据层

  • SQLite / PostgreSQL 作为持久化存储(通过 SQLAlchemy ORM)
  • 内存缓存层(CacheService)
  • 向量数据库集成(支持多种向量存储后端)

三、图引擎(Graph Engine)— 核心执行模型

图引擎是 Langflow 最核心的子系统,位于 langflow/graph/ 目录。它将用户的可视化工作流抽象为有向无环图(DAG),负责拓扑排序、节点调度和数据流传递。

3.1 核心类结构

graph/
├── __init__.py          # 导出: Graph, Edge, Vertex, InterfaceVertex, StateVertex, CustomComponentVertex
├── graph/
│   └── base.py          # Graph 类 — 整个图的管理器
├── vertex/
│   ├── base.py          # Vertex 基类 — 图中的节点
│   └── vertex_types.py  # 特化顶点类型
├── edge/
│   └── base.py          # Edge 类 — 节点间的连接
└── state/               # 状态管理(检查点、持久化)

3.2 Graph 类

Graph 是整个执行图的管理器,负责:

  • 图构建: 从 JSON Flow 定义解析节点和边,构建内存中的图结构
  • 拓扑排序: 确定节点的执行顺序,确保依赖关系被正确满足
  • 运行调度: 按拓扑序依次(或并发)执行各节点
  • 缓存策略: 通过 warm_graph 机制预热常用图,减少冷启动延迟
  • 状态管理: 支持检查点(checkpoint)机制,在多轮对话中保持状态

3.3 Vertex 体系

Vertex 是图中的节点,对应用户界面上的一个组件。系统定义了三种特殊化类型:

类型 用途

|——|——|

Vertex (基类) 通用组件节点
InterfaceVertex 接口节点 — 处理输入/输出边界
CustomComponentVertex 用户自定义 Python 组件
StateVertex 有状态节点 — 维护跨执行的上下文

每个 Vertex 内部封装了:

  • 输入/输出端口定义(inputs/outputs)
  • 组件实例的生命周期管理
  • 执行逻辑(build → run → output)
  • 错误处理和重试策略

3.4 Edge 类

Edge 表示两个 Vertex 之间的数据连接,定义了:

  • 源节点和目标节点
  • 源端口和目标端口
  • 数据类型匹配验证
  • 数据传递协议

四、接口层(Interface Layer)

接口层位于 langflow/interface/,是连接图引擎和外部系统的中间层:

interface/
├── __init__.py      # 重导出 lfx.interface.*
├── components.py    # 组件注册与发现
├── listing.py       # 组件列表查询
├── run.py           # 运行时辅助(内存键管理等)
├── utils.py         # 工具函数
├── importing/       # 动态导入机制
└── initialize/      # 组件初始化

关键设计:

  • components.py: 负责组件的注册和发现机制,扫描内置组件和用户自定义组件
  • listing.py: 提供组件分类列表,支持前端按类别展示
  • run.py: 运行时辅助函数,包括 LangChain 对象的内存键管理(get_memory_key、update_memory_keys)
  • importing/: 动态导入模块,支持运行时加载用户自定义 Python 组件
  • initialize/: 组件初始化逻辑,处理参数注入和依赖解析

值得注意的是,Langflow 正在进行包重构 — 大量核心代码从 langflow 包迁移到 lfx 包,langflow 包中的许多模块现在只是 lfx 的重导出(re-export),保持向后兼容。


五、服务化架构(Service Layer)

后端采用服务定位器模式(Service Locator Pattern)管理所有基础设施服务,位于 langflow/services/:

5.1 服务基类

class Service(ABC):
    name: str
    ready: bool = False
    
    def get_schema(self) -> dict  # 自省:列出所有公开方法
    async def teardown(self)      # 清理资源
    def set_ready(self)           # 标记服务就绪

每个服务都是抽象基类 Service 的子类,支持自省(get_schema)和优雅关闭(teardown)。

5.2 服务管理器

ServiceManager 是所有服务的中央注册中心,通过工厂模式创建服务实例。注册顺序有依赖关系(如 Settings → Cache → Session)。

5.3 服务清单

Langflow 后端注册了 28+ 个服务,覆盖完整的企业级需求:

服务类别 具体服务

|———-|———-|

核心运行时 chat, session, task, job_queue, jobs
数据持久化 database, storage, cache, checkpoint
安全认证 auth, authorization
流处理 flow, flow_events
可观测性 telemetry, telemetry_writer, tracing
部署运维 deployment_artifacts, warm_registry
策略治理 catalog_policy, model_provider_policy, policy_bundle, rate_limit
其他 variable, memory_base, shared_component_cache, background_execution, transaction

六、API 层设计

API 基于 FastAPI,分为 v1 和 v2 两个版本:

v1 路由(主要 API)

  • flows_router / flow_events_router / flow_version_router — 工作流 CRUD
  • chat_router — 对话接口(核心交互入口)
  • mcp_router / mcp_projects_router — MCP 协议集成
  • monitor_router / traces_router — 监控和追踪
  • users_router / login_router / api_key_router — 用户认证
  • store_router — 组件商店
  • knowledge_bases_router / memories_router — 知识库和记忆
  • voice_mode_router — 语音模式
  • openai_responses_router — OpenAI 兼容接口
  • authz_*_router — 细粒度授权(角色、团队、共享、审计)

v2 路由(新版 API)

  • workflow_router_v2 — 新版工作流 API
  • mcp_router_v2 — 新版 MCP API
  • files_router_v2 — 文件管理
  • registration_router_v2 — 用户注册

关键 API 模块

  • build.py — 图构建 API,将 JSON Flow 编译为可执行 Graph
  • warm_graph.py — 图预热,减少首次执行延迟
  • schemas.py — Pydantic 数据模型定义

七、组件系统

组件是 Langflow 的核心扩展单元,每个组件是一个 Python 类,定义了:

  • 输入端口: 文本、数字、LLM、向量存储等类型化输入
  • 输出端口: 处理结果的类型化输出
  • 执行逻辑: build() 方法中的处理代码
  • 元数据: 名称、描述、图标、分类

组件分为:

  1. 内置组件: 官方提供的 LLM、向量数据库、工具等
  2. 自定义组件: 用户编写的 Python 组件(CustomComponentVertex)
  3. 商店组件: 通过 Langflow Store 共享的社区组件

八、MCP 协议集成

Langflow 深度集成了 Model Context Protocol (MCP):

  • 每个 Flow 可以暴露为 MCP Server 的工具
  • 支持 MCP 项目管理(mcp_projects_router)
  • v1 和 v2 均有 MCP 路由
  • 这使得 Langflow 构建的工作流可以被任何 MCP 客户端(如 Claude Desktop、Cursor)调用

九、前端架构

前端使用 React + TypeScript + React Flow:

  • 画布引擎: React Flow 提供节点拖拽、连线、缩放、小地图
  • 状态管理: 状态管理框架处理图的本地状态
  • API 通信: 通过 REST API + WebSocket(flow_events)与后端交互
  • 组件面板: 左侧组件列表,支持搜索和分类
  • Playground: 内嵌测试界面,支持逐步调试
  • 设计系统: 完整的 design token 体系(DESIGN.md 定义了 100+ 颜色变量)
  • 国际化: 支持多语言(i18n skill 存在)

十、架构特征总结与启示

10.1 架构优势

  1. 可视化 + 代码双模态: 既降低门槛又不限制能力
  2. 服务化后端: 28+ 个独立服务,关注点分离清晰
  3. 图引擎抽象: 将工作流统一为 DAG,拓扑排序保证执行正确性
  4. 组件可扩展: Python 原生自定义组件,无 vendor lock-in
  5. MCP 集成: 前瞻性地拥抱 AI Agent 工具协议标准
  6. 企业级完备: 认证、授权、审计、限流、遥测一应俱全

10.2 架构复杂度

  1. 包重构中: langflow → lfx 迁移进行中,存在双重维护
  2. 服务依赖图复杂: 28+ 服务的初始化顺序和依赖关系需要仔细管理
  3. 前后端耦合: Flow JSON schema 是前后端的隐式契约
  4. 图执行模型: 状态节点(StateVertex)引入了执行复杂度

10.3 对 OpenMate 的参考价值

维度 Langflow 做法 可借鉴点

|——|————–|———-|

可视化编排 React Flow 画布 工作流可视化编辑器设计
组件系统 Python 类 + 端口定义 可扩展组件架构
服务管理 ServiceLocator + 工厂模式 后端服务注册与发现
图引擎 DAG 拓扑排序执行 工作流执行引擎设计
MCP 集成 Flow → MCP Tool AI Agent 工具化暴露
API 版本化 v1/v2 并存 渐进式 API 演进

*分析基于 langflow-ai/langflow main 分支,2026 年 9 月*

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注