文档
Dify
Dify 通过一个插件 OpenAI-API-compatible 和一个必填字段 API Base URL 连接外部端点。填写该字段后,工作流中的每个 LLM 节点都可以通过同一个密钥使用 Claude 和 GPT ID。
一个必填字段 — OpenAI-API-compatible 插件 Add Model 表单中的 API Base URL — 可将 Dify 工作区中的所有 LLM 节点指向 Kunavo。
# Integrations → Model Provider → OpenAI-API-compatible → Add Model
Type LLM
Model Name claude-sonnet-5
Model display name Kunavo · Claude Sonnet 5
API Key sk-kn-...
API Base URL https://api.kunavo.com/v1
model name for API endpoint (leave blank — Model Name is already the id)
Completion mode Chat
Model context size 1000000
Upper bound for max tokens (your own ceiling for one reply)
Function Call Type Tool Call # defaults to no_call
Vision Support Support # only if you will send images
Structured Output Support # defaults to not supported
# Model context size is per model, not per endpoint: 1000000 is
# claude-sonnet-5's. The table below carries the rest./v1。 插件将 endpoint_url 定义为 API Base URL 标签下的字段,标记为模型名称旁唯一的必填项,示例占位文字为“Base URL,例如 https://api.openai.com/v1”——这句占位文字足以说明应如何填写。插件自己的 README 说明了例外情况,并不与此矛盾:对于非 LLM 模型类型,插件会“在内部追加 API 版本”,因此这些类型应填写不带路径的源站 URL,以免重复添加 /v1/v1。Kunavo 的模型不属于这些类型,所以只需使用 /v1 格式。Function Call Type 的默认值为 no_call,Structured Output 和 Vision Support 的默认值则是不支持。使用默认设置添加模型后,普通聊天节点可以正常响应,但 Agent 节点或使用工具的工作流会失败——这看起来像是端点故障,实际并非如此。添加模型时就设置好这些选项,再排查其他问题。curl 可以让你在十秒内自行确认;其余事项需由你和 Dify 确认。sk-kn- 开头),并充值 $10 起——调用费用从该余额中扣除,失败的调用不会收费。随后,控制台会打开 Dify 设置页面。分步操作
- 在
/app/keys创建密钥并复制——它只会显示一次。 - 在 Dify 中,打开 Integrations → Model Provider,浏览 Install model providers(或 Marketplace)并安装由
langgenius发布的 OpenAI-API-compatible。Dify 文档指出,只有工作区所有者和管理员可以管理服务商。 - 在该服务商卡片上点击 Add Model。该插件没有预定义模型——它是一个
customizable-model服务商——因此,每个要使用的 ID 都需要单独添加。 - 按照上面的说明填写表单。Type =
LLM,Model Name = 完全照填 Kunavo ID,API Key = 你的sk-kn-密钥,API Base URL =https://api.kunavo.com/v1,Completion mode =Chat,Model context size = 下表中的值。然后设置 Function Call Type,如有需要,再设置 Structured Output 和 Vision Support。保存。 - 打开工作流,在需要使用该模型的节点上选择它——Dify 按节点而非按应用分配模型,因此分类器和最终撰写节点可以使用不同的 ID 和不同的价格。未选择模型的应用和节点会回退到 Default Models → System Reasoning Model。
- 运行一个范围明确的工作流,然后在 Kunavo 账户中查看费用,而不是在 Dify 中查看——请参阅下方关于费用显示的说明。
已于 2026年9月21日 对照 Dify 的 OpenAI-API-compatible 插件页面 检查。第三方设置会发生变化;如果这里的字段名称不再与你看到的内容一致,应以该页面为准,而不是本页。
调试客户端前先验证
一个请求即可确定故障来自端点、密钥还是配置文件。如果返回 JSON,则相同的基础 URL 和密钥可以在 Dify 中使用。
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."字段中应填写哪个模型 ID
每个文本模型都可通过模型 ID 访问——实时列表见 GET /v1/models,包含价格的目录见模型页面。费率单位为每 1M token 的美元,格式为输入 / 输出。
| 模型 ID | Kunavo 输入 / 输出 | 它在 Dify 中的位置 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 适用于 Writer 和 Agent 节点的工作模型 — 上下文大小 1000000 |
claude-opus-5 | $3.50 / $17.50 | 输出供人阅读的节点,或出错代价高昂的计划 — 1000000 |
claude-haiku-4-5 | $0.70 / $3.50 | 分类器、路由器和提取节点,调用量主要集中在这里 — 200000 |
gpt-5-6-sol | $2.00 / $12.00 | 在同一个密钥下添加第二个系列,作为独立的模型条目 — 1050000 |
gpt-5-6-terra | $0.70 / $4.20 | 长文档节点 — 1050000 |
“Dify API”指的是两种不同的东西
本页讲的是其中一种,而搜索结果总是把它们混在一起。
- 将模型接入 Dify — 上方设置区块所介绍的操作。Dify 是客户端,Kunavo 是端点,你粘贴的是
sk-kn-密钥。随后,该工作区中每个应用的每个 LLM 节点都可以调用你添加的模型 ID。 - 通过自己的代码调用 Dify 应用 — Dify 为已发布应用提供的 Service API,使用 Dify 自行签发的
app-密钥。该密钥属于 Dify,不属于我们,也无法将它指向其他地方。Kunavo 不参与这种调用方向。
同一个应用通常会同时运行这两种调用:你的后端使用 Dify 密钥调用 Dify 应用,而应用中的节点使用 Kunavo 密钥调用 Kunavo。两把密钥、两笔账单;发生 401 错误时,也有两个地方需要排查。
为什么 Dify 不显示所添加模型的费用
Dify 第一方预定义模型文件包含定价区块,其中列出输入和输出费率以及每个 token 的计价单位;Dify 会将 token 数量乘以费率,在日志中显示费用。OpenAI-API-compatible 提供商架构中没有声明价格、单位或货币字段;截至上方所示日期核查时,确实如此。因此,通过此插件添加模型后,Dify 没有可用于计算的费率。费用栏并不是你找到的折扣,也不是你引入的错误,而是一个并不存在的字段。请从 Kunavo 的使用情况中查看实际费用,并将 Dify 的数字视为 token 数量。
还有一个相关开关最好保持原样:Include Usage in Stream 默认启用,会要求端点在流式输出的最后一个数据块中返回提示词和补全 token 数量。关闭它也会导致你无法获取这些 token 数量。
如果你自行托管 Dify
Docker Compose 堆栈会通过 ssrf_proxy 服务转发出站请求,因此必须能从容器网络内部访问该端点;仅能从笔记本电脑上的浏览器访问还不够。一种配置在一处能用、在另一处超时,通常就是这个原因。这属于网络问题,而不是凭据问题。在容器内部运行上方的 curl,即可直接确认。
常见问题
如何将自定义 OpenAI 兼容 API 连接到 Dify?
从 Integrations → Model Provider → Install model providers 或 Dify Marketplace 安装由 langgenius 发布的 OpenAI-API-compatible 插件。点击插件卡片上的 Add Model 并填写表单:Type、Model Name、Model display name、API Key、API Base URL、Completion mode 和 Model context size,以及能力开关。该提供商没有预定义模型;它是一个可自定义模型的提供商,因此你想使用的每个模型 ID 都需要单独添加为条目,并且每个条目都有自己的基础 URL 和密钥。
Dify 的 API Base URL 末尾需要加 /v1 吗?
聊天模型需要。该插件的提供商架构将此字段标为 API Base URL,设为必填,并给出的占位提示为 "Base URL, e.g. https://api.openai.com/v1",因此文档中规定的格式包含 /v1 根路径。Kunavo 的地址是 https://api.kunavo.com/v1。仅对插件会自行附加 API 版本的模型类型,文档才规定填写不带路径的根域名;否则会产生重复的 /v1/v1 路径。Kunavo 不提供这些类型的模型,因此应使用带 /v1 的格式。缺少 /v1 会导致 404,而不是身份验证错误。
为什么我的 Dify Agent 节点无法在所添加的模型上使用工具?
因为通过 OpenAI-API-compatible 插件添加模型时,Function Call Type 默认设为 no_call,而 Structured Output、Vision Support、Stream function calling 和 Thinking Mode Support 默认都设为 not supported。这些是 Dify 依据声明作出的判断,并非探测结果,因此即使模型具备相应能力,使用默认设置添加后,Agent 或工具调用节点仍会拒绝使用它。打开模型配置,将 Function Call Type 设为 Tool Call;Function Call 是较早的格式。然后重新测试,再判断问题是否出在端点。
为什么 Dify 不显示通过兼容插件添加的模型价格?
因为该插件的提供商架构完全没有定价字段,而 Dify 第一方预定义模型文件中则包含这些字段。因此,Dify 没有可用于乘以 token 数量的每 token 费率,只会留空,而不会显示估算值。请从提供商自己的使用记录中查看费用,并将 Dify 显示的数字视为 token 数量。保持 Include Usage in Stream 启用,才能持续接收这些 token 数量。
将 Kunavo 添加到 Dify,和将 Dify 应用作为 API 暴露出来是一回事吗?
不是,它们的调用方向相反。添加 Kunavo 后,Dify 是客户端:Dify 的节点会使用你配置的 Kunavo 密钥向端点发送请求。Dify 的 Service API 则让你的代码成为客户端:代码使用 Dify 签发的密钥调用已发布的 Dify 应用,这个调用流程不涉及我们的基础 URL。一个应用通常会同时执行这两种调用,因此发生 401 错误时,首先应查明具体使用了哪把密钥。
Kunavo 测试过这套 Dify 配置吗?
没有。2026 年 9 月 21 日核查的是 Dify 自己的资料:Dify Marketplace 上的插件页面,以及 Dify 官方插件仓库中的提供商架构;此处引用的字段名称、顺序、必填标记和默认值均来自这些资料。没有人在实际运行的 Dify 工作区中添加 Kunavo 模型并执行工作流,因此本文不对该客户端中的流式传输、工具往返调用或长时间运行的 Agent 循环作出任何声称。你可以单独确认端点和密钥是否可用,本页中的 curl 命令即可完成此项验证。