プロバイダーの設定方法
プロバイダーは3つのモデル設定方法に対応しています: 事前定義モデル(predefined-model) ユーザーは統一されたプロバイダーのクレデンシャルを設定するだけで、プロバイダーの事前定義モデルを使用できます。 カスタマイズのモデル(customizable-model) ユーザーは各モデルのクレデンシャル設定を追加する必要があります。例えば、XinferenceはLLMとテキスト埋め込みの両方に対応していますが、各モデルには一意のモデルUIDがあり、両方使用したい場合は、それぞれのモデルに対してモデルUIDを設定する必要があります。 リモートから取得(fetch-from-remote)predefined-modelの設定方法と同じ方法になり、統一されたプロバイダーのクレデンシャルを設定すれば、モデルはクレデンシャル情報を通じてプロバイダーのリモートサーバーから取得されます。これにより、開発者はプロバイダーの事前定義モデルを使用することができます。
例えばOpenAIの場合、gpt-turbo-3.5を基に複数のモデルを微調整することができ、それらはすべて同じapi_keyの下にあります。fetch-from-remoteとして設定すると、開発者は統一されたapi_keyを設定するだけで、Dify Runtimeが開発者のすべての微調整モデルを取得してDifyで使用できます。
これら3つの設定方法は共存可能であり、例えばプロバイダーがpredefined-model + customizable-model、またはpredefined-model + fetch-from-remoteをサポートする場合があります。統一されたプロバイダーのクレデンシャルを設定することで、事前定義モデルとリモートから取得したモデルを使用でき、新しいモデルを追加することでカスタマイズ可能なモデルも使用できます。
設定説明
名詞解説module: 1つのmoduleは1つのPythonパッケージ、簡単に言えば一つのフォルダーであり、その中に__init__.pyファイルと他の.pyファイルが含まれます。
- プロバイダーのYAMLファイルを作成し、プロバイダースキーマに基づいて記述します。
- プロバイダーのコードを作成し、
classを実装します。 - モデルタイプに応じて、プロバイダーの
module内に対応するモデルタイプのmoduleを作成します。例えばllmやtext_embedding。 - モデルタイプに応じて、対応するモデル
module内に同名のコードファイルを作成し、例えばllm.py、classを実装します。 - 事前定義モデルがある場合、モデル名と同名のyamlファイルをモデル
module内に作成し、例えばclaude-2.1.yaml、AIモデルエンティティに基づいて記述します。 - テストコードを記述し、機能の有用性を確認します。
最初から
新しいプロバイダーを追加するには、まずプロバイダーの英語識別子を決めます。例えばanthropic、この識別子を使ってmodel_providers内に同名のmoduleを作成します。
このmodule内で、まずプロバイダーのYAML設定を準備する必要があります。
プロバイダーYAMLの準備
ここではAnthropicを例に、プロバイダーの基本情報、対応するモデルタイプ、設定方法、クレデンシャルルールを設定します。
OpenAIが微調整モデルを提供する場合、model_credential_schemaを追加する必要があります。以下はOpenAIを例にしたものです:
model_providersディレクトリ内の他のプロバイダーディレクトリのYAML設定情報も参考にできます。
プロバイダーコードの実装
model_providers内に同名のPythonファイルを作成します。例えばanthropic.pyを作成し、classを実装、__base.provider.Provider基クラスを継承します。例えばAnthropicProvider。
カスタマイズ可能モデルプロバイダー
プロバイダーがXinferenceなどのカスタマイズ可能モデルプロバイダーの場合、このステップをスキップし、空のXinferenceProviderクラスを作成し、空のvalidate_provider_credentialsメソッドを実装するだけで済みます。このメソッドは実際には使用されず、抽象クラスのインスタンス化を避けるためにのみ存在します。
__base.model_provider.ModelProvider基クラスを継承し、validate_provider_credentialsプロバイダーの統一クレデンシャル検証メソッドを実装するだけで済みます。AnthropicProviderを参考にできます。
validate_provider_credentialsの実装を先に予約し、モデルクレデンシャル検証メソッドの実装後に直接再利用することもできます。
モデルの追加
事前定義モデルの追加👈🏻
事前定義モデルの場合、単純にyamlを定義し、呼び出しコードを実装することで接続できます。
カスタマイズ可能モデルの追加 👈🏻
カスタマイズ可能モデルの場合、呼び出しコードを実装するだけで接続できますが、処理するパラメーターはさらに複雑になる可能性があります。
テスト
プロバイダー/モデルの有用性を確保するため、実装した各メソッドにはtestsディレクトリ内で対応する統合テストコードを記述する必要があります。
再びAnthropicを例にします。
テストコードを記述する前に、.env.exampleにテストプロバイダーが必要とするクレデンシャル環境変数を追加します。例えば:ANTHROPIC_API_KEY。
実行前に.env.exampleをコピーして.envにし、実行します。
テストコードの記述
testsディレクトリ内にプロバイダーと同名のモジュールを作成します:anthropic。このモジュール内にtest_provider.pyおよび対応するモデルタイプのテストpyファイルを作成します。以下のようになります: