サプライヤー
__base.model_provider.ModelProvider基本クラスを継承し、以下のインターフェースを実装する必要があります:
-
credentials(object) 資格情報 資格情報のパラメータは、サプライヤーのYAML構成ファイルのprovider_credential_schemaで定義され、api_keyなどが渡されます。
errors.validate.CredentialsValidateFailedErrorエラーをスローします。
注:事前定義されたモデルはインターフェースをすべて実装する必要がありますが、カスタムモデルサプライヤーは以下の簡単な実装のみになります。
モデル
モデルには5つのモデルタイプがあり、それぞれで異なるベースクラスを継承するため、実装するメソッドも異なります。一般インターフェース
すべてのモデルには以下の2つのメソッドを実装する必要があります:-
モデルの認証情報を検証する
サプライヤーの認証情報検証と同様に、ここでは個々のモデルに対して検証を行います。
パラメータ:
-
model(string) モデル名 -
credentials(object) 認証情報 認証情報のパラメータは、サプライヤの YAML 構成ファイルの provider_credential_schema または model_credential_schema で定義されており、api_key などの詳細が含まれます。
errors.validate.CredentialsValidateFailedErrorエラーをスローします。 -
-
例外エラーマッピングの呼び出し
モデルの呼び出しで例外が発生した場合、Runtimeが指定するInvokeErrorタイプにマッピングする必要があります。これにより、Difyは異なるエラーに応じた適切な後続処理を実行できるようになります。
Runtime Errors:
InvokeConnectionErrorコール接続エラーInvokeServerUnavailableErrorコールサービスを利用できませんInvokeRateLimitErrorコールがRate Limitに達しましたInvokeAuthorizationErrorコール認証エラーInvokeBadRequestErrorコールパラメータが誤っています
または、対応するエラーを直接スローし、以下のように定義することもできます。これにより、後続の呼び出しでInvokeConnectionErrorなどの例外を直接スローできます。
_invoke_error_mapping をご参照ください。
LLM
__base.large_language_model.LargeLanguageModel 基本クラスを継承し、以下のインターフェースを実装します:
-
LLMの呼び出し
LLM呼び出しのコアメソッドを実装し、ストリーミングと同期応答の両方をサポートします。
-
パラメータ:
-
model(string) モデル名 -
credentials(object) 認証情報 認証情報のパラメータは、サプライヤの YAML 構成ファイルの provider_credential_schema または model_credential_schema で定義されており、api_key などの詳細が含まれます。 -
prompt_messages(array[PromptMessage]) Prompt リスト モデルのタイプがCompletionの場合、リストには1つのUserPromptMessage 要素のみを渡す必要があります; モデルのタイプが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] ユーザーの一意の識別子 サプライヤが不正行為を監視および検出するのに使用されます。
-
- 返り値 ストリーム出力の場合は Generator[LLMResultChunk],ストリーム出力にしない場合は LLMResult。
-
パラメータ:
-
入力tokenの事前計算
モデルがtokenの事前計算インターフェースを提供していない場合は、直接0を返すことができます。
パラメータの説明は上記の
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) 認証情報 認証情報のパラメータは、サプライヤの YAML 構成ファイルの provider_credential_schema または model_credential_schema で定義されており、api_key などの詳細が含まれます。 -
texts(array[string]) テキストリスト,バッチで処理できる -
user(string) [optional] ユーザーの一意の識別子 サプライヤが不正行為を監視および検出するのに使用されます。
-
- 返り値: TextEmbeddingResult エンティティ。
-
パラメータ:
-
tokensの事前計算
パラメータの説明は上記の
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] Scoreの閾値 -
top_n(int) [optional] Rerank結果のトップn件を取得します。 -
user(string) [optional] ユーザーの一意の識別子 サプライヤが不正行為を監視および検出するのに役立ちます。
-
- 返り値: RerankResult エンティティ。
-
パラメータ:
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] ユーザーの一意の識別子 サプライヤが不正行為を監視および検出するのに使用されます。
-
- 返り値: False の場合は入力したテキストは安全であり、True の場合はその逆。
-
パラメータ:
エンティティ
PromptMessageRole
メッセージロールを定義する列挙型。PromptMessageContentType
メッセージコンテンツのタイプを定義しており、テキストと画像の2種類あります。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 エンティティ。