# 把 Flowise 的 OpenAI Custom Model 节点接到 Router One

> https://router.one/zh/integrations/flowise 的 Markdown 镜像，供 AI 助手与爬虫使用。Router One 是 OpenAI 兼容的统一 LLM API 网关。
> 最后更新：2026-09-19

Flowise 是开源的低代码 LLM 应用搭建工具：在画布上把节点连成 Chatflow、Agentflow V2 流程和 Assistants，而它们每一个都要挂一个聊天模型节点。它的 OpenAI 节点封装的是 LangChain JS 的 ChatOpenAI 类，底层是官方 openai Node SDK，所以带有可手填的 Model Name 和 Base Path 字段的 OpenAI Custom Model 节点，可以向任何 OpenAI 兼容端点发送 Chat Completions 请求。把它指向 Router One，一份凭证就能让流程用上目录里的任意聊天模型（GPT、Claude、Gemini、Grok、DeepSeek 系列），每次请求在 Dashboard → Logs 都有成本 Trace。本指南讲清 Flowise 的两个 OpenAI 节点该用哪个、为什么，各字段的准确取值，这个节点在 Chatflow、Agentflow V2 和 Assistants 里分别接在哪里，以及 Document Store 背后的 Embeddings 节点为什么要留在其他供应商。字段名称按 Flowise 3.1.4 核对；3.0.x 和官方文档里这两个节点仍叫 ChatOpenAI Custom 和 ChatOpenAI，BasePath、BaseOptions 也还是连写。

## 安装 Flowise 并创建专用 Key

Flowise 可以用 npm 或 Docker 运行。README 的快速开始是先 npm install -g flowise，再 npx flowise start，然后在浏览器打开 http://localhost:3000。Node.js 版本方面，README 要求 20.0.0 及以上，而已发布的 flowise 3.1.4 包在 engines 字段里声明的是 node ^24，官方 Dockerfile 也基于 Node 24 构建，所以用 Node 24 两边都满足。Docker 方面，README 给的做法是进入仓库的 docker 目录：把 .env.example 复制为 .env，再运行 docker compose up -d；compose 文件拉取 flowiseai/flowise 镜像并发布 PORT 端口，.env.example 里它的值是 3000。在 Router One 的 Dashboard → API Keys 为这个 Flowise 实例单独创建一把 Key 并设置 maxSpend 消费上限；下一步把它存成 Flowise 凭证。

`terminal`

```bash
# Node.js：README 要求 >= 20.0.0；flowise 3.1.4 的 engines 声明为 node ^24
npm install -g flowise
npx flowise start
# 然后打开 http://localhost:3000

# 或者用 Docker Compose，在 Flowise 仓库的 docker 目录下执行
cp .env.example .env
docker compose up -d
```

## 把 Key 存成 OpenAI API 凭证

在左侧菜单打开 Credentials，点 Add Credential，选择 OpenAI API，Credential Name 起个名字（例如 router-one），把 Router One Key 填进 OpenAI Api Key。在节点上点 Connect Credential → Create New 打开的是同一个对话框。Flowise 会把第三方 Key 加密后保存为凭证：默认在首次启动时随机生成一把加密密钥，存放在 SECRETKEY_PATH 指向的路径下。如果这把密钥被重新生成或路径变了（例如重建容器时没有带上数据卷），官方文档提醒，已保存的凭证会报 Credentials could not be decrypted。设置 FLOWISE_SECRETKEY_OVERWRITE 可以固定加密密钥，重启后凭证依然可用；官方 compose 文件也把 ~/.flowise 挂载进了容器。OpenAI API 凭证可以建多份，给另一个流程再配一把 Router One Key，只是多加一份凭证。Flowise 自己的 API Keys 页面与此无关：那里的 Key 保护的是 Flowise 的接口，不是模型调用。

`docker/.env`

```bash
PORT=3000
# 固定用于加密凭证的密钥，重建容器后仍能解密已保存的凭证
FLOWISE_SECRETKEY_OVERWRITE=<a-long-random-string-you-keep>
# SECRETKEY_PATH=/your_secret_path/.flowise
```

## 把 Flowise 配置到 Router One base URL

