“模型”已全面升级为“插件”生态,模型插件的详细开发说明请参考插件开发。以下内容已归档。
供应商集成完成后,接下来为供应商下模型的接入。
我们首先需要确定接入模型的类型,并在对应供应商的目录下创建对应模型类型的 module
。
当前支持模型类型如下:
llm
文本生成模型text_embedding
文本 Embedding 模型rerank
Rerank 模型speech2text
语音转文字tts
文字转语音moderation
审查依旧以 Anthropic
为例,Anthropic
仅支持 LLM,因此在 model_providers.anthropic
创建一个 llm
为名称的 module
。
对于预定义的模型,我们首先需要在 llm
module
下创建以模型名为文件名称的 YAML 文件,如:claude-2.1.yaml
。
建议将所有模型配置都准备完毕后再开始模型代码的实现。
同样,也可以参考 model_providers
目录下其他供应商对应模型类型目录下的 YAML 配置信息,完整的 YAML 规则见:Schema1。
接下来需要在 llm
module
下创建一个同名的 python 文件 llm.py
来编写代码实现。
在 llm.py
中创建一个 Anthropic LLM 类,我们取名为 AnthropicLargeLanguageModel
(随意),继承 __base.large_language_model.LargeLanguageModel
基类,实现以下几个方法:
LLM 调用
实现 LLM 调用的核心方法,可同时支持流式和同步返回。
在实现时,需要注意使用两个函数来返回数据,分别用于处理同步返回和流式返回,因为Python会将函数中包含 yield
关键字的函数识别为生成器函数,返回的数据类型固定为 Generator
,因此同步和流式返回需要分别实现,就像下面这样(注意下面例子使用了简化参数,实际实现时需要按照上面的参数列表进行实现):
预计算输入 tokens
若模型未提供预计算 tokens 接口,可直接返回 0。
模型凭据校验
与供应商凭据校验类似,这里针对单个模型进行校验。
调用异常错误映射表
当模型调用异常时需要映射到 Runtime 指定的 InvokeError
类型,方便 Dify 针对不同错误做不同后续处理。
Runtime Errors:
InvokeConnectionError
调用连接错误InvokeServerUnavailableError
调用服务方不可用InvokeRateLimitError
调用达到限额InvokeAuthorizationError
调用鉴权失败InvokeBadRequestError
调用传参有误接口方法说明见:Interfaces,具体实现可参考:llm.py。
provider
(string) 供应商标识,如:openai
label
(object) 供应商展示名称,i18n,可设置 en_US
英文、zh_Hans
中文两种语言
zh_Hans
(string) [optional] 中文标签名,zh_Hans
不设置将默认使用 en_US
。en_US
(string) 英文标签名description
(object) [optional] 供应商描述,i18n
zh_Hans
(string) [optional] 中文描述en_US
(string) 英文描述icon_small
(string) [optional] 供应商小 ICON,存储在对应供应商实现目录下的 _assets
目录,中英文策略同 label
zh_Hans
(string) [optional] 中文 ICONen_US
(string) 英文 ICONicon_large
(string) [optional] 供应商大 ICON,存储在对应供应商实现目录下的 _assets 目录,中英文策略同 label
zh_Hans
(string) [optional] 中文 ICONen_US
(string) 英文 ICONbackground
(string) [optional] 背景颜色色值,例:#FFFFFF,为空则展示前端默认色值。help
(object) [optional] 帮助信息
title
(object) 帮助标题,i18n
zh_Hans
(string) [optional] 中文标题en_US
(string) 英文标题url
(object) 帮助链接,i18n
zh_Hans
(string) [optional] 中文链接en_US
(string) 英文链接supported_model_types
(array[ModelType]) 支持的模型类型configurate_methods
(array[ConfigurateMethod]) 配置方式provider_credential_schema
(ProviderCredentialSchema) 供应商凭据规格model_credential_schema
(ModelCredentialSchema) 模型凭据规格