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 编译为可执行 Graphwarm_graph.py— 图预热,减少首次执行延迟schemas.py— Pydantic 数据模型定义
七、组件系统
组件是 Langflow 的核心扩展单元,每个组件是一个 Python 类,定义了:
- 输入端口: 文本、数字、LLM、向量存储等类型化输入
- 输出端口: 处理结果的类型化输出
- 执行逻辑:
build()方法中的处理代码 - 元数据: 名称、描述、图标、分类
组件分为:
- 内置组件: 官方提供的 LLM、向量数据库、工具等
- 自定义组件: 用户编写的 Python 组件(
CustomComponentVertex) - 商店组件: 通过 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 架构优势
- 可视化 + 代码双模态: 既降低门槛又不限制能力
- 服务化后端: 28+ 个独立服务,关注点分离清晰
- 图引擎抽象: 将工作流统一为 DAG,拓扑排序保证执行正确性
- 组件可扩展: Python 原生自定义组件,无 vendor lock-in
- MCP 集成: 前瞻性地拥抱 AI Agent 工具协议标准
- 企业级完备: 认证、授权、审计、限流、遥测一应俱全
10.2 架构复杂度
- 包重构中:
langflow→lfx迁移进行中,存在双重维护 - 服务依赖图复杂: 28+ 服务的初始化顺序和依赖关系需要仔细管理
- 前后端耦合: Flow JSON schema 是前后端的隐式契约
- 图执行模型: 状态节点(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 月*
发表回复