Flowise生产部署教程:将AI工作流变成可调用API
Flowise 不是又一个需要写代码的 LangChain 工程项目,而是一个真正让业务同学、产品、运营甚至非技术同事也能上手搭建 AI 应用的平台。它把复杂的 LLM 流程——比如 RAG 检索增强生成、多步 Agent 决策、工具调用链——变成画布上的节点和连线。更关键的是,它不只停留在“能跑”,而是原生支持一键导出为标准 REST API,让 AI 能力无缝嵌入你现有的系统:CRM、客服后台、内部知识库、小程序后端……都不再需要额外开发胶水代码。
本文不是从 GitHub clone 开始的玩具式体验,而是一份面向真实生产环境的部署指南。我们将聚焦三个核心问题:
- 如何在服务器上稳定、安全、可维护地运行 Flowise?
- 如何对接本地高性能推理引擎(vLLM),摆脱对 OpenAI 的依赖?
- 如何把画布里拖出来的那个“问答机器人”,变成一个别人能直接
curl调用的 API?
全程不碰 Docker Compose 的默认配置陷阱,不跳过数据库持久化和身份认证,不回避日志、监控、反向代理等运维细节。目标很明确:部署完,它就能上线,而不是“先跑起来再说”。
1. 理解 Flowise 的生产就绪能力
在动手前,先厘清 Flowise 为什么能走出实验室,走进生产环境。它的设计哲学不是“最小可行原型”,而是“开箱即用的生产级应用”。
1.1 它不是前端玩具,而是一个完整服务
很多可视化工具只提供 UI,后端逻辑仍需自己写。Flowise 不同:它本身就是一个 Node.js 服务,内置了完整的 HTTP 服务器、数据库抽象层、用户认证模块和 API 网关。你部署的不是一个“前端页面”,而是一个能独立处理请求、管理状态、存储数据的后端服务。
它的核心能力包括:
- 全栈一体化:前端画布 + 后端执行引擎 + API 接口全部打包在一个进程中。
- 零代码流程定义:所有逻辑通过 JSON 格式的 Flow 配置文件描述,天然适合版本控制(Git)和 CI/CD。
- API 优先设计:每个工作流不仅能在 UI 中测试,还能被赋予唯一的 endpoint,如
/api/v1/prediction/123abc,供外部系统调用。 - 企业级扩展点:支持 PostgreSQL 替代默认 SQLite,支持 JWT 认证,支持自定义节点插件,支持日志分级输出。
这意味着,你不需要为 Flowise 再搭一套 Flask/FastAPI 来暴露接口,它自己就是那个 API 服务。
1.2 vLLM 集成:为什么选择它而非 Ollama 或 HuggingFace Transformers?
镜像描述中提到“基于 vLLM 的本地模型工作流”,这绝非噱头。vLLM 是当前开源社区公认的、在 GPU 上推理速度最快的 LLM 引擎之一,其核心优势在于 PagedAttention 内存管理技术,能将吞吐量提升 2-4 倍,同时显著降低显存碎片。
对比其他常见本地推理方案:
- Ollama:易用性极佳,但默认使用 llama.cpp,CPU/GPU 切换不够灵活,高并发下延迟抖动明显。
- Transformers + accelerate:功能最全,但启动慢、内存占用高、缺乏细粒度的批处理控制。
- vLLM:专为服务化设计,原生支持 OpenAI 兼容 API(
/v1/chat/completions),与 Flowise 的 LLM 节点无缝对接;支持动态批处理、连续批处理(Continuous Batching)、量化(AWQ、GPTQ);官方 Docker 镜像开箱即用。
因此,在生产环境中,vLLM 是 Flowise 对接本地大模型的事实标准。它让 Flowise 不再是“演示工具”,而成为能承载真实业务流量的 AI 网关。
1.3 生产部署的三大支柱
一个能上线的 Flowise 实例,必须同时满足以下三点,缺一不可:
| 支柱 | 问题 | Flowise 解决方案 |
|---|---|---|
| 稳定性 | 进程意外退出、OOM 崩溃、长时间运行后性能下降 | 使用pm2或systemd进行进程守护;配置NODE_OPTIONS=--max-old-space-size=8192防止内存溢出;启用DEBUG=false减少日志开销 |
| 安全性 | 默认无密码访问、敏感 API 密钥硬编码、未加密通信 | 启用FLOWISE_USERNAME/FLOWISE_PASSWORD;配置FLOWISE_SECRETKEY_OVERWRITE加密 Flow 数据;通过 Nginx 反向代理强制 HTTPS |
| 可维护性 | 配置散落在.env、UI 设置、数据库中;升级困难;无法审计操作日志 | 所有配置统一由.env文件管理;Flow 数据库存储在独立路径(如/data/flowise.db);日志输出到文件并按天轮转 |
忽略其中任何一点,都意味着你的 AI 工作流只是个“沙盒”,离生产还有距离。
2. 服务器环境准备与基础部署
我们以一台 Ubuntu 22.04 服务器(4C8G,1x NVIDIA T4 GPU)为例,进行生产级部署。整个过程分为三步:环境初始化、vLLM 服务启动、Flowise 主服务部署。
2.1 系统依赖与 GPU 驱动检查
首先确保基础环境就绪:
# 更新系统并安装必要编译工具 sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake libopenblas-dev python3-pip python3-venv git curl wget # 检查 NVIDIA 驱动和 CUDA 是否可用(vLLM 依赖) nvidia-smi # 输出应显示 GPU 状态,且 Driver Version >= 515,CUDA Version >= 11.8 # 验证 nvidia-container-toolkit(Docker GPU 支持) sudo docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi如果nvidia-smi报错,请先安装驱动;如果 Docker GPU 报错,请参考 NVIDIA Container Toolkit 安装指南。
2.2 启动 vLLM 推理服务(OpenAI 兼容模式)
vLLM 服务将作为 Flowise 的“大脑”,所有 LLM 节点的请求最终都会转发给它。我们使用官方 Docker 镜像,以保证环境一致性。
# 创建 vLLM 工作目录 mkdir -p /data/vllm cd /data/vllm # 下载一个轻量级但效果不错的模型(Qwen2-1.5B-Instruct,约 1.2GB 显存) wget https://huggingface.co/Qwen/Qwen2-1.5B-Instruct/resolve/main/pytorch_model.bin -O qwen2-1.5b-instruct.bin # 启动 vLLM 服务,监听 8000 端口,暴露 OpenAI 兼容 API sudo docker run -d \ --name vllm-server \ --gpus all \ --shm-size=1g \ --ulimit memlock=-1 \ --ulimit stack=67108864 \ -p 8000:8000 \ -v $(pwd):/models \ --restart unless-stopped \ vllm/vllm-openai:latest \ --model /models/qwen2-1.5b-instruct \ --tensor-parallel-size 1 \ --dtype half \ --enable-prefix-caching \ --max-model-len 4096 \ --port 8000验证 vLLM 是否就绪:
curl http://localhost:8000/v1/models应返回包含qwen2-1.5b-instruct的 JSON。curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{"model": "qwen2-1.5b-instruct", "messages": [{"role": "user", "content": "你好"}]}'
应返回一段流畅的中文回复。
2.3 部署 Flowise 主服务(Node.js 方式)
虽然 Docker 部署简单,但在生产环境中,Node.js 直接部署更利于调试、监控和资源限制。我们采用pm2进行进程管理。
# 创建 Flowise 部署目录 sudo mkdir -p /opt/flowise sudo chown $USER:$USER /opt/flowise cd /opt/flowise # 克隆官方仓库(注意:使用 release 分支,避免不稳定 commit) git clone --branch v2.52.0 https://github.com/FlowiseAI/Flowise.git . pnpm install --no-frozen-lockfile # 构建生产包 pnpm build # 复制并编辑 .env 配置文件 cp packages/server/.env.example packages/server/.env nano packages/server/.env关键配置项修改如下(请根据实际环境调整):
# 服务端口,建议不要用默认 3000,避免冲突 PORT=3001 # 数据库:生产环境务必使用 PostgreSQL!SQLite 仅限开发 DATABASE_TYPE=postgres DATABASE_PORT=5432 DATABASE_HOST=localhost DATABASE_NAME=flowise DATABASE_USER=flowise_user DATABASE_PASSWORD=your_strong_password # 用户认证:强制开启,否则任何人都能访问你的工作流 FLOWISE_USERNAME=admin FLOWISE_PASSWORD=YourSecurePassword123! # 加密密钥:用于加密 Flow 中的敏感字段(如 API Key) FLOWISE_SECRETKEY_OVERWRITE=your_32_byte_secret_key_here_1234567890ab # 日志:输出到文件,便于运维查看 LOG_LEVEL=info LOG_PATH=/var/log/flowise # 关闭调试模式(DEBUG=true 会极大影响性能) DEBUG=false # 指向我们刚启动的 vLLM 服务 OPENAI_BASE_URL=http://localhost:8000/v1 # 注意:这里不填 OPENAI_API_KEY,因为 vLLM 不需要重要安全提示:
FLOWISE_SECRETKEY_OVERWRITE必须是 32 字节的随机字符串(可用openssl rand -hex 32生成)。DATABASE_PASSWORD和FLOWISE_PASSWORD必须强密码,且两者不能相同。OPENAI_BASE_URL指向的是 vLLM 的地址,不是 OpenAI 官方地址。
2.4 初始化 PostgreSQL 并启动服务
# 安装 PostgreSQL(Ubuntu) sudo apt install -y postgresql postgresql-contrib sudo systemctl enable postgresql # 切换到 postgres 用户创建数据库和用户 sudo -u postgres psql <<EOF CREATE DATABASE flowise; CREATE USER flowise_user WITH PASSWORD 'your_strong_password'; GRANT ALL PRIVILEGES ON DATABASE flowise TO flowise_user; \q EOF # 启动 Flowise 服务(使用 pm2 守护) pnpm start:server # 将 pm2 设置为开机自启 npx pm2 startup npx pm2 save # 查看服务状态 npx pm2 status # 应看到 flowise-server 状态为 online此时,访问http://your-server-ip:3001,输入admin/YourSecurePassword123!即可登录 Flowise UI。
3. 构建并发布第一个生产级 API 工作流
登录 UI 后,我们不再做“Hello World”式演示,而是构建一个真实场景:公司内部知识库问答 API。它将接收用户提问,从向量数据库中检索相关文档,并用本地大模型生成精准回答。
3.1 创建 RAG 工作流(拖拽式)
点击左上角
+ New Flow,命名为Internal-KB-QA。从左侧节点栏拖入以下节点,并按顺序连线:
Document(数据源)→ 选择Text,粘贴一段公司内部 FAQ 文本(或上传 PDF)。RecursiveCharacterTextSplitter(文本切分)→ 设置chunkSize=500,chunkOverlap=50。HNSWLib(向量存储)→Embedding选择HuggingFaceEmbeddings,modelName填sentence-transformers/all-MiniLM-L6-v2(轻量高效)。ChatModel(大模型)→Model Type选OpenAI,Base URL填http://localhost:8000/v1,Model Name填qwen2-1.5b-instruct。Prompt Template(提示词)→ 输入标准 RAG 提示:你是一个专业的公司内部助手。请根据以下检索到的上下文,准确、简洁地回答用户问题。如果上下文没有相关信息,请说“我暂时无法回答这个问题”。 上下文: {context} 问题:{question} 回答:RetrievalQA(RAG 链)→ 将VectorStore、ChatModel、PromptTemplate连入此节点。
点击右上角
Save,Flowise 会自动将该工作流保存到 PostgreSQL。
3.2 发布为 REST API
这是 Flowise 最强大的生产特性。无需写一行后端代码:
- 在 Flow 编辑页,点击右上角
...→Export as API。 - 系统会弹出一个对话框,显示该 Flow 的唯一 ID(如
a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8)和调用方式。 - 复制这个 ID,它就是你的 API 的“身份证”。
现在,你可以用任何语言调用它:
# 使用 curl 调用(替换 YOUR_FLOW_ID) curl -X POST "http://your-server-ip:3001/api/v1/prediction/YOUR_FLOW_ID" \ -H "Content-Type: application/json" \ -d '{ "question": "我们的报销流程是怎样的?" }'响应体将是一个 JSON,包含text字段,即模型生成的答案。
生产就绪验证:
- 该 API 是无状态的,可水平扩展(部署多个 Flowise 实例,前面加负载均衡)。
- 请求体和响应体完全符合 OpenAPI 规范,可直接导入 Postman 或 Swagger UI。
- 所有日志会记录在
/var/log/flowise,包含请求时间、耗时、错误堆栈。
3.3 配置 Nginx 反向代理与 HTTPS(可选但强烈推荐)
为了安全和专业,应通过 Nginx 暴露服务,并启用 HTTPS:
# /etc/nginx/sites-available/flowise server { listen 80; server_name ai.yourcompany.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name ai.yourcompany.com; ssl_certificate /etc/letsencrypt/live/ai.yourcompany.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ai.yourcompany.com/privkey.pem; location / { proxy_pass http://127.0.0.1:3001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; } # API 路径单独配置,允许 CORS(供前端调用) location /api/ { proxy_pass http://127.0.0.1:3001; add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization'; } }启用配置后:sudo nginx -t && sudo systemctl reload nginx。
4. 运维与进阶:让 Flowise 真正“生产就绪”
部署完成只是开始。一个可持续演进的 AI 工作流平台,还需要以下运维保障。
4.1 日志与监控
Flowise 默认日志较简略。我们将其接入系统日志,便于集中管理:
# 创建日志轮转配置 sudo tee /etc/logrotate.d/flowise <<'EOF' /var/log/flowise/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 flowise flowise sharedscripts postrotate if [ -f /var/run/flowise.pid ]; then kill -USR1 \`cat /var/run/flowise.pid\` fi endscript } EOF # 修改 pm2 启动脚本,将日志重定向到指定文件 npx pm2 start ecosystem.config.js --env production同时,可使用npx pm2 monit实时查看内存、CPU 占用,或集成 Prometheus + Grafana 进行指标监控。
4.2 持续集成与 Flow 版本管理
Flowise 的 Flow 配置以 JSON 存储在数据库中,但这不利于协作和回滚。最佳实践是:
- 在 Flowise UI 中,点击
Settings→Export Flows,将所有 Flow 导出为.json文件。 - 将这些文件放入 Git 仓库(如
flowise-flows/目录)。 - 编写一个简单的 Python 脚本,在 CI 流水线中,当 Git 仓库更新时,自动调用 Flowise 的 Admin API(需 Token)将新 Flow 导入。
这样,你的 AI 工作流就和代码一样,具备了完整的版本历史、Code Review 和一键回滚能力。
4.3 安全加固 checklist
最后,一份生产环境安全自查清单:
- [ ]
FLOWISE_USERNAME和FLOWISE_PASSWORD已设置,且强度达标(大小写字母+数字+符号,长度≥12)。 - [ ]
FLOWISE_SECRETKEY_OVERWRITE已设置,且为 32 字节随机密钥。 - [ ]
DATABASE_TYPE已设为postgres,DATABASE_PASSWORD已设为强密码。 - [ ]
DEBUG已设为false。 - [ ] 服务端口(3001)未在防火墙开放,仅通过 Nginx(443)反向代理暴露。
- [ ] Nginx 已配置 HTTPS,SSL 证书有效。
- [ ]
pm2已设置开机自启,且npx pm2 save已执行。 - [ ] 日志已配置轮转,路径
/var/log/flowise权限为644,属主为flowise用户。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。