ドキュメント

ドキュメント

Dify

Difyでは、OpenAI-API-compatibleプラグイン1つと必須項目のAPI Base URLを使って外部エンドポイントに接続します。URLを入力すれば、ワークフロー内のすべてのLLMノードで、1つのキーを使ってClaudeやGPTのIDを指定できます。

必須フィールドは1つ — OpenAI-API-compatibleプラグインのAdd ModelフォームにあるAPI Base URL — これでDifyワークスペースのすべてのLLMノードをKunavoに接続します。

Model Provider → OpenAI-API-compatible → Add Model
# 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.
API Base URL には /v1 も含めます。プラグインでは、endpoint_url が API Base URL というラベルで定義され、モデル名と並ぶ必須フィールドとして指定されています。プレースホルダーは「Base URL, e.g. https://api.openai.com/v1」です。この文言がフォームの形式を明確にしています。プラグインの README も例外を説明しているだけで、これに矛盾しているわけではありません。LLM 以外のモデルタイプでは「API バージョンを内部で追加する」ため、/v1/v1 が二重にならないよう、ベース URL のみを指定します。Kunavo のモデルに該当するタイプはないため、/v1 フォームだけを使えば問題ありません。
3つのスイッチはデフォルトでオフになっており、よくある問題の原因になります。Function Call Typeのデフォルトはno_call、Structured OutputとVision Supportは非対応です。デフォルトのままモデルを追加すると、通常のチャットノードは問題なく応答する一方、Agentノードやツールを使うワークフローでは失敗します。エンドポイントの問題に見えますが、原因はそこではありません。他の点を調べる前に、モデルを追加する際にこれらを設定してください。
Kunavoは埋め込み、テキスト読み上げ、音声認識、再ランキングの各モデルを提供していません。そのため、このプロバイダー設定が対応するのはDifyのLLM枠のみです。High Qualityモードでインデックスを作成したナレッジベース、Rerank Endpoint URL、音声ノードでは、既存のプロバイダーを引き続き使用します。LLMノードの接続先をここに設定しても、それらの呼び出し先は変わりません。
この設定は、下記の日付にDify自身のプラグイン掲載情報とプロバイダースキーマを確認してまとめたものです。Kunavoは、自社のエンドポイントに接続してDifyワークスペースを実行したことがありません。実際のワークスペースへのモデル追加、ワークフローの実行、ストリーミングでのツールの往復呼び出しは、いずれも行っていません。セットアップページの公開は、動作テストを意味しません。以下のcurlは10秒で確認できる部分です。それ以降のすべては、ユーザーとDifyの間で確認する事項です。
まだキーをお持ちですか?Kunavoアカウントを作成し、キーを作成します(sk-kn-で始まります)。$10からクレジットを追加すると、呼び出しはその残高から支払われ、失敗した呼び出しは課金されません。ダッシュボードを開くと、Dify設定が表示されます。

手順

  1. /app/keys でキーを作成してコピーします。キーは一度だけ表示されます。
  2. DifyでIntegrations → Model Providerを開き、Install model providers(またはMarketplace)から、langgeniusが公開しているOpenAI-API-compatibleをインストールします。Difyのドキュメントによると、プロバイダーを管理できるのはワークスペースのオーナーと管理者のみです。
  3. そのプロバイダーのカードでAdd Modelをクリックします。このプラグインには定義済みモデルがありません。customizable-modelプロバイダーなので、使いたいIDごとに個別の項目を追加します。
  4. 前述のとおりフォームに入力します。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も設定します。保存します。
  5. ワークフローを開き、モデルを使うノードでそのモデルを選択します。Difyではモデルをアプリ単位ではなくノード単位で割り当てるため、分類器と最終出力ノードで、異なるIDと料金のモデルを使えます。モデルを選択していないアプリやノードでは、Default Models → System Reasoning Modelが使われます。
  6. 上限を設定したワークフローを1回実行し、DifyではなくKunavoアカウントで料金を確認します。料金表示については、以下の注記をご覧ください。

DifyのOpenAI-API-compatibleプラグインページで2026年9月21日に確認しました。サードパーティの設定は変更されます。ここに記載されたフィールド名が表示内容と一致しなくなった場合は、このページではなく、そのページを正しい情報源としてください。

これが短い概要です。完全な手順 — モデルの選択、実際のセッション費用、失敗するケース — はDify のコストに関する解説にあります。

クライアントをデバッグする前に確認すること

1回のリクエストで、失敗の原因がエンドポイント、キー、設定ファイルのどれかを特定できます。これが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、価格付きのカタログはモデルページにあります。料金は100万トークンあたりのUSDで、入力 / 出力の順です。

モデル IDKunavo 入力 / 出力Difyでの位置付け
claude-sonnet-5$1.40 / $7.00ライターおよびエージェントノードの標準モデル — コンテキストサイズ 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同じキーで使う2つ目のファミリー。独立したモデル項目として追加 — 1050000
gpt-5-6-terra$0.70 / $4.20長文書を扱うノード — 1050000
請求は月額料金なしの前払い残高からトークン単位で行われます — 請求を参照してください。繰り返し送られるコンテキスト(エディターやチャットクライアントが送る内容の大半)では、プロンプトキャッシュのほうがモデル選択より請求額を大きく左右します。

「Dify API」と呼ばれるものは2種類あります

