Langflow:把 prompt、模型与工具拖成可部署 API 的画布
Langflow 用可视化画布把 prompt、模型和工具串成可运行流程,再一键部署为 API 或导出 SDK。本文拆解其节点式架构、安装与最小用法,并对照同类项目讲清定位差异。
把一个 AI workflow 从画布拖出来,最后变成别的系统能调用的 API,中间要跨过多少道坎?Langflow 的答案是:让这道坎不存在。它把 prompt、模型、工具、检索器全部变成画布上的节点,连好线,流程就跑起来了;再点一下,同一张图变成 API,或者变成 MCP server 上的一个工具。这件事听起来像低代码玩具,但 Langflow 的定位不是玩具——它允许你在任何节点里写 Python,源码随时可改。
先看它到底由什么组成
README 里没有贴架构图,但功能清单已经把分层说清楚了。按职责归纳,Langflow 是四层结构:
第一层:可视化画布(Visual builder interface)
这是用户直接面对的界面。节点代表能力单元——prompt 模板、LLM 调用、向量库检索、工具函数、多 agent 编排。连线代表数据流。README 的 topics 里明确列了 react-flow,说明画布本身是基于 React Flow 这类图编辑库实现的(这是从 topics 推出来的,README 未直接描述实现细节)。画布不是纯配置界面,它下面挂着一个可执行的 flow 定义。
第二层:组件层(Source code access)
每个节点背后是一段 Python 组件代码。README 的原话是 "Source code access lets you customize any component using Python"——这意味着节点不是黑盒,你可以打开任意组件改它的实现。这一层是 Langflow 和纯低代码平台的分水岭:画布只是入口,真正的逻辑仍然是 Python。
第三层:执行与编排层(Multi-agent orchestration with conversation management and retrieval)
flow 被触发后,这一层负责按图的拓扑顺序执行节点,处理对话状态、检索上下文、多 agent 之间的消息传递。README 把 "conversation management and retrieval" 和 "multi-agent orchestration" 放在同一条特性里,说明会话管理和检索不是外挂,而是编排层的内置能力。
第四层:对外暴露层(API / MCP server / JSON 导出)
这是 Langflow 最值得说的一层。README 明确写了三种出口:
- Deploy as an API:flow 直接变成 HTTP 接口;
- Deploy as an MCP server:flow 变成 MCP 客户端可调用的工具;
- Export as JSON for Python apps:导出成 JSON,供 Python 应用加载。
"built-in API and MCP servers that turn every workflow into a tool"——这句话是整个项目的中枢设计。它意味着 Langflow 的产物不是一张截图或一份文档,而是一个可被其他框架、其他技术栈消费的运行时对象。
数据流的方向可以这样理解:画布上的一次连线,定义了节点 A 的输出如何进入节点 B 的输入;执行时编排层按这个依赖关系推进;最终产物通过 API/MCP/JSON 三种形态之一离开 Langflow,进入外部应用。画布是编写态,API 是运行态,两者是同一份 flow 定义的两种视图。
| 层 | 职责 | README 中的对应表述 |
|---|---|---|
| 可视化画布 | 拖拽节点、连线、迭代流程 | Visual builder interface |
| 组件层 | 每个节点的 Python 实现,可改 | Source code access |
| 编排层 | 执行 flow、管理会话与检索、多 agent 协作 | Multi-agent orchestration with conversation management and retrieval |
| 暴露层 | API / MCP server / JSON 导出 | Deploy as an API;Deploy as an MCP server;Export as JSON |
另外两条特性横跨各层:Interactive playground 提供逐步执行的控制能力,用来在画布内立即测试和调整 flow;Observability 通过 LangSmith、LangFuse 等集成把运行过程接出去。前者是开发时的调试面,后者是上线后的观测面。
装起来只有两条命令
README 把本地安装列为推荐路径,前置条件是 Python 3.10–3.14 和 uv。从空目录开始:
shelluv pip install langflow -U
然后启动:
shelluv run langflow run
服务起在 http://127.0.0.1:7860。
这里有一个容易被忽略但 README 专门用一段话强调的细节:官方发布包和打了 tag 的源码归档默认关闭自动登录。也就是说,装完直接跑,你需要先设置 LANGFLOW_SUPERUSER_PASSWORD,然后用用户名 langflow(或你配置的 LANGFLOW_SUPERUSER)登录。开发分支则保留自动登录的默认行为。README 还提示,如果你原本是自动登录的安装,切换到新默认值前要先看升级说明。
Docker 路径同样要求先设密码:
shellread -rsp "Langflow administrator password: " LANGFLOW_SUPERUSER_PASSWORD; echo export LANGFLOW_SUPERUSER_PASSWORD docker run -p 7860:7860 -e LANGFLOW_SUPERUSER_PASSWORD langflowai/langflow:latest
如果你要改 Langflow 本身,从仓库根目录跑 make run_cli,具体见 DEVELOPMENT.md。README 还提到 Langflow Desktop 这个打包好全部依赖的桌面版,支持 Windows 和 macOS,省掉 Python 环境和包管理——素材里没有版本号,这里也不编。
三种出口,决定了它和"教程类项目"不是一回事
把 Langflow 和素材里给的对照项目放在一起看,差异不在功能多少,而在产物形态。
generative-ai-for-beginners 和 ai-agents-for-beginners 都是课程,产物是 notebook 和你脑子里的理解;LLMs-from-scratch 的产物是你亲手写的 attention 和训练循环;Prompt-Engineering-Guide 的产物是调优过的 prompt 和 workflow 设计经验。这四个都是"学"的形态。
Langflow 的产物是一个可部署的运行时。你搭完 flow,得到的是 API 端点、MCP 工具或一份 JSON。这是"交付"的形态。README 里 "Enterprise-ready security and scalability" 和部署章节(可部署到主流云)也印证了这一点:它假设你会把它放进生产链路,而不只是跑个 demo。
shadcn-ui 是另一个有意思的对照。两者都强调"源码归你"——shadcn 用 CLI 把组件源码写进你的仓库,Langflow 让你直接改节点的 Python。区别在于 shadcn 管的是前端组件,Langflow 管的是 AI 流程编排。相同的产品哲学:可视化/脚手架只是起点,最终控制权交回代码。
| 项目 | 形态 | 产物 | 语言 |
|---|---|---|---|
| Langflow | 可视化 builder + 运行时 | 可部署 API / MCP 工具 / JSON | Python |
| shadcn-ui | 组件源码分发 | 复制进仓库的 React 组件 | TypeScript |
| generative-ai-for-beginners | 课程 | 21 节课的 notebook 实践 | Jupyter Notebook |
| LLMs-from-scratch | 教程 | 从零实现的 LLM 代码 | Jupyter Notebook |
| Prompt-Engineering-Guide | 指南 | prompt/RAG/agent 的教程与示例 | MDX |
| ai-agents-for-beginners | 课程 | 18 节课的 agent 实践 | Jupyter Notebook |
Langflow 在 GitHub 上的体量也支撑这个定位:155775 stars、10240 forks、MIT 许可、仓库创建于 2023-02-08,最近推送时间 2026-10-17。topics 覆盖 agents、chatgpt、generative-ai、large-language-models、multiagent、react-flow——最后这个直接点明了画布的技术底座。
它补的是什么空
在 Langflow 之前,搭一个 RAG 或 agent 流程的典型路径是:写 Python 脚本调 LLM SDK,手写检索逻辑,手写对话状态管理,然后自己包一层 FastAPI 暴露出去。每一步都不难,但每一步都要重写,而且改一个 prompt 就要改代码、重启、再测。
Langflow 把这条路径压缩成:画布上搭 → playground 里逐步测 → 一键出 API。官网的描述是 "low-code AI builder for agentic and retrieval-augmented generation (RAG) apps. Code in Python and use any LLM or vector database."——注意 "Code in Python" 和 "low-code" 并列,这不是矛盾,而是它的真实主张:低代码负责编排,Python 负责兜底。
README 的 "batteries included" 也指向同一件事:主流 LLM、向量数据库、不断增长的 AI 工具库都内置支持。你不需要为每个模型写适配层,节点已经在那儿了。
谁该用它,谁不该
适合:需要快速把 agent/RAG 流程从想法推到可调用接口的团队;想让非 Python 同事也能参与流程设计的团队;需要把已有 flow 暴露成 MCP 工具、接进其他 agent 框架的场景;以及想在一个地方同时管理多 agent 会话与检索的项目。
不太适合:只需要跑一次实验、不需要部署的场景——直接写脚本更快;以及需要极致性能控制、不愿承担可视化层抽象开销的场景——虽然能改 Python,但 flow 的执行仍然经过编排层。
一个务实的判断标准:如果你的 AI 流程最终要变成别人能调用的东西,Langflow 的三种出口(API / MCP / JSON)就是它的核心价值;如果流程只活在你自己的 notebook 里,它的画布反而是多余的中间层。
源码在 github.com/langflow-ai/langflow,官网 www.langflow.org,MIT 许可,Python 3.10–3.14 可跑。装完设好 LANGFLOW_SUPERUSER_PASSWORD,两条命令就能在 7860 端口看到那张画布。