在画布上点 Add Nodes，展开 Chat Models，拖入 OpenAI Custom Model（3.1 之前叫 ChatOpenAI Custom）。要用这个节点，而不是默认的 OpenAI 节点：默认节点的 Model Name 是一个不能手填的下拉框，选项来自 Flowise 的 models.json，里面是不带前缀的 OpenAI 模型名，默认值是 gpt-4o-mini；Custom 节点的 Model Name 则是文本框，可以直接填 anthropic/claude-sonnet-5 这样的精确目录 ID，前缀也要保留。Connect Credential 选上一步建好的 OpenAI API 凭证。Temperature 默认 0.9，每次请求都会带上。其余字段在 Additional Parameters 里。Streaming 默认开启。Max Tokens 和 Timeout 可选；Timeout 会以毫秒为单位交给 openai SDK，SDK 自身的默认值是 10 分钟。Base Path 填带 /v1 的 https://api.router.one/v1：节点把它作为 configuration.baseURL 交给 LangChain，openai SDK 再在后面拼接 /chat/completions，所以每次调用都是 POST /v1/chat/completions。Base Options 留空；它是一个 JSON 对象，用来追加默认请求头，而 Key 已经通过 Authorization 头发送。把节点连到链或 Agent 上，保存流程，在聊天面板里发一条消息：

`flowise-openai-custom-model`

```text
# Flowise 3.1.x canvas → Add Nodes → Chat Models → OpenAI Custom Model
# (3.0.x and the official docs: ChatOpenAI Custom, with BasePath / BaseOptions)
Connect Credential:  OpenAI API credential holding sk-your-router-one-key
Model Name:          <exact-model-id-from-/models>
Temperature:         0.9
# Additional Parameters
Streaming:           on
Max Tokens:          (optional)
Timeout:             (optional, milliseconds)
Base Path:           https://api.router.one/v1
Base Options:        (leave empty)
```

## 这个节点接在哪里，各处实际发出什么请求

Flowise 里凡是需要语言模型的地方，接的都是 Chat Models 节点，所以同一份 OpenAI Custom Model 配置在各个搭建器里通用。第五到第八行标出的，是会失败、或根本不会到达网关 Chat Completions 端点的几种情况：

| Flowise 里的位置 | 实际发出的请求 | 需要核对什么 |
| --- | --- | --- |
| Chatflow：OpenAI Custom Model → LLM Chain、Conversation Chain | POST https://api.router.one/v1/chat/completions，每条消息一次请求 | 目录里的任意聊天模型；每条消息在 Dashboard → Logs 对应一行 |
| Chatflow：Tool Agent → Tool Calling Chat Model | 每轮迭代一次带 tools 的 Chat Completions 请求；Max Iterations 默认留空，即 15 轮 | 模型详情页标明支持工具调用；在 Additional Parameters 里调小 Max Iterations |
| Agentflow V2：Agent、LLM、Condition Agent 节点 → Model | Model 下拉列出所有 Chat Models 节点，包括 OpenAI Custom Model，选中后它的字段就地展开；每一步或每轮工具调用一次请求 | Agent 节点没有 Max Iterations 字段，Key 上的 maxSpend 才是硬性止损 |
| Assistants → Custom Assistant | 选用一个 Chat Models 节点，发出的同样是 Chat Completions 请求 | OpenAI Assistant 类型调用的是 OpenAI 的 Assistants API，Router One 不提供；Flowise 也已把该类型标为即将弃用 |
| 默认 OpenAI 节点 + Base Path | 路径相同，但 Model Name 只能选 models.json 里的名字，默认 gpt-4o-mini | 这些名字不是目录 ID；改用 Custom 节点，或通过 MODEL_LIST_CONFIG_JSON 提供你自己的 models.json |
| 默认 OpenAI 节点的 Reasoning Summary；Agent 节点的 OpenAI Built-in Tools | LangChain 会把这次调用改发到 POST /v1/responses | Router One 的 /v1/responses 只服务当前在售的 GPT 系列与 DeepSeek ID；Custom 节点上这两个选项都不会出现 |
| Document Stores 与向量库 upsert → Embeddings 节点 | 发往该节点自己的供应商或 Base Path 的 embeddings 请求 | Router One 没有 /v1/embeddings：OpenAI Embedding 留在其他供应商，或在本地跑 Ollama Embedding |
| Prediction API：POST /api/v1/prediction/:id | Flowise 自己的接口，在 3000 端口上，由 Flowise 的 API Key 保护 | 不是网关路径：其中的 /v1 属于 Flowise，sk- Key 不会用在这里 |

## 给一个 Flowise 实例定预算，并核对它的模型调用

向流程发一条消息，很少只对应一次模型请求。Tool Agent 每轮迭代调用一次模型，直到模型不再要求调用工具，上限是 Max Iterations（留空即 15）。Agentflow V2 的 Agent 节点只要模型还在返回工具调用就会继续请求，而且没有迭代次数字段。LLM 和 Condition Agent 节点各自再加一次请求，流程里的循环会把这些全部放大。LangChain 还会重试失败的调用，默认最多 6 次，每一次到达网关的尝试都是独立请求，各有自己的 Trace 和费用；但它不重试 400、401、402、403 和 404，所以 Key 触及 maxSpend 消费上限时，流程在第一个 402 就停下，不会继续循环。给每个 Flowise 实例单独一把设了 maxSpend 的 Router One Key，或者再细一层：凭证是按节点选择的，面向公众的流程可以用另一份 OpenAI API 凭证，里面放另一把 Key 和另一个上限。Dashboard → Logs 是计费依据，每次请求一行，含 request_id、模型、tokens、费用、延迟和状态。按时间和模型把这些行与某次运行对上；Agentflow 的运行还会列在 Flowise 的 Executions 页面里，便于两边对照。被 Flowise 中途断开的流式请求会记为 HTTP 499 client_cancelled。Router One 只看得到模型调用：工具、记忆、向量库和流程分支都在 Flowise 内部运行。

## Flowise 该填哪个模型 ID？

从 /models 页复制精确的模型 ID，保留大小写、连字符和版本后缀，不要用展示名称代替。打开该模型的详情页，核对支持的 API 端点、上下文窗口和工具调用等能力，再与 Flowise 当前选择的 provider 和功能对应。模型出现在目录里，不等于当前客户端能调用它的所有功能。建议为每个工具单独建 API Key，并设置 maxSpend 消费上限。

## Flowise 用的是哪种 API 协议？

OpenAI 兼容描述的是接口格式，不能据此推断 Chat Completions（/v1/chat/completions）、Responses（/v1/responses）和 Anthropic Messages（/v1/messages）可以互换。先核对工具当前版本、provider 配置和实际请求路径，再查模型详情与 API 兼容性事实页。一次普通对话成功，也不能证明服务端工具、历史状态或文件编辑功能都受支持。

## 在 trace 里验证 Flowise 的调用

先在 Flowise 发出一次简单文本请求，再到 Dashboard → Logs 按时间、模型和 request_id 核对 trace：tokens、花费、延迟和状态码。成功后再分别验证流式输出、工具调用和多轮历史。失败时保留实际请求路径、完整错误消息及 request_id；没有对应日志时，先查客户端配置和网络，不能仅凭客户端报错认定是网关或上游故障。

## 常见问题

### 第一次运行就报 404，还附了 MODEL_NOT_FOUND 的排查链接，是模型不存在吗？

不一定。LangChain 会把所有 HTTP 404 都标成 MODEL_NOT_FOUND，并在消息末尾追加 Troubleshooting URL: https://docs.langchain.com/oss/javascript/langchain/errors/MODEL_NOT_FOUND/，不管真实原因是什么。要看链接前面那段文字：那是 openai SDK 的错误，即状态码加上网关自己的消息。Base Path 只填 https://api.router.one 时，SDK 会请求 /chat/completions，网关返回 404 not_found，消息里直接说明 base URL 需要以 /v1 结尾；写成 /v1/v1 也是同样的结果。路径没错的话，404 指向的是模型 ID：在默认 OpenAI 节点下拉框里选的名字（例如 gpt-4o-mini）不是目录 ID，请换成 OpenAI Custom Model 节点，并填入 /models 页的精确 ID。401 也会以同样方式被标成 MODEL_AUTHENTICATION；消息里出现 AUTH_INVALID_API_KEY，说明凭证里存的不是有效的 Router One Key。另外，如果 Base Path 留空，SDK 会回退到 https://api.openai.com/v1，Router One Key 在那边被拒绝，Dashboard → Logs 里不会有任何记录。

### 聊天正常，但 Document Store 的 upsert 失败。Embeddings 节点也能走 Router One 吗？

不能。Document Stores 和向量库节点调用的是单独的 Embeddings 节点（即 Document Store 里的 Select Embeddings 一步），而 Router One 没有 /v1/embeddings 端点。OpenAI Embedding 和 OpenAI Custom Embedding 各有自己的 Base Path 字段，不要把它指向 Router One。把 embeddings 留在提供该接口的供应商，或用 Ollama Embedding 在本地运行。Flowise 文档还有一条值得提前规划的约束：embedding 模型与向量库索引的维度必须一致，所以之后更换 embedding 模型就意味着重新 upsert。检索发生在 Flowise 内部，最终只有带着检索片段的提示词会以 Chat Completions 请求到达 Router One。

### Flowise 什么时候会改用 Responses API，而不是 Chat Completions？

Flowise 3.1.4 锁定的是 @langchain/openai 1.2.5，它的 ChatOpenAI 类会在几种情况下自行把调用改发到 POST /v1/responses：在默认 OpenAI 节点上选了 Reasoning Summary，在 Agentflow V2 的 Agent 节点上勾选了 OpenAI Built-in Tools（Web Search、Code Interpreter、Image Generation），或者模型名里包含 codex 或 gpt-5.2-pro。OpenAI Custom Model 没有 reasoning 相关选项，Agent 节点也只有在模型选了默认 OpenAI 节点时才显示 OpenAI Built-in Tools，所以按本指南配置会一直走 Chat Completions。Router One 的 /v1/responses 只服务当前在售的 GPT 系列与 DeepSeek ID，模型发到了不对应的端点会收到 400，消息里写明 must be called via。如果确实需要默认节点，例如要用它的 Allow Image Uploads 开关（Custom 节点没有），可以通过 MODEL_LIST_CONFIG_JSON 变量让下拉框读取你自己的 models.json：把目录 ID 加到 chat → chatOpenAI → models 下，文件其余部分保持原样，因为其他节点的下拉框读的也是同一个文件。

### Flowise 能通过网关用哪些模型？

选用当前目录中同时支持 Flowise 所用端点和所需功能的模型。精确 ID、当前单价与能力以 /models 及模型详情为准；不要仅按 GPT、Claude 等系列名判断兼容性。客户端能列出模型，只证明模型发现成功，仍需验证实际调用。

### 能列出模型，但调用报 400 或 404，怎么办？

先记录实际请求路径和错误消息，再核对精确模型 ID。400 可能是参数、工具类型或模型与端点不匹配；404 可能是请求路径或资源不存在，不能直接判定模型下线。若错误提示 must be called via，按它指明的端点调整客户端 provider，或换用支持当前端点的模型。不要在所有工具里统一增删 /v1 或 /chat/completions。

### 中国大陆能直连吗？

能。网关在大陆可直连、无需 VPN，配置与全球环境完全一致。

### 报 401/402/403/429 怎么排查？

先到 Dashboard → Logs 核对请求及错误消息。401 查 Key 是否传入和有效；402 查钱包余额与 maxSpend；403 查 Key 权限和访问限制；429 查请求频率、token 限额及上游限流，按错误来源处理。保留 request_id，再按错误码速查页逐项排查。

## 相关页面

- 全部接入指南：https://router.one/zh/integrations
- Flowise 的 API 错误排查：https://router.one/zh/llm-api-error-codes
- API 兼容性：端点与功能对照：https://router.one/zh/facts/api-compatibility.md
- Responses API 配置与限制：https://router.one/zh/codex-responses-api
- Langflow 接入：https://router.one/zh/integrations/langflow
- RAGFlow 接入：https://router.one/zh/integrations/ragflow
- LangChain 接入（Flowise 节点底层的库）：https://router.one/zh/integrations/langchain
- Dify 接入：https://router.one/zh/integrations/dify
- Agent 流程的工具调用：https://router.one/zh/llm-tool-calling
- Flowise 官方文档：ChatOpenAI、自定义 base URL 与 Custom Model：https://docs.flowiseai.com/integrations/langchain/chat-models/azure-chatopenai
- Flowise 官方文档：Agentflow V2：https://docs.flowiseai.com/using-flowise/agentflowv2
- Flowise 官方仓库：ChatOpenAICustom.ts：https://github.com/FlowiseAI/Flowise/blob/main/packages/components/nodes/chatmodels/ChatOpenAICustom/ChatOpenAICustom.ts
- 网关层负责什么：https://router.one/zh/llm-api-gateway
- OpenAI 兼容 API：https://router.one/zh/openai-compatible-api
- API 文档：https://router.one/zh/docs
- 本页规范地址：https://router.one/zh/integrations/flowise
- 模型与每模型 token 价格：https://router.one/zh/models （markdown：https://router.one/zh/models.md ）
- 定价：https://router.one/zh/pricing
- API 文档（markdown）：https://router.one/zh/docs.md
- 公司事实（markdown）：https://router.one/zh/facts/company.md