このページで扱うのはそのうちの1つですが、検索結果では両者が頻繁に混同されています。

  1. Dify にモデルを追加する — これは上の設定手順で行うことです。Dify がクライアント、Kunavo がエンドポイントで、入力する認証情報は sk-kn- キーです。これにより、そのワークスペース内のすべてのアプリにあるすべての LLM ノードから、追加した ID を指定できるようになります。
  2. 独自のコードから Dify アプリを呼び出す — 公開済みアプリ向けに Dify が提供する Service API で、Dify が発行する独自の app- キーを使います。そのキーは Dify のものであり、Kunavo のものではありません。また、これを別の場所に向けることはできません。この方向で Kunavo が関与することはありません。

両者は同じアプリ上で同時に動作でき、通常はそうなります。つまり、バックエンドは Dify キーで Dify アプリを呼び出し、アプリ内のノードは Kunavo キーで Kunavo を呼び出します。キーは2つ、請求も2つです。何かが 401 を返したときは、確認する場所も2か所あります。

追加したモデルのコストが Dify に表示されない理由

Dify のファーストパーティ製モデル定義ファイルには料金ブロックがあり、入力・出力の料金とトークン単位が定義されています。Dify はその値にトークン数を掛けて、ログに金額を表示します。一方、上記の日付時点で確認したところ、OpenAI API 互換プロバイダーのスキーマには、料金、単位、通貨のフィールドがどこにも定義されていませんでした。そのため、このプラグイン経由で追加したモデルについて、Dify には掛け合わせる料金がありません。金額欄に何も表示されないのは、割引を見つけたからでも、何かの不具合を起こしたからでもなく、そのためのフィールドが存在しないからです。実際の金額は Kunavo の利用状況で確認し、Dify の数値はトークン数として扱ってください。

関連する設定で、そのままにしておくべきものが1つあります。Include Usage in Stream はデフォルトで有効になっており、最終ストリームチャンクでプロンプトと完了のトークン数を返すようエンドポイントに要求します。これをオフにすると、トークン数も取得できなくなります。

Dify をセルフホストしている場合

Docker Compose スタックは、送信リクエストを ssrf_proxy サービス経由でルーティングするため、エンドポイントはノートパソコンのブラウザーから到達できるだけでなく、コンテナーネットワーク内からも到達できる必要があります。一方では動作し、もう一方ではタイムアウトする場合、通常はこれが原因です。認証情報ではなく、ネットワークの問題です。上記の curl をコンテナー内から実行すれば、直接確認できます。

よくある質問

独自の OpenAI 互換 API を Dify に接続するにはどうすればよいですか?

langgenius が公開している OpenAI API 互換プラグインを、Integrations → Model Provider → Install model providers または Dify Marketplace からインストールします。カードの 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/v1 という重複したパスになるためです。Kunavo はそのタイプのモデルを提供していないため、/v1 を含む形式を使ってください。/v1 がない場合は、認証エラーではなく 404 になります。

追加したモデルで Dify Agent ノードのツールを使えないのはなぜですか?

OpenAI API 互換プラグイン経由で追加したモデルでは、Function Call Type のデフォルトが no_call で、Structured Output、Vision Support、Stream function calling、Thinking Mode Support もすべてデフォルトで未対応になっているためです。これらは Dify が信頼する宣言値であり、機能を検証するものではありません。そのため、機能に対応したモデルでもデフォルト設定のままでは、Agent ノードやツールを使うノードで拒否されます。モデルの設定を開き、Function Call Type を Tool Call に設定してください。Function Call は古い形式です。エンドポイントに問題があると判断する前に、もう一度テストしてください。

互換プラグイン経由で追加したモデルの価格が Dify に表示されないのはなぜですか?

このプラグインのプロバイダースキーマには料金フィールドが一切ありませんが、Dify のファーストパーティ製モデル定義ファイルには料金フィールドがあるためです。そのため、Dify にはトークン数を掛ける単価がなく、推定額も表示されません。金額はプロバイダーの利用記録で確認し、Dify の数値はトークン数として扱ってください。トークン数を取得し続けるには、Include Usage in Stream を有効にしておきます。

Kunavo を Dify に追加することと、Dify アプリを API として公開することは同じですか?

いいえ。両者は逆方向に動作します。Kunavo を追加すると、Dify がクライアントとなり、Dify のノードが Kunavo キーを使って設定済みのエンドポイントにリクエストを送ります。Dify の Service API では、独自のコードがクライアントとなり、Dify が発行したキーを使って公開済みの Dify アプリを呼び出します。この経路に Kunavo のベース URL は関係ありません。通常、1つのアプリで両方を同時に使うため、何より先に、401 エラーがどのキーで発生したのかを確認してください。

Dify でこの設定を Kunavo がテストしましたか?

いいえ。2026年9月21日に確認したのは Dify 自身の資料です。具体的には、Dify Marketplace のプラグイン掲載情報と、Dify 公式プラグインリポジトリのプロバイダースキーマです。ここに記載したフィールド名、順序、必須フラグ、デフォルト値はこれらの資料に基づいています。実際の Dify ワークスペースに Kunavo のモデルを追加し、それを使ってワークフローを実行した人はいません。そのため、このクライアントにおけるストリーミング、ツールの往復呼び出し、長時間実行のエージェントループについては、何も主張していません。単独で確認できる唯一の点は、エンドポイントとキーが機能するかどうかです。このページの curl コマンドで確認できます。