⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。
はじめに
このドキュメントでは、Difyモデルプラグインを実装するために必要なインターフェースとデータ構造について詳しく説明します。AIモデルをDifyプラットフォームと統合する開発者向けの技術リファレンスとして機能します。このAPIリファレンスに入る前に、概念的な理解のためにモデル設計ルールとモデルプラグイン入門を先に読むことをお勧めします。
プロバイダー実装
異なるAIサービスプロバイダー向けのモデルプロバイダークラスの実装方法を学ぶ
モデルタイプ
5つのサポートされているモデルタイプの実装詳細:LLM、Embedding、Rerank、Speech2Text、Text2Speech
データ構造
モデルAPIで使用されるすべてのデータ構造の包括的なリファレンス
エラーハンドリング
適切なエラーマッピングと例外処理のガイドライン
モデルプロバイダー
すべてのモデルプロバイダーは__base.model_provider.ModelProvider基底クラスを継承し、認証情報検証インターフェースを実装する必要があります。
プロバイダー認証情報検証
dict
プロバイダーのYAML設定の
provider_credential_schemaで定義された認証情報。
通常、api_key、organization_idなどのフィールドを含みます。モデル
Difyは5つの異なるモデルタイプをサポートしており、それぞれ特定のインターフェースの実装が必要です。ただし、すべてのモデルタイプにはいくつかの共通要件があります。共通インターフェース
タイプに関係なく、すべてのモデル実装はこれら2つの基本メソッドを実装する必要があります:1. モデル認証情報検証
string
必須
検証する特定のモデル識別子(例:「gpt-4」、「claude-3-opus」)
dict
必須
プロバイダーの設定で定義された認証情報
2. エラーマッピング
利用可能なエラータイプ
利用可能なエラータイプ
LLM実装
大規模言語モデルプロバイダーを実装するには、__base.large_language_model.LargeLanguageModel基底クラスを継承し、これらのメソッドを実装します:
1. モデル呼び出し
このコアメソッドは、言語モデルへのストリーミングおよび非ストリーミングAPI呼び出しの両方を処理します。パラメータ
パラメータ
string
必須
モデル識別子(例:「gpt-4」、「claude-3」)
dict
必須
API用の認証情報
list[PromptMessage]
必須
Difyの標準化されたフォーマットのメッセージリスト:
completionモデルの場合:単一のUserPromptMessageを含めるchatモデルの場合:必要に応じてSystemPromptMessage、UserPromptMessage、AssistantPromptMessage、ToolPromptMessageを含める
dict
必須
モデルのYAML設定で定義されたモデル固有のパラメータ(temperature、top_pなど)
list[PromptMessageTool]
関数呼び出し機能のためのツール定義
list[string]
遭遇時にモデル生成を停止するストップシーケンス
boolean
デフォルト:true
ストリーミングレスポンスを返すかどうか
string
API監視用のユーザー識別子
戻り値
戻り値
2. トークンカウント
モデルがトークナイザーを提供していない場合、基底クラスの
_get_num_tokens_by_gpt2(text)メソッドを使用して妥当な近似値を得ることができます。3. カスタムモデルスキーマ(オプション)
このメソッドは、カスタムモデルをサポートするプロバイダーにのみ必要です。カスタムモデルが基本モデルからパラメータルールを継承できるようにします。
TextEmbedding実装
テキスト埋め込みモデルは、テキストを意味的な意味を捉える高次元ベクトルに変換し、検索、類似性検索、分類に役立ちます。
__base.text_embedding_model.TextEmbeddingModel基底クラスを継承します:
1. コア埋め込みメソッド
戻り値
戻り値
object
必須
以下を含む構造化されたレスポンス:
- model:埋め込みに使用されたモデル
- embeddings:入力テキストに対応する埋め込みベクトルのリスト
- usage:トークン使用量とコストに関するメタデータ
2. トークンカウントメソッド
Rerank実装
リランキングモデルは、通常初期検索フェーズの後、クエリとの関連性に基づいて候補ドキュメントのセットを再順序付けすることで検索品質を向上させます。
__base.rerank_model.RerankModel基底クラスを継承します:
パラメータ
パラメータ
戻り値
戻り値
object
必須
以下を含む構造化されたレスポンス:
- model:リランキングに使用されたモデル
- docs:index、text、scoreを持つRerankDocumentオブジェクトのリスト
Speech2Text実装
音声テキスト変換モデルは、音声ファイルから話された言語を書かれたテキストに変換し、文字起こしサービス、音声コマンド、アクセシビリティ機能などのアプリケーションを可能にします。
__base.speech2text_model.Speech2TextModel基底クラスを継承します:
パラメータ
パラメータ
戻り値
戻り値
string
必須
音声ファイルから文字起こしされたテキスト
Text2Speech実装
テキスト音声変換モデルは、書かれたテキストを自然な音声に変換し、音声アシスタント、スクリーンリーダー、音声コンテンツ生成などのアプリケーションを可能にします。
__base.text2speech_model.Text2SpeechModel基底クラスを継承します:
パラメータ
パラメータ
Moderation実装
モデレーションモデルは、潜在的に有害、不適切、または安全でないコンテンツについてコンテンツを分析し、プラットフォームの安全性とコンテンツポリシーの維持を支援します。
__base.moderation_model.ModerationModel基底クラスを継承します:
戻り値
戻り値
boolean
必須
コンテンツの安全性を示すブール値:
- False:コンテンツは安全
- True:コンテンツに有害な素材が含まれている
エンティティ
PromptMessageRole
メッセージロールPromptMessageContentType
メッセージコンテンツタイプ、プレーンテキストと画像に分かれます。PromptMessageContent
メッセージコンテンツ基底クラス、パラメータ宣言のみに使用され、初期化できません。TextPromptMessageContentとImagePromptMessageContentを別々に初期化する必要があります。
TextPromptMessageContent
contentリストの一部としてこのエンティティとして構築する必要があります。
ImagePromptMessageContent
contentリストの一部としてこのエンティティとして構築する必要があります。
dataはurlまたは画像のbase64エンコードされた文字列にすることができます。
PromptMessage
すべてのロールメッセージボディの基底クラス、パラメータ宣言のみに使用され、初期化できません。UserPromptMessage
UserMessageメッセージボディ、ユーザーメッセージを表します。AssistantPromptMessage
モデル応答メッセージを表し、通常few-shotsまたはチャット履歴入力に使用されます。
tool_callsは、モデルにtoolsを渡した後にモデルが返すtool callのリストです。
SystemPromptMessage
システムメッセージを表し、通常モデルのシステム指示を設定するために使用されます。ToolPromptMessage
ツールメッセージを表し、ツールが実行された後に次のステップの計画のために結果をモデルに渡すために使用されます。contentにツール実行結果を渡します。
PromptMessageTool
LLMResult
LLMResultChunkDelta
ストリーミングレスポンスの各イテレーション内のDeltaエンティティLLMResultChunk
ストリーミングレスポンスのイテレーションエンティティLLMUsage
TextEmbeddingResult
EmbeddingUsage
RerankResult
RerankDocument
関連リソース
- モデル設計ルール - モデル設定の標準を理解する
- モデルプラグイン入門 - モデルプラグインの基本概念を素早く理解する
- 新しいモデルを素早く統合する - 既存のプロバイダーに新しいモデルを追加する方法を学ぶ
- 新しいモデルプロバイダーを作成する - 全く新しいモデルプロバイダーを開発する方法を学ぶ
Edit this page | Report an issue