模型供应商
继承__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]) Prompt 列表
Completion 类型,则列表只需要传入一个 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] 用户的唯一标识符可以帮助供应商监控和检测滥用行为。 - 返回
- 预计算输入 tokens
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] 用户的唯一标识符 可以帮助供应商监控和检测滥用行为。 - 返回:
- 预计算 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] 取前 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
相关资源
编辑此页面 | 提交问题