从零开始学 Dify- 模型提供者系统设计实现模型统一调用接口

Dify 中的模型提供者系统(Model Provider System)负责管理与各种

AI 模型提供商的集成、处理凭证并提供统一的模型调用接口。该系统使 Dify 能够通过通用抽象层与多个模型提供商(例如 OpenAI、Azure OpenAI、Anthropic 等)统一调用接口,同时支持系统管理的凭证(通过 Dify Cloud)和用户提供的自定义凭证。

👆👆👆欢迎关注👆👆👆

接下来将分别介绍各个子系统:

模型提供者系统(Model Provider System) ✅

RAG 知识系统(RAG Knowledge System)

对话系统(Conversation System)

**工作流系统(

Workflow System)**

系统架构

模型提供者系统是 Dify AI 功能的核心,它将应用程序与各种 AI 模型提供程序连接起来。它管理大模型及模型提供商的配置、凭证和模型调用,同时提供抽象层,以隐藏不同提供程序 API 的复杂性。

系统概览图

picture.image

核心组件

模型提供者系统围绕几个核心组件构建:

  1. ProviderManager :管理提供商配置和凭证的中央组件
  2. ModelManager :处理模型实例的创建和默认模型的选择
  3. ModelInstance :表示具有其配置的特定模型,并提供调用它的方法
  4. ProviderConfiguration :封装提供程序的所有配置数据
  5. LBModelManager :管理同一模型的多个凭证配置之间的负载平衡

提供商配置管理

ProviderManager 负责管理租户工作区中所有模型提供商的配置。它处理系统提供的凭据和自定义凭据。

配置类型

Dify 支持两种主要类型的提供商配置:

  1. 系统配置(System Configuration) :由 Dify 管理,通常提供具有配额限制的云版本
  2. 自定义配置(Custom Configuration) :用户提供的凭证,用于直接访问模型提供者

picture.image

获取模型实例流程

picture.image

凭证管理

该系统安全地管理不同类型的凭证,对敏感信息使用加密,并使用缓存来提高性能。

凭证流程

  1. 凭证以加密形式存储在数据库中
  2. 需要时,它们会被解密并缓存在 Redis 中
  3. 对于自定义配置,用户可以在提供商级别或模型级别提供凭据
  4. 系统配置使用由 Dify 管理的凭据

picture.image

模型调用

通过 ModelInstance 类提供了调用不同类型模型的统一接口。

支持的模型类型

  • 大型语言模型(LLM) :用于文本生成
  • 文本嵌入模型(Text Embedding Models) :用于嵌入生成
  • 重新排序模型(Reranking Models) :用于重新排序搜索结果
  • **审核模型(

Moderation Models)** :用于内容审核

  • 语音转文本模型(Speech-to-Text Models) :用于音频转录
  • 文本转语音模型(Text-to-Speech Models) :用于语音合成

大模型调用流程

picture.image

大模型调用负载均衡

对于自定义提供程序配置,Dify 支持在同一模型的多个凭证配置之间进行负载平衡。这允许分配请求并处理速率限制或身份验证失败。

负载均衡流程

picture.image

负载均衡配置

系统允许管理员为同一模型配置多个凭证集,具有以下功能:

  1. 循环选择凭证(Round-robin)
  2. 速率受限或失败凭证的自动冷却
  3. 从提供商级别凭证继承
  4. 每个租户配置存储

与应用程序集成

Dify 中的应用程序通过 ModelManagerModelInstance 接口与模型提供系统集成。

picture.image

API 和服务层

模型提供程序系统通过处理 API 请求的服务类公开功能。

服务组件

  • ModelProviderService :提供管理提供者和模型的方法
  • ModelLoadBalancingService :处理负载平衡配置
  • BuiltinToolManageService :管理使用模型的工具提供者

错误处理及回调流程

该系统包括一个强大的错误处理机制和回调系统,用于跟踪模型调用、处理故障并提供日志记录。

错误处理

错误处理机制主要包括以下几个方面:

  1. 错误映射(

Error

Mapping) 2. 错误转换(Error Transformation)

  1. 回调处理(Callback Processing)
  2. 异常捕获与处理(Exception Catching and Handling)

模型提供者系统定义了一套统一的错误类型,将各种模型提供商的特定错误映射到这些统一类型上。

主要的错误类型包括:

  • InvokeConnectionError
  • 调用连接错误
  • `InvokeServerUn

available

Error`

  • 调用服务方不可用
  • `Invoke

RateLimit

Error`

  • 调用达到限额
  • InvokeAuthorizationError
  • 调用鉴权失败
  • InvokeBadRequestError
  • 调用传参有误

回调类型

picture.image

总结

模型提供者系统是 Dify 的核心组件,可与各种 AI 模型提供程序无缝集成。它负责处理凭证管理、模型调用、负载平衡和错误处理,为构建 AI 应用程序提供坚实的基础。

参考资料

https://github.com/langgenius/dify

推荐阅读

接下来将分别介绍各个子系统:

模型提供者系统(Model Provider System) ✅

RAG 知识系统(RAG Knowledge System)

对话系统(Conversation System)

工作流系统(Workflow System)

👆👆👆欢迎关注👆👆👆

欢迎留言讨论哈

🧐点赞、分享、推荐 ,恭喜发财👇

0
0
0
0
评论
未登录
暂无评论