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 的复杂性。
系统概览图
核心组件
模型提供者系统围绕几个核心组件构建:
- ProviderManager :管理提供商配置和凭证的中央组件
- ModelManager :处理模型实例的创建和默认模型的选择
- ModelInstance :表示具有其配置的特定模型,并提供调用它的方法
- ProviderConfiguration :封装提供程序的所有配置数据
- LBModelManager :管理同一模型的多个凭证配置之间的负载平衡
提供商配置管理
ProviderManager 负责管理租户工作区中所有模型提供商的配置。它处理系统提供的凭据和自定义凭据。
配置类型
Dify 支持两种主要类型的提供商配置:
- 系统配置(System Configuration) :由 Dify 管理,通常提供具有配额限制的云版本
- 自定义配置(Custom Configuration) :用户提供的凭证,用于直接访问模型提供者
获取模型实例流程
凭证管理
该系统安全地管理不同类型的凭证,对敏感信息使用加密,并使用缓存来提高性能。
凭证流程
- 凭证以加密形式存储在数据库中
- 需要时,它们会被解密并缓存在 Redis 中
- 对于自定义配置,用户可以在提供商级别或模型级别提供凭据
- 系统配置使用由 Dify 管理的凭据
模型调用
通过 ModelInstance 类提供了调用不同类型模型的统一接口。
支持的模型类型
- 大型语言模型(LLM) :用于文本生成
- 文本嵌入模型(Text Embedding Models) :用于嵌入生成
- 重新排序模型(Reranking Models) :用于重新排序搜索结果
- **审核模型(
Moderation Models)** :用于内容审核
- 语音转文本模型(Speech-to-Text Models) :用于音频转录
- 文本转语音模型(Text-to-Speech Models) :用于语音合成
大模型调用流程
大模型调用负载均衡
对于自定义提供程序配置,Dify 支持在同一模型的多个凭证配置之间进行负载平衡。这允许分配请求并处理速率限制或身份验证失败。
负载均衡流程
负载均衡配置
系统允许管理员为同一模型配置多个凭证集,具有以下功能:
- 循环选择凭证(Round-robin)
- 速率受限或失败凭证的自动冷却
- 从提供商级别凭证继承
- 每个租户配置存储
与应用程序集成
Dify 中的应用程序通过 ModelManager 和 ModelInstance 接口与模型提供系统集成。
API 和服务层
模型提供程序系统通过处理 API 请求的服务类公开功能。
服务组件
- ModelProviderService :提供管理提供者和模型的方法
- ModelLoadBalancingService :处理负载平衡配置
- BuiltinToolManageService :管理使用模型的工具提供者
错误处理及回调流程
该系统包括一个强大的错误处理机制和回调系统,用于跟踪模型调用、处理故障并提供日志记录。
错误处理
错误处理机制主要包括以下几个方面:
- 错误映射(
Error
Mapping) 2. 错误转换(Error Transformation)
- 回调处理(Callback Processing)
- 异常捕获与处理(Exception Catching and Handling)
模型提供者系统定义了一套统一的错误类型,将各种模型提供商的特定错误映射到这些统一类型上。
主要的错误类型包括:
InvokeConnectionError
- 调用连接错误
- `InvokeServerUn
available
Error`
- 调用服务方不可用
- `Invoke
RateLimit
Error`
- 调用达到限额
InvokeAuthorizationError
- 调用鉴权失败
InvokeBadRequestError
- 调用传参有误
回调类型
总结
模型提供者系统是 Dify 的核心组件,可与各种 AI 模型提供程序无缝集成。它负责处理凭证管理、模型调用、负载平衡和错误处理,为构建 AI 应用程序提供坚实的基础。
参考资料
https://github.com/langgenius/dify
推荐阅读
- 从零开始学 Dify- 帐户与租户管理系统设计揭秘
- 从零开始学 Dify- API 后端架构原来是这样设计的
- Agent 架构:解锁高效AI应用的关键技术
- 全面剖析 MCP、A2A 与 Function Calling 的架构关系
接下来将分别介绍各个子系统:
模型提供者系统(Model Provider System) ✅
RAG 知识系统(RAG Knowledge System)
对话系统(Conversation System)
工作流系统(Workflow System)
👆👆👆欢迎关注👆👆👆
欢迎留言讨论哈
🧐点赞、分享、推荐 ,恭喜发财👇
