⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。
validate_provider_credentialを実装する必要はありません。ランタイム中、ユーザーが選択したモデルタイプまたはモデル名に基づいて、Difyは自動的に対応するモデルレイヤーのvalidate_credentialsメソッドを呼び出して認証情報を検証します。
カスタムモデルプラグインの統合
以下はカスタムモデルを統合する手順です:- モデルプロバイダーファイルの作成
カスタムモデルに含まれるモデルタイプを特定します。 - モデルタイプごとのコードファイルの作成
モデルのタイプ(例:llmやtext_embedding)に応じて、別々のコードファイルを作成します。各モデルタイプが個別の論理レイヤーに整理されていることを確認し、保守と将来の拡張を容易にします。 - モデル呼び出しロジックの開発
各モデルタイプモジュール内で、そのモデルタイプの名前を付けたPythonファイル(例:llm.py)を作成します。ファイル内でシステムのモデルインターフェース仕様に準拠した特定のモデルロジックを実装するクラスを定義します。 - プラグインのデバッグ
新しいプロバイダー機能のユニットテストと統合テストを作成し、すべてのコンポーネントが意図どおりに動作することを確認します。
1. モデルプロバイダーファイルの作成
プラグインの/providerディレクトリに、xinference.yamlファイルを作成します。
XinferenceファミリーのモデルはLLM、Text Embedding、Rerankモデルタイプをサポートしているため、xinference.yamlにはこれら3つすべてを含める必要があります。
例:
provider_credential_schemaを定義します。Xinferenceはテキスト生成、エンベディング、リランキングモデルをサポートしているため、以下のように設定できます:
model_nameが必要です:
2. モデルコードの開発
Xinferenceはllm、rerank、speech2text、ttsをサポートしているため、/models下に対応するディレクトリを作成し、それぞれに機能コードを含める必要があります。 以下はllmタイプのモデルの例です。llm.pyという名前のファイルを作成し、__base.large_language_model.LargeLanguageModelを拡張するXinferenceAILargeLanguageModelなどのクラスを定義します。このクラスには以下を含める必要があります:- LLM呼び出し
yieldを含む関数をGenerator型を返すジェネレータとして扱うため、これらを分離することをお勧めします:
- 入力トークンの事前計算
AIModel基底クラスからself._get_num_tokens_by_gpt2(text: str)を呼び出すことができます。これはGPT-2トークナイザーを使用します。これは近似値であり、モデルと正確に一致しない場合があることに注意してください。
- モデル認証情報の検証
- 動的モデルパラメータスキーマ
max_tokens、temperature、top_pをサポートしています。他のプロバイダー(例:OpenLLM)は、特定のモデルでのみtop_kなどのパラメータをサポートする場合があります。つまり、各モデルの機能に合わせてスキーマを適応させる必要があります:
- エラーマッピング
3. プラグインのデバッグ
開発が完了したら、プラグインをテストして正しく動作することを確認します。詳細については、以下を参照してください:プラグインのデバッグ
4. プラグインの公開
このプラグインをDify Marketplaceに掲載したい場合は、以下を参照してください: Dify Marketplaceに公開さらに探索
クイックスタート: プラグインエンドポイントドキュメント:Edit this page | Report an issue