预定义模型接入
供应商集成完成后,接下来为供应商下模型的接入。
我们首先需要确定接入模型的类型,并在对应供应商的目录下创建对应模型类型的 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
。
准备模型 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。
Footnotes
-
Provider
provider
(string) 供应商标识,如:openai
label
(object) 供应商展示名称,i18n,可设置en_US
英文、zh_Hans
中文两种语言zh_Hans
(string) [optional] 中文标签名,zh_Hans
不设置将默认使用en_US
。en_US
(string) 英文标签名
description
(object) [optional] 供应商描述,i18nzh_Hans
(string) [optional] 中文描述en_US
(string) 英文描述
icon_small
(string) [optional] 供应商小 ICON,存储在对应供应商实现目录下的_assets
目录,中英文策略同label
zh_Hans
(string) [optional] 中文 ICONen_US
(string) 英文 ICON
icon_large
(string) [optional] 供应商大 ICON,存储在对应供应商实现目录下的 _assets 目录,中英文策略同 labelzh_Hans
(string) [optional] 中文 ICONen_US
(string) 英文 ICON
background
(string) [optional] 背景颜色色值,例:#FFFFFF,为空则展示前端默认色值。help
(object) [optional] 帮助信息title
(object) 帮助标题,i18nzh_Hans
(string) [optional] 中文标题en_US
(string) 英文标题
url
(object) 帮助链接,i18nzh_Hans
(string) [optional] 中文链接en_US
(string) 英文链接
supported_model_types
(array[ModelType]) 支持的模型类型configurate_methods
(array[ConfigurateMethod]) 配置方式provider_credential_schema
(ProviderCredentialSchema) 供应商凭据规格model_credential_schema
(ModelCredentialSchema) 模型凭据规格