モデルプロバイダー
__base.model_provider.ModelProvider ベースクラスを継承し、以下のインターフェースを実装します:
credentials(object) クレデンシャル情報
provider_credential_schema で定義され、api_key などが渡されます。検証に失敗した場合は、errors.validate.CredentialsValidateFailedError エラーをスローしてください。注:事前定義モデルはこのインターフェースを完全に実装する必要がありますが、カスタムモデルプロバイダーは以下のように簡単な実装で済みます:
モデル
モデルは5つの異なるモデルタイプに分かれ、モデルタイプごとに継承するベースクラスや実装が必要なメソッドも異なります。共通インターフェース
すべてのモデルは、以下の2つのメソッドを共通して実装する必要があります:- モデルクレデンシャルの検証
model(string) モデル名credentials(object) クレデンシャル情報
provider_credential_schema または model_credential_schema で定義され、api_key などが渡されます。検証に失敗した場合は、errors.validate.CredentialsValidateFailedError エラーをスローしてください。
- 呼び出し例外エラーマッピングテーブル
InvokeError タイプにマッピングする必要があります。これにより、Dify は異なるエラーに対して異なる後続処理を行うことができます。Runtime Errors:
InvokeConnectionError呼び出し接続エラーInvokeServerUnavailableError呼び出し先サーバー利用不可InvokeRateLimitError呼び出しレート制限超過InvokeAuthorizationError呼び出し認証失敗InvokeBadRequestError呼び出しパラメータ不正
InvokeConnectionError などの例外を直接スローできます。
LLM
__base.large_language_model.LargeLanguageModel ベースクラスを継承し、以下のインターフェースを実装します:
- LLM 呼び出し
- パラメータ:
model(string) モデル名credentials(object) クレデンシャル情報
provider_credential_schema または model_credential_schema で定義され、api_key などが渡されます。
prompt_messages(array[PromptMessage]) プロンプトリスト
Completion タイプの場合、リストには UserPromptMessage 要素を1つ渡すだけで十分です。モデルが Chat タイプの場合、メッセージに応じて SystemPromptMessage、UserPromptMessage、AssistantPromptMessage、ToolPromptMessage 要素のリストを渡す必要があります。
-
model_parameters(object) モデルパラメータ。モデルパラメータはモデルのYAML設定のparameter_rulesで定義されます。 -
tools(array[PromptMessageTool]) [optional] ツールリスト。function callingにおけるfunctionと同等です。つまり、tool calling に渡すツールリストです。 -
stop(array[string]) [optional] ストップシーケンス。モデルの返却は、ストップシーケンスで定義された文字列の直前で停止します。 -
stream(bool) ストリーミング出力かどうか、デフォルトは True。ストリーミング出力は Generator[LLMResultChunk] を返し、非ストリーミング出力は LLMResult を返します。 -
user(string) [optional] ユーザーの一意の識別子。プロバイダーが不正利用を監視および検出するのに役立ちます。 - 返り値
- 入力トークンの事前計算
LLM 呼び出し を参照してください。このインターフェースは、対応する model に基づいて適切な tokenizer を選択して計算する必要があります。対応するモデルが tokenizer を提供していない場合は、AIModel ベースクラスの _get_num_tokens_by_gpt2(text: str) メソッドを使用して計算できます。
- カスタムモデルルールの取得 [オプション]
OpenAI プロバイダーのほとんどのファインチューニングモデルでは、ファインチューニングモデル名(例:gpt-3.5-turbo-1106)からベースモデルを取得し、そのベースモデルの事前定義パラメータルールを返すことができます。OpenAI の具体的な実装を参照してください。
TextEmbedding
__base.text_embedding_model.TextEmbeddingModel ベースクラスを継承し、以下のインターフェースを実装します:
- Embedding 呼び出し
- パラメータ:
-
model(string) モデル名 -
credentials(object) クレデンシャル情報
provider_credential_schema または model_credential_schema で定義され、api_key などが渡されます。
-
texts(array[string]) テキストリスト、バッチ処理可能 -
user(string) [optional] ユーザーの一意の識別子。プロバイダーが不正利用を監視および検出するのに役立ちます。 - 返り値:
- トークンの事前計算
Embedding 呼び出し を参照してください。
上記の LargeLanguageModel と同様に、このインターフェースは対応する model に基づいて適切な tokenizer を選択して計算する必要があります。対応するモデルが tokenizer を提供していない場合は、AIModel ベースクラスの _get_num_tokens_by_gpt2(text: str) メソッドを使用して計算できます。
Rerank
__base.rerank_model.RerankModel ベースクラスを継承し、以下のインターフェースを実装します:
- rerank 呼び出し
- パラメータ:
-
model(string) モデル名 -
credentials(object) クレデンシャル情報 クレデンシャル情報のパラメータは、プロバイダーのYAML設定ファイルのprovider_credential_schemaまたはmodel_credential_schemaで定義され、api_keyなどが渡されます。 -
query(string) クエリリクエストの内容 -
docs(array[string]) リランキングが必要なドキュメント(チャンク)のリスト -
score_threshold(float) [optional] スコアのしきい値 -
top_n(int) [optional] 上位n個のドキュメント(チャンク)を取得 -
user(string) [optional] ユーザーの一意の識別子。プロバイダーが不正利用を監視および検出するのに役立ちます。 - 返り値:
Speech2text
__base.speech2text_model.Speech2TextModel ベースクラスを継承し、以下のインターフェースを実装します:
- Invoke 呼び出し
- パラメータ:
-
model(string) モデル名 -
credentials(object) クレデンシャル情報 クレデンシャル情報のパラメータは、プロバイダーのYAML設定ファイルのprovider_credential_schemaまたはmodel_credential_schemaで定義され、api_keyなどが渡されます。 -
file(File) ファイルストリーム -
user(string) [optional] ユーザーの一意の識別子。プロバイダーが不正利用を監視および検出するのに役立ちます。 - 返り値:
Text2speech
__base.text2speech_model.Text2SpeechModel ベースクラスを継承し、以下のインターフェースを実装します:
- Invoke 呼び出し
- パラメータ:
-
model(string) モデル名 -
credentials(object) 認証情報 認証情報のパラメータは、プロバイダーのYAML設定ファイルのprovider_credential_schemaまたはmodel_credential_schemaで定義され、api_keyなどが渡されます。 -
content_text(string) 変換が必要なテキストコンテンツ -
streaming(bool) ストリーミング出力を行うかどうか -
user(string) [optional] ユーザーの一意の識別子 プロバイダーが不正利用を監視および検出するのに役立ちます。 - 戻り値:
Moderation
__base.moderation_model.ModerationModel ベースクラスを継承し、以下のインターフェースを実装します:
- Invoke 呼び出し
- パラメータ:
-
model(string) モデル名 -
credentials(object) 認証情報 認証情報のパラメータは、プロバイダーのYAML設定ファイルのprovider_credential_schemaまたはmodel_credential_schemaで定義され、api_keyなどが渡されます。 -
text(string) テキストコンテンツ -
user(string) [optional] ユーザーの一意の識別子 プロバイダーが不正利用を監視および検出するのに役立ちます。 - 戻り値:
エンティティ
PromptMessageRole
メッセージロールPromptMessageContentType
メッセージコンテントタイプ。プレーンテキストと画像に分かれます。PromptMessageContent
メッセージコンテントのベースクラス。パラメータ宣言専用であり、初期化できません。TextPromptMessageContent と ImagePromptMessageContent を初期化して渡す必要があります。
TextPromptMessageContent
content リストの一部として構築する必要があります。
ImagePromptMessageContent
content リストの一部として構築する必要があります。
data は url または画像の base64 エンコードされた文字列です。
PromptMessage
すべてのRoleメッセージボディのベースクラス。パラメータ宣言専用であり、初期化できません。UserPromptMessage
UserMessageメッセージボディ。ユーザーメッセージを表します。AssistantPromptMessage
モデルの返信メッセージを表します。通常、few-shots またはチャット履歴の入力に使用されます。
tool_calls は、モデルを呼び出す際に tools を渡した後、モデルから返される tool call のリストです。
SystemPromptMessage
システムメッセージを表します。通常、モデルに設定するシステム指示に使用されます。ToolPromptMessage
ツールメッセージを表します。ツールの実行後に結果をモデルに渡し、次のステップを計画するために使用されます。content にツールの実行結果を渡します。
PromptMessageTool
LLMResult
LLMResultChunkDelta
ストリーミングレスポンスにおける各イテレーション内部のdelta エンティティ
LLMResultChunk
ストリーミングレスポンスにおける各イテレーションのエンティティLLMUsage
TextEmbeddingResult
EmbeddingUsage
RerankResult
RerankDocument
関連リソース
- モデル設計ルール - モデル設定の仕様を理解する
- モデルプラグイン紹介 - モデルプラグインの基本概念を素早く理解する
- 新しいモデルへの迅速な接続 - 既存のプロバイダーに新しいモデルを追加する方法を学ぶ
- 新規モデルプロバイダーの作成 - 全く新しいモデルプロバイダーを開発する方法を学ぶ
このページを編集する | 問題を報告する