Provider
Inherit the__base.model_provider.ModelProvider base class and implement the following interfaces:
-
credentials(object) Credential information The parameters of credential information are defined by theprovider_credential_schemain the provider’s YAML configuration file. Inputs such asapi_keyare included.
errors.validate.CredentialsValidateFailedError error.
Model
Models are divided into 5 different types, each inheriting from different base classes and requiring the implementation of different methods. All models need to uniformly implement the following 2 methods:-
Model Credential Verification
Similar to provider credential verification, this step involves verification for an individual model.
Parameters:
-
model(string) Model name -
credentials(object) Credential information The parameters of credential information are defined by either theprovider_credential_schemaormodel_credential_schemain the provider’s YAML configuration file. Inputs such asapi_keyare included.
errors.validate.CredentialsValidateFailedErrorerror. -
-
Invocation Error Mapping Table
When there is an exception in model invocation, it needs to be mapped to the
InvokeErrortype specified by Runtime. This facilitates Dify’s ability to handle different errors with appropriate follow-up actions. Runtime Errors:InvokeConnectionErrorInvocation connection errorInvokeServerUnavailableErrorInvocation service provider unavailableInvokeRateLimitErrorInvocation reached rate limitInvokeAuthorizationErrorInvocation authorization failureInvokeBadRequestErrorInvocation parameter error
_invoke_error_mapping for an example.
LLM
Inherit the__base.large_language_model.LargeLanguageModel base class and implement the following interfaces:
-
LLM Invocation
Implement the core method for LLM invocation, which can support both streaming and synchronous returns.
-
Parameters:
-
model(string) Model name -
credentials(object) Credential information The parameters of credential information are defined by either theprovider_credential_schemaormodel_credential_schemain the provider’s YAML configuration file. Inputs such asapi_keyare included. -
prompt_messages(array[PromptMessage]) List of prompts If the model is of theCompletiontype, the list only needs to include one UserPromptMessage element; If the model is of theChattype, it requires a list of elements such as SystemPromptMessage, UserPromptMessage, AssistantPromptMessage, ToolPromptMessage depending on the message. -
model_parameters(object) Model parameters The model parameters are defined by theparameter_rulesin the model’s YAML configuration. -
tools(array[PromptMessageTool]) [optional] List of tools, equivalent to thefunctioninfunction calling. That is, the tool list for tool calling. -
stop(array[string]) [optional] Stop sequences The model output will stop before the string defined by the stop sequence. -
stream(bool) Whether to output in a streaming manner, default is True Streaming output returns Generator[LLMResultChunk], non-streaming output returns LLMResult. -
user(string) [optional] Unique identifier of the user This can help the provider monitor and detect abusive behavior.
-
- Returns Streaming output returns Generator[LLMResultChunk], non-streaming output returns LLMResult.
-
Parameters:
-
Pre-calculating Input Tokens
If the model does not provide a pre-calculated tokens interface, you can directly return 0.
For parameter explanations, refer to the above section on
LLM Invocation. -
Fetch Custom Model Schema [Optional]
When the provider supports adding custom LLMs, this method can be implemented to allow custom models to fetch model schema. The default return null.
TextEmbedding
Inherit the__base.text_embedding_model.TextEmbeddingModel base class and implement the following interfaces:
-
Embedding Invocation
-
Parameters:
-
model(string) Model name -
credentials(object) Credential information The parameters of credential information are defined by either theprovider_credential_schemaormodel_credential_schemain the provider’s YAML configuration file. Inputs such asapi_keyare included. -
texts(array[string]) List of texts, capable of batch processing -
user(string) [optional] Unique identifier of the user This can help the provider monitor and detect abusive behavior.
-
- Returns: TextEmbeddingResult entity.
-
Parameters:
-
Pre-calculating Tokens
For parameter explanations, refer to the above section on
Embedding Invocation.
Rerank
Inherit the__base.rerank_model.RerankModel base class and implement the following interfaces:
-
Rerank Invocation
-
Parameters:
-
model(string) Model name -
credentials(object) Credential information The parameters of credential information are defined by either theprovider_credential_schemaormodel_credential_schemain the provider’s YAML configuration file. Inputs such asapi_keyare included. -
query(string) Query request content -
docs(array[string]) List of segments to be reranked -
score_threshold(float) [optional] Score threshold -
top_n(int) [optional] Select the top n segments -
user(string) [optional] Unique identifier of the user This can help the provider monitor and detect abusive behavior.
-
- Returns: RerankResult entity.
-
Parameters:
Speech2text
Inherit the__base.speech2text_model.Speech2TextModel base class and implement the following interfaces:
-
Invoke Invocation
-
Parameters:
-
model(string) Model name -
credentials(object) Credential information The parameters of credential information are defined by either theprovider_credential_schemaormodel_credential_schemain the provider’s YAML configuration file. Inputs such asapi_keyare included. -
file(File) File stream -
user(string) [optional] Unique identifier of the user This can help the provider monitor and detect abusive behavior.
-
- Returns: The string after speech-to-text conversion.
-
Parameters:
Text2speech
Inherit the__base.text2speech_model.Text2SpeechModel base class and implement the following interfaces:
-
Invoke Invocation
-
Parameters:
-
model(string) Model name -
credentials(object) Credential information The parameters of credential information are defined by either theprovider_credential_schemaormodel_credential_schemain the provider’s YAML configuration file. Inputs such asapi_keyare included. -
content_text(string) The text content that needs to be converted -
streaming(bool) Whether to stream output -
user(string) [optional] Unique identifier of the user This can help the provider monitor and detect abusive behavior.
-
- Returns: Text converted speech stream。
-
Parameters:
Moderation
Inherit the__base.moderation_model.ModerationModel base class and implement the following interfaces:
-
Invoke Invocation
-
Parameters:
-
model(string) Model name -
credentials(object) Credential information The parameters of credential information are defined by either theprovider_credential_schemaormodel_credential_schemain the provider’s YAML configuration file. Inputs such asapi_keyare included. -
text(string) Text content -
user(string) [optional] Unique identifier of the user This can help the provider monitor and detect abusive behavior.
-
- Returns: False indicates that the input text is safe, True indicates otherwise.
-
Parameters:
Entities
PromptMessageRole
Message rolePromptMessageContentType
Message content types, divided into text and image.PromptMessageContent
Message content base class, used only for parameter declaration and cannot be initialized.TextPromptMessageContent and ImagePromptMessageContent separately for input.
TextPromptMessageContent
content list.
ImagePromptMessageContent
content list.
data can be either a url or a base64 encoded string of the image.
PromptMessage
The base class for all Role message bodies, used only for parameter declaration and cannot be initialized.UserPromptMessage
UserMessage message body, representing a user’s message.AssistantPromptMessage
Represents a message returned by the model, typically used forfew-shots or inputting chat history.
tool_calls are the list of tool calls returned by the model after invoking the model with the tools input.
SystemPromptMessage
Represents system messages, usually used for setting system commands given to the model.ToolPromptMessage
Represents tool messages, used for conveying the results of a tool execution to the model for the next step of processing.content takes in the results of tool execution.
PromptMessageTool
LLMResult
LLMResultChunkDelta
In streaming returns, each iteration contains thedelta entity.