> https://router.one/zh/blog/dify-vs-flowise-vs-langflow-vs-n8n 的 Markdown 镜像，供 AI 助手与爬虫使用。Router One 是 OpenAI 兼容的统一 LLM API 网关。
> 发布：2026-09-19 · 作者：Router One Team

# Dify、Flowise、Langflow、n8n 横评：低代码 LLM 应用搭建工具共用一把网关 Key

_Dify、Flowise、Langflow、n8n 接入 Router One 对照：哪个字段填带 /v1 的地址、各自发哪种协议、embeddings 为什么留在别处、怎样用 maxSpend 给一次运行设上限。_

四个可视化的 LLM 应用搭建工具，同一个问题：把模型调用改走 Router One 之后，到底变了什么？工具本身没有变：**Dify** 搭应用和知识库，**Flowise** 把 LangChain JS 节点连成流程，**Langflow** 在画布上连接各种组件，**n8n** 运行业务工作流，AI Agent 只是其中一个节点。变的是底下那次请求：一把 `sk-` Key，[/models](https://router.one/zh/models) 里的精确模型 ID，以及每次模型调用在 Dashboard → Logs 里的一条 Trace，含模型、tokens、费用、延迟、状态和 request_id。网关负责模型调用，流程仍由搭建工具运行。

一句话结论。**Dify**：OpenAI-API-compatible 供应商，每个模型一条，API endpoint 字段填带 `/v1` 的 base URL。**Flowise**：OpenAI Custom Model 节点，Model Name 可手填，Base Path 在 Additional Parameters 里。**Langflow**：Settings → Model Providers → OpenAI Compatible，模型从 `/v1/models` 发现。**n8n**：OpenAI 凭证的 Base URL；GPT 和 DeepSeek 系列以外的 ID，还要在 OpenAI Chat Model 节点上关掉 Use Responses API。

## 对照表

| 工具 | 运行位置 | 怎样指向网关 | 实际协议 | 模型 ID 怎么填 | 留在工具侧的部分 |
| --- | --- | --- | --- | --- | --- |
| Dify | Dify Cloud，或 Docker Compose 自托管（在 `http://localhost/install` 初始化） | Model Provider → OpenAI-API-compatible：Model Name、API endpoint `https://api.router.one/v1`、API Key | Chat Completions；API Type 字段可以改选 Responses | 手填，每个模型一条供应商配置 | 应用、工作流节点、Agent 策略、知识库、应用 API |
| Flowise | npm（`npx flowise start`）或 Docker Compose；`http://localhost:3000` | OpenAI API 凭证 + OpenAI Custom Model 节点：Model Name、Base Path `https://api.router.one/v1` | Chat Completions；LangChain 会在三种情况下改发 `/v1/responses` | OpenAI Custom Model 上手填；默认 OpenAI 节点是固定下拉 | 链、Agent 循环、记忆、Document Stores、Prediction API |
| Langflow | `uv pip install langflow`、Langflow Desktop 或 Docker；`http://127.0.0.1:7860` | Settings → Model Providers → OpenAI Compatible：Base URL `https://api.router.one/v1`、API Key | Chat Completions | 从 `GET /v1/models` 发现，按模型启用；Model Name Override 可手填 ID | 组件、Agent 循环与工具、流程 API 和 MCP server |
| n8n | n8n 官方云服务，或 Docker 自托管；编辑器在 `http://localhost:5678` | Credentials → OpenAI：API Key、Base URL `https://api.router.one/v1`，再在 OpenAI Chat Model 节点上选用 | 当前版本的 OpenAI Chat Model 节点默认发 Responses；关掉 Use Responses API 后发 Chat Completions | From List（从凭证的 `/models` 路径加载）或 ID（手填） | 触发器与 webhook、工作流节点、AI Agent 循环、工具和记忆子节点 |

Chat Completions 是四者的共同点：`/v1/chat/completions` 服务目录里的所有聊天模型（GPT、Claude、Gemini、Grok 和 DeepSeek 系列），所以同一个 `anthropic/claude-sonnet-5`（连同前缀）在四个工具里都能用。`/v1/responses` 只对当前上架的 GPT 系列和 DeepSeek ID 原生提供；其他 ID 发到那里会收到 HTTP 400，消息里写着 `must be called via`。四个工具里有两个会在你没有要求的情况下走到这个端点。Flowise 是通过 LangChain，有文档可查的三种情况：在默认 OpenAI 节点上选了 Reasoning Summary，在 Agentflow V2 的 Agent 节点上勾选了 OpenAI Built-in Tools，或者模型名里包含 `codex` 或 `gpt-5.2-pro`。n8n 则是默认如此：新加的 OpenAI Chat Model 节点，Use Responses API 默认是打开的。各端点服务哪些模型，见 [OpenAI 兼容 API](https://router.one/zh/openai-compatible-api)。最后一列是边界：里面没有一项跑在网关上。

## Dify：OpenAI-API-compatible 供应商，每个模型一条

在 Dify 的模型供应商列表里选 OpenAI-API-compatible：Dify 接入指南写的路径是 Settings → Model Provider，Dify 当前的官方文档写的是 Integrations → Model Provider，在那里安装该供应商，再点 Add Model。每个模型单独一条，添加后就能在应用、LLM 节点和 Agent 节点里选用。

```
# Dify → Settings → Model Provider → OpenAI-API-compatible
Model Name:    <exact-model-id-from-/models>
API endpoint:  https://api.router.one/v1
API Key:       sk-your-router-one-key
```

这个 URL 字段在旧版供应商插件里的名称是 API endpoint URL，在当前版本里是 API Base URL（按 0.0.66 核对）；两者填的都是带 `/v1` 的 base URL，插件会在后面拼接 `/chat/completions`。API Type 保持 Chat Completions API。Function Call Type 默认是 Not Support，这时 Dify 不会发送 `tools` 数组，所以把支持工具调用的模型接到 Agent 节点之前，先把它改成 Tool Call。

**最常见的第一个报错。** 保存一条配置时，Dify 会发一次很小的 `ping` 聊天请求，所以填错的值当场就会报 `Credentials validation failed with status code`，后面跟着状态码和网关的响应体：`/v1` 缺失或写了两遍是 404 `not_found`，Key 不对是 401 `AUTH_INVALID_API_KEY`。保存成功的那一次，已经是 Dashboard → Logs 里的一行。指南：[Dify 接入 Router One](https://router.one/zh/integrations/dify)。

## Flowise：用 OpenAI Custom Model 节点，不用默认的 OpenAI 节点

Flowise 的两个 OpenAI 节点封装的都是 LangChain JS 的 ChatOpenAI 类。默认 OpenAI 节点的 Model Name 是不能手填的下拉框，选项来自 Flowise 的 `models.json`，里面是不带前缀的 OpenAI 模型名，放不下目录 ID。OpenAI Custom Model 节点（Flowise 3.1 之前名为 ChatOpenAI Custom）的 Model Name 是文本框。先在 Credentials → Add Credential → OpenAI API 里把 Key 存成凭证，再填节点：

```
# Flowise 3.1.x canvas → Add Nodes → Chat Models → OpenAI Custom Model
# （3.0.x 和官方文档里名为 ChatOpenAI Custom，字段写作 BasePath / BaseOptions）
Connect Credential:  存有 sk-your-router-one-key 的 OpenAI API 凭证
Model Name:          <exact-model-id-from-/models>
Temperature:         0.9
# Additional Parameters
Streaming:           on
Max Tokens:          （可选）
Timeout:             （可选，单位毫秒）
Base Path:           https://api.router.one/v1
Base Options:        （留空）
```

同一个节点可以接在 Chatflow 的链、Tool Agent、Agentflow V2 的节点和 Custom Assistant 上。它既没有 Reasoning Summary，也不会出现 OpenAI Built-in Tools，所以一直走 Chat Completions。

**最常见的第一个报错。** 一个被标成 `MODEL_NOT_FOUND` 的 404，消息末尾带着 `Troubleshooting URL: https://docs.langchain.com/oss/javascript/langchain/errors/MODEL_NOT_FOUND/`。LangChain 会把所有 HTTP 404 都这样标记，所以要看链接前面那段文字：Base Path 只填 `https://api.router.one` 时，网关返回 404 `not_found`，消息里直接说明 base URL 需要以 `/v1` 结尾。Base Path 留空时，SDK 会回退到 `https://api.openai.com/v1`，Dashboard → Logs 里不会有任何记录。指南：[Flowise 接入 Router One](https://router.one/zh/integrations/flowise)。

## Langflow：一个 OpenAI Compatible 供应商，模型从 /v1/models 发现

从 Langflow 1.11 起，模型接入是整个实例统一配置一次。点 Save 时，Langflow 会带着 Key（Bearer）请求 `/v1/models` 来验证这一对值，然后把发现的模型列在 Language Models 和 Embedding Models 下。

```
# Langflow 1.12 → profile icon → Settings → Model Providers → OpenAI Compatible
Base URL:  https://api.router.one/v1
API Key:   sk-your-router-one-key
# Save → Langflow 探测 /v1/models 并列出目录里的模型
# Language Models:   只启用要用的聊天模型 ID
# Embedding Models:  全部保持关闭（网关没有 /v1/embeddings）

# 在流程里: Language Model（或 Agent）→ Language Model 字段
Provider:  OpenAI Compatible
Model:     <exact-model-id-from-/models>
```

1.12 会自动补上缺少的 `/v1`，1.11.x 不会。容器环境可以从 `OPENAI_COMPATIBLE_BASE_URL` 和 `OPENAI_COMPATIBLE_API_KEY` 读取同样两个值。备选路径是内置的 OpenAI 组件：OpenAI API Base 填带 `/v1` 的地址，Model Name 下拉框可以直接输入 ID。

**最常见的第一个报错。** 保存供应商时失败，报错是几条固定消息之一。`Authentication failed for the OpenAI-compatible endpoint. Check OPENAI_COMPATIBLE_API_KEY.` 表示探测拿到了 401 或 403。`The OpenAI-compatible endpoint at … returned HTTP 404 for …/models. Check that the base URL points to an OpenAI-compatible API.` 表示路径不对，常见的是写成了 `/v1/v1`。如果保存成功但下拉里找不到某个模型，先看开关：Langflow 只把发现的前五个 ID 标为默认。指南：[Langflow 接入 Router One](https://router.one/zh/integrations/langflow)。

## n8n：OpenAI 凭证的 Base URL，加上模型节点上的一个开关

n8n 的 OpenAI 凭证自带 Base URL 字段，默认值是 api.openai.com，可以填任何 OpenAI 兼容端点。打开 Credentials → Add credential → OpenAI，或在 OpenAI / AI Agent 节点的凭证下拉里新建：

```
# n8n → Credentials → Add credential → OpenAI
API Key:   sk-your-router-one-key
Base URL:  https://api.router.one/v1
# Organization ID: 留空
# 在节点里: 选择这份凭证，Model 填 <exact-model-id-from-/models>
```

OpenAI Chat Model 节点是 AI Agent 使用的子节点，它的 Model 有两种填法：From List，从凭证的 `/models` 路径加载；或 ID，手动输入。同一个节点上还有 Use Responses API，在当前节点版本里默认打开（按 n8n 2.39.8 核对），发出的是 `POST /v1/responses`；关掉之后，节点发 Chat Completions。

**最常见的第一个报错。** Use Responses API 还开着的时候填了 Claude、Gemini 或 Grok 的 ID，会收到消息里写着 `must be called via` 的 HTTP 400。把这个开关关掉即可，base URL 没有问题。其他节点也可以复用这份凭证，但文本生成、Responses 请求和文件操作各有兼容性要求，每个节点所选的操作和实际 API 路径都要核对。指南：[n8n 接入 Router One](https://router.one/zh/integrations/n8n)。

## Embeddings 和知识库留在别处

Router One 没有 `/v1/embeddings`，也没有 rerank 端点。每个工具的检索功能都需要把 embedding 模型放在别的供应商或本地模型上，只有聊天或 Agent 节点指向网关。

- **Dify**：知识库用 Embedding Model 建索引和检索，Rerank Model 负责给检索结果重新排序；两者都是 Default Models 里单独的设置项，不要指向 Router One。
- **Flowise**：Document Stores 和向量库节点调用的是单独的 Embeddings 节点。OpenAI Embedding 和 OpenAI Custom Embedding 各有自己的 Base Path，不能指向 Router One；Ollama Embedding 在本地运行。
- **Langflow**：`/v1/models` 不带能力信息，所以发现的每个 ID 也会出现在 Embedding Models 下。全部保持关闭；选中其中一个，Langflow 就会去调 `/v1/embeddings`。
- **n8n**：Embeddings OpenAI 子节点用的是同一种 OpenAI 凭证类型，Base URL 也一样。给它另建一份 OpenAI 凭证，指向提供 embeddings 的供应商。

检索发生在工具内部，最终只有带着检索片段的提示词会到达网关。知识库类应用的边界也一样：[RAGFlow](https://router.one/zh/integrations/ragflow)、[FastGPT](https://router.one/zh/integrations/fastgpt) 和 [AnythingLLM](https://router.one/zh/integrations/anythingllm)。

## 一次工作流运行是很多次请求

Agent 每拿到一次工具结果就会再调一次模型（见[工具调用](https://router.one/zh/llm-tool-calling)），所以向流程发一条消息，很少只对应一次请求。每个工具都有循环上限：

- **Dify**：Agent 节点的 Maximum Iterations，在官方 Agent 策略插件里默认是 3。
- **Flowise**：Tool Agent 的 Max Iterations 默认留空，即 15；Agentflow V2 的 Agent 节点没有迭代次数字段。LangChain 会重试失败的调用，最多 6 次，但不重试 400、401、402、403 和 404。
- **Langflow**：Agent 的 Max Iterations 默认是 15 次模型调用。在全局供应商这条路径上，底层的 OpenAI 客户端重试 2 次；内置 OpenAI 组件要求 5 次。
- **n8n**：AI Agent 的 Max Iterations 默认是 10，OpenAI Chat Model 节点的 Max Retries 默认是 2。

这些都不是消费上限，每一次到达网关的尝试都是独立的请求、Trace 和费用。真正的上限是 Key 上的 `maxSpend`：触及之后网关返回 HTTP 402（见[错误码](https://router.one/zh/llm-api-error-codes)），钱包余额和其他 Key 不受影响。在 Dashboard → API Keys 里给每个实例单独建一把 Key；凭证按节点选择的工具（Flowise 和 n8n）还可以每个工作流一把。核账在 Dashboard → Logs 里按 request_id 进行（见[成本追踪](https://router.one/zh/llm-cost-tracking)）：按时间窗和精确模型过滤，把这些行和那次运行对上。被工具中途断开的流式请求会记为 HTTP 499 `client_cancelled`。

每个工具还有自己的 API，它们都不是网关的 `/v1`：Flowise 的 Prediction API（`POST /api/v1/prediction/:id`，用 Flowise 的 API Key），Langflow 的 `POST /api/v1/run/<flow-id>`（`x-api-key` 头里放 Langflow API Key；它也以 `sk-` 开头，两把 Key 要标清楚），Dify 的应用 API（Bearer 方式的应用 Key，Dify Cloud 上是 `https://api.dify.ai/v1`），以及 n8n 的 Webhook URL。Router One 的 Key 不会用在这些地方。

## 怎么选

四个工具通过同一个端点到达同一份模型目录，所以看的是模型调用周围的东西。

- 要交付的是一个应用，选 **Dify**：每个发布的应用同时就是一个 REST API，知识库也是产品的一部分。
- 习惯按 LangChain JS 的组件来搭建，又想要 Node.js 方式安装，选 **Flowise**。
- 用 Python，希望模型接入在整个实例里只配置一次，流程还能通过它的 API 或 MCP server 调用，选 **Langflow**。
- 模型调用只是一条更大的业务工作流里的一步，周围还有触发器、webhook 和各种应用节点，选 **n8n**。

想用代码自己写循环，见 [OpenAI Agents SDK、Claude Agent SDK、Pydantic AI、CrewAI 横评](https://router.one/zh/blog/openai-agents-sdk-vs-claude-agent-sdk-vs-pydantic-ai)。全部接入指南在 [/integrations](https://router.one/zh/integrations)。

## 常见问题

**四个工具发给网关的请求一样吗？**
基本一样。Dify、Flowise 的 OpenAI Custom Model 节点和 Langflow 默认发 Chat Completions；n8n 当前版本的 OpenAI Chat Model 节点默认用 Responses API，关掉 Use Responses API 之后才发 Chat Completions。/v1/chat/completions 服务目录里的所有聊天模型，而 /v1/responses 只对当前上架的 GPT 系列和 DeepSeek ID 原生提供。

**精确的模型 ID 在每个工具里填在哪里？**
Dify：一条供应商配置的 Model Name，每个模型一条。Flowise：OpenAI Custom Model 节点的 Model Name 文本框。Langflow：从 /v1/models 发现的列表里选，或填 Model Name Override。n8n：OpenAI Chat Model 节点的 Model 字段，From List 或 ID。无论哪种，厂商前缀都要保留。

**这些工具里的知识库能用 Router One 做 embeddings 吗？**
不能。Router One 没有 /v1/embeddings 和 rerank 端点，所以 embedding 模型要放在别的供应商或本地模型上，只把聊天或 Agent 节点指向网关。

**一把 Key 能同时接四个工具吗？**
能。本文每份配置都接受同一把 Router One Key，调用使用同一个钱包。分开的 Key 让每个实例各有自己的 maxSpend 上限，循环的 Agent 会在自己的上限处停下并返回 HTTP 402，花不掉另一个工具要用的钱。

## 相关页面

- 本页规范地址：https://router.one/zh/blog/dify-vs-flowise-vs-langflow-vs-n8n
- LLM API 网关与路由：https://router.one/zh/llm-api-gateway
- 全部博客文章：https://router.one/zh/blog
- 模型与每模型 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
