新しいモデルを迅速に統合する
このドキュメントでは、専門家でない開発者がDifyに新しいモデルを追加する方法を説明します。既存のモデルプロバイダーに設定ファイルを変更することで新しいモデルタイプを追加することに焦点を当てています。リポジトリのフォーク、モデル設定のコピーと変更、プロバイダーバージョンの更新、ローカルテスト、およびコントリビューションの提出までの完全なプロセスを含みます。
Difyのプラグイン開発の世界へようこそ!Difyの強力な機能は、コミュニティ貢献者の共同の努力なしにはありえません。たとえプロのプログラマーでなくても、AI技術に情熱を持ち、資料を調べる意欲があれば、Difyにより多くの、より新しいAIモデルをサポートするなど、Difyに貢献できると信じています。
この記事では、最も簡潔な方法で、最も一般的で簡単な貢献、つまりDifyが既にサポートしているモデルプロバイダーに、新しいモデルタイプを追加する方法を説明します。この方法は通常、設定ファイルの変更のみが必要で、コードを書く必要がないため、最初の貢献として非常に適しています!
関連概念:開始する前に、モデルプラグインのドキュメントを読んで、モデルプラグインの基本概念と構造を理解することをお勧めします。
この迅速な統合方法は、以下の場合に適しています:
- 新しいモデルが、Difyが既にプラグインでサポートしているプロバイダー(OpenAI、Google Gemini、Anthropic Claudeなど)に属している場合。
- 新しいモデルが、同じシリーズの他のモデルと同じAPI認証および基本的な呼び出しロジックを使用している場合。
- 主な違いが、モデルID、コンテキスト長、最大トークン数、価格設定などの設定パラメーターにある場合。
(追加する必要のあるモデルが新しいAPIロジックを必要とするか、特殊な機能をサポートする場合、Pythonコードの記述が必要になります。新しいモデルプロバイダーの作成 で詳細なガイドを参照してください。)
準備作業:
- 基本的なGit操作(Fork、Clone、Pull Request)に慣れていること。
- GitHubアカウント。
- Difyプラグイン開発ツールキットをインストールし、設定済みであること(開発ツールの初期化を参照)。
操作手順:
-
公式プラグインリポジトリをフォーク&クローン:
- Dify公式プラグインリポジトリ
https://github.com/langgenius/dify-official-plugins
にアクセスします。 - 「Fork」ボタンをクリックして、リポジトリを自分のGitHubアカウントにフォークします。
- Gitを使用して、フォークしたリポジトリをローカルコンピュータにクローンします。
- Dify公式プラグインリポジトリ
-
モデル設定ファイルを見つけてコピー:
- ローカルリポジトリで、
models/
ディレクトリに移動し、モデルを追加したいプロバイダーのフォルダ(例:vertex_ai
)を見つけます。 - そのプロバイダーに対応するモデルタイプのサブディレクトリ(通常はテキスト生成モデルの場合
models/llm/
)に入ります。 - そのディレクトリ内で、追加したい新しいモデルに最も似ている既存モデルのYAML設定ファイル(例:
gemini-1.0-pro-001.yaml
)を見つけます。 - このYAMLファイルをコピーし、新しいモデルタイプを明確に識別できる名前に変更します(例:
gemini-1.5-pro-latest.yaml
)。
- ローカルリポジトリで、
-
モデル設定の変更 (YAML):
- 先ほど名前を変更したYAMLファイル(例:
gemini-1.5-pro-latest.yaml
)を開きます。 - 核心ステップ: モデルプロバイダーの公式ドキュメントを参照し、ファイル内の以下の重要な情報を注意深く確認して変更します:
model
: 必須 新しいモデルタイプの公式API識別子に更新します。label
: 必須 Difyインターフェースでユーザーに表示されるモデル名に更新します(en_US
とzh_Hans
の両方の言語を提供することをお勧めします)。model_properties
:context_size
(コンテキストウィンドウサイズ)を更新します。parameter_rules
: モデルパラメータの制限、特にmax_tokens
(最大出力トークン数)のdefault
、min
、max
値を確認して更新します。pricing
: モデルの入力(input
)と出力(output
)の価格設定、および単位(unit
、通常は百万トークンを表す0.000001
)と通貨(currency
)を更新します。
- (参考) モデルYAMLファイルの各フィールドの詳細な仕様については、モデル設計ルール および モデルスキーマ定義 を参照してください。
例 (Gemini 1.5 Pro の追加):
パラメータ 既存モデルの可能性 (例) 新しい Gemini 1.5 Pro (例) 説明 model
gemini-1.0-pro-001
gemini-1.5-pro-latest
必須 公式モデルIDに変更 label: en_US
Gemini 1.0 Pro Gemini 1.5 Pro 必須 ユーザーに表示されるラベルに変更 context_size
30720 1048576 必須 公式ドキュメントに基づいて変更 max_tokens
(下)2048 8192 必須 公式ドキュメントに基づいてデフォルト/最大値を変更 - 先ほど名前を変更したYAMLファイル(例:
-
プロバイダーマニフェストのバージョンを更新:
- そのモデルプロバイダーのルートディレクトリ(例:
models/vertex_ai/
)に戻ります。 manifest.yaml
ファイルを見つけて開きます。- その中の
version
フィールドをマイナーバージョン番号でインクリメントします(例:version: 0.0.8
->version: 0.0.9
)。これにより、Difyにこれが更新であることを伝えます。
- そのモデルプロバイダーのルートディレクトリ(例:
-
パッケージ化とローカルテスト:
- ターミナル(コマンドラインツール)を開きます。
- 現在のディレクトリが
dify-official-plugins
リポジトリのルートディレクトリ(つまり、models
、tools
などのフォルダが含まれるディレクトリ)であることを確認してください。 - パッケージ化コマンドを実行します:
- 成功すると、
plugin packaged successfully, output path: <provider_name>.difypkg
のようなメッセージが表示され、現在のプロジェクトのルートディレクトリに<provider_name>.difypkg
という名前のプラグインパッケージファイルが生成されます。 - Difyインスタンス(ローカルデプロイまたはクラウドバージョンのいずれか)にログインします。
- Difyページ最上部のナビゲーションバー右側にある 「プラグイン」 メニュー項目をクリックします。
- プラグインページで、「プラグインをインストール」 ボタンをクリックします。
- 「ローカルプラグイン」 タブを選択します。
- アップロードエリアをクリックし、先ほどローカルで生成した
<provider_name>.difypkg
ファイルを選択またはドラッグアンドドロップしてアップロードします。 - プラグインのインストールまたは更新が完了するのを待ちます。
- インストールが成功したら、通常、「設定」->「モデルプロバイダー」に移動して対応するプロバイダーを見つけ、API認証情報(以前に設定していない場合)を設定する必要があります。
- 新しいDifyアプリケーションを作成するか、既存のアプリケーションを編集し、「プロンプトエンジニアリング」->「モデル」設定で、新しく追加したモデルを選択してみてください。簡単な会話や呼び出しテストを行い、正常に動作し、期待される結果が返されることを確認します。
-
コントリビューションを提出:
- ローカルテストで問題がなければ、変更(新しいモデルYAMLファイルと更新された
manifest.yaml
)をGitでコミット(commit)し、フォークしたGitHubリポジトリにプッシュ(push)します。 - GitHub上で、
langgenius/dify-official-plugins
のメインリポジトリに対してプルリクエスト(PR)を作成します。PRの説明には、どのモデルを追加したかを簡潔に説明し、そのモデルの公式ドキュメントへのリンクを添付して、レビュー担当者がパラメータを確認しやすくします。
- ローカルテストで問題がなければ、変更(新しいモデルYAMLファイルと更新された
それで、次は?
PRがレビューされマージされると、あなたの貢献はDify公式プラグインの一部となり、すべてのDifyユーザーがこの新しいモデルを簡単に利用できるようになります!
この迅速な統合方法は、Difyが新しいモデルをサポートするための最速の方法です。もちろん、将来このモデルがより複雑な機能(例えば、画像入力、関数呼び出しなど)をサポートする必要がある場合、経験豊富な開発者がプラグインをコードレベルで更新する必要があるかもしれません。しかし、あなたが今完了したこのステップは、既に非常に価値のある貢献です!
さらに探求する:
- モデルスキーマ定義 (モデルYAMLファイルの詳細なルールを理解する)
- モデル設計ルール (モデルパラメータ設計の仕様を理解する)
- 一般仕様定義 (
manifest.yaml
の役割を理解する) - 新しいモデルプロバイダーの作成 (新しいモデルプロバイダーの追加方法を理解する)
- Difyマーケットプレイスへの公開 (プラグインの公開方法を学ぶ)
- Dify公式プラグインリポジトリ (他のプラグインの例を見る)