预定义模型接入
供应商集成完成后,接下来为供应商下模型的接入。
我们首先需要确定接入模型的类型,并在对应供应商的目录下创建对应模型类型的 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 规则见:。
实现模型调用代码
接下来需要在 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
调用传参有误
Last updated