Dify 接入 OpenAI 兼容 API 怎么配置?
简答:可以在 Dify 的模型供应商中启用或安装 OpenAI-API-compatible 插件,再填写 API Base URL、API Key 和服务商真实模型 ID。先用 Chat Completions 完成普通文本调用,确认接口可用后,再按服务商文档决定是否切换 Responses、工具调用、视觉、Embedding 或 Rerank;不要把完整的 /chat/completions 地址直接填进 Base URL。
定义:OpenAI 兼容 API 是采用相近请求结构和鉴权方式的接口,通常使用 Bearer API Key、模型 ID以及 /v1 下的模型调用路径,但不代表所有参数和高级能力都完全兼容。
先看这张配置卡:Dify 里哪些字段怎么填
本文是针对 Dify 接入通用 OpenAI 兼容接口的配置指南。本站不是任何模型平台的官方站点;文中关于插件字段的判断以 Dify 官方插件配置文件在 2026-11-07 可见内容为依据,界面名称可能因 Dify 版本、部署方式或工作区权限不同而变化。
| 字段 | 建议填写 | 核对方法 |
|---|---|---|
| 模型供应商 | OpenAI-API-compatible | 在模型供应商或插件页面搜索该名称;官方插件清单列出了 LLM、Rerank、text-embedding、语音等类型。 |
| API Base URL | 服务商文档规定的基础地址,常见形式为 https://example.com/v1 | 不要直接填写 /chat/completions;先确认服务商的完整请求路径如何拼接。 |
| API Key | 服务商签发的密钥 | 只填密钥本身,不要把 Bearer 前缀一并粘贴,除非服务商明确要求。 |
| Model Name | 服务商真实模型 ID | 优先从服务商控制台、模型列表或 /v1/models 响应中复制,不要凭显示名称猜测。 |
| 模型类型 | 普通对话选择 LLM | Embedding、Rerank、语音模型不能当作聊天模型添加。 |
| Completion mode | 普通聊天优先选择 Chat | 只有服务商明确提供旧式补全接口时,才选择 Completion。 |
| API Type | 先选 Chat Completions API | 只有服务商明确支持 /responses 及对应请求结构时,才切换 Responses。 |
| 上下文长度与最大输出 | 按服务商模型文档填写 | 不确定时标记为需核实;不要把上下文长度当成可用额度或价格。 |
官方配置文件还包含兼容模式、token 参数名、流式用量、用户标识、函数调用、工具调用、视觉、音频、视频、文档和结构化输出等选项。它们是能力开关,不是能力保证;是否真的可用仍取决于接口和模型本身。
按顺序完成 Dify 配置与首次调用
- 准备四项信息。记录 API Base URL、API Key、模型 ID和服务商支持的协议。Base URL 与完整请求地址要分开保存,例如服务商可能要求 Dify 自动拼接
/chat/completions,也可能要求使用不同的路径。 - 进入模型供应商。在 Dify 工作区的设置、模型供应商或插件管理区域中,查找并启用 OpenAI-API-compatible。若搜索不到,先检查当前 Dify 版本的插件市场、管理员权限和插件服务状态。官方插件清单显示,该插件的配置方式是自定义模型,核心字段包括模型名称、API Key、API Base URL、模型类型和上下文参数。
- 先添加一个 LLM 模型。模型类型选择 LLM,模型名称填写服务商真实 ID,Completion mode 先选 Chat,API Type 先选 Chat Completions。兼容模式优先保持严格模式;只有服务商文档要求额外参数时,再考虑扩展模式。
- 填写 Base URL。优先复制服务商文档给出的 API 基础地址。若文档示例请求是
https://example.com/v1/chat/completions,通常应先尝试填https://example.com/v1,而不是把完整的/chat/completions再填一次。这里是通用路径判断,不代表所有网关都采用相同拼接规则。 - 保存并建立最小应用。在 Chatflow、Workflow 或带 LLM 节点的应用中,明确选择刚添加的模型,只发送一条短文本,例如“请用一句话说明 API 返回是否正常”。先验证普通文本,再测试长上下文、流式输出、工具调用或结构化输出。
- 逐项增加能力。如果普通聊天成功,再单独验证视觉、Embedding、Rerank、函数调用、工具调用和结构化输出。Dify 官方插件虽然暴露了这些配置项,但配置项存在不等于服务商端点已实现。
如果你的服务商同时提供 Chat Completions 和 Responses,建议先使用 Chat Completions 完成基础调用。官方插件配置文件将二者列为不同的 API Type,分别对应 /chat/completions 和 /responses;不能只因为服务商宣传“兼容 OpenAI”就默认二者可以互换。
最小验证与错误码排查
正式排错前,先在服务商控制台或本地 HTTP 工具中确认三件事:域名能够解析、TLS 证书能够建立连接、请求路径与模型 ID来自同一套文档。下面的代码只是通用请求模板,必须将地址、模型和密钥替换为服务商资料,并以其返回结构为准;未对任一具体服务商做实测。
curl https://example.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"messages": [{"role": "user", "content": "请回复:ok"}],
"stream": false
}'| 现象 | 优先检查 | 处理方式 |
|---|---|---|
| 401 | Key 是否为空、过期、复制错误,Authorization 格式是否符合文档 | 重新生成或复制 Key;不要把 Key 写入前端代码、工作流输出或公开仓库。 |
| 403 | 账号权限、来源限制、模型资格或区域策略 | 查看服务商控制台权限和响应正文;不要仅凭状态码判断是 Dify 配置错误。 |
| 404 | Base URL 重复或缺少 /v1,路径与 API Type 不匹配 | 记录 Dify 实际请求路径,分别尝试基础地址和服务商文档规定的版本路径。 |
| 400 | 模型 ID、token 参数、消息格式或额外字段不被接受 | 先关闭扩展能力,使用最短 messages;再检查 max_tokens 与 max_completion_tokens 的要求。 |
| 429 | 限速、并发、账户额度或上游暂时拥塞 | 降低并发和请求频率,查看响应头与账户用量;不要把 429 直接解释为 Key 无效。 |
| 超时或流式中断 | Dify 容器到接口的网络、代理、DNS、TLS 和流式保持时间 | 先关闭流式验证非流式请求,再从 Dify 所在容器测试域名解析和 HTTPS 连接。 |
如果接口拒绝 max_tokens,可根据服务商文档在 Dify 中显式选择 token 参数名。官方插件字段提供自动、max_tokens 和 max_completion_tokens 三种选项;自动判断不正确时再手动指定。流式用量字段同样可能被部分兼容端拒绝,遇到相关 400 错误时可暂时关闭并重新验证。
Embedding、Rerank 和高级能力不要默认兼容
- Embedding:需要服务商提供 embedding 接口和对应模型 ID,还要确认返回向量格式、维度及批量限制。聊天模型能调用成功,不代表知识库向量化可用。
- Rerank:官方插件允许单独填写 Rerank Endpoint URL;如果服务商路径不是基础地址加
/rerank,应按文档填写完整地址。 - 视觉、音频、视频和文档:Dify 插件将这些能力分别配置,不能只打开“视觉支持”就推断 PDF、音频或视频也能处理。
- 工具调用与结构化输出:先确认服务商的请求字段、返回字段和流式事件与 Dify 兼容,再在最小应用里测试。普通文本成功后仍可能在工具调用阶段出现参数不兼容。
- 安全:API Key 应保存在 Dify 的密钥字段或服务端环境中,设置最小权限并监控用量;不要把真实 Key 放进 curl 历史、截图、前端 JavaScript 或公开 issue。
本文只讨论通用接入和核验方法,不对未提供公开文档的具体平台价格、限速、稳定性或模型能力作结论;相关字段和可用范围应以接口服务商当前文档为准。
常见问题
Dify 的 API Base URL 要不要带 /v1?
没有统一答案,应以服务商的请求示例为准。若完整请求地址是 https://example.com/v1/chat/completions,通常先把 https://example.com/v1作为 Base URL;如果服务商文档规定由客户端自动补版本路径,则不要重复添加。出现 404 时优先记录实际拼出的完整路径。
为什么 Model Name 不能随便写一个模型昵称?
因为请求体中的 model通常需要服务商识别的真实模型 ID。显示名称、营销名称和接口模型 ID可能不同,应从控制台、模型列表或服务商提供的模型查询接口复制。
Chat Completions 和 Responses 应该选哪个?
首次接入优先选择服务商明确支持且示例最完整的协议。若服务商明确提供 /responses并说明请求和响应结构兼容,再选择 Responses;不能把两个协议仅按路径名称替换。
保存模型成功,但 Dify 的 LLM 节点仍然报 400,怎么办?
保存成功只说明字段通过了配置校验,不代表实际请求成功。先把提示词缩短,关闭工具、视觉、结构化输出等额外能力,再核对模型 ID、API Type、token 参数名和请求正文中的不支持字段。
普通聊天可以用,知识库为什么仍然失败?
聊天通常使用 LLM 接口,知识库还可能需要 Embedding 和 Rerank。请分别添加对应模型类型并验证返回格式、向量维度、批量大小和重排序路径,不能用聊天成功替代这两类接口的验证。
常见问题
Dify 的 API Base URL 要不要带 /v1?
没有统一答案,以服务商请求示例为准。若完整地址是 https://example.com/v1/chat/completions,通常先填写 https://example.com/v1,而不是继续填写 /chat/completions。
Model Name 为什么必须填写真实模型 ID?
Dify 最终会把模型名称放入请求体,服务商通常按接口模型 ID识别模型。显示名称或营销名称不一定能被接口接受。
Chat Completions 和 Responses 怎么选?
首次接入优先选择服务商文档示例最完整的协议。只有在服务商明确支持 /responses 及其请求结构时,才切换 Responses。
保存模型后仍然报 400 怎么办?
先使用短文本、关闭工具和多模态能力,检查模型 ID、API Type、token 参数名及 Base URL拼接出的完整路径。
聊天成功但知识库失败是什么原因?
知识库可能还需要独立的 Embedding 或 Rerank 接口。请分别验证模型类型、返回格式、向量维度、批量限制和 Rerank 路径。