agentic_huge_data_base / wiki
页面 Dify · 6 LLM 集成与模型管理·DeepWiki 中文全文译文

6 · LLM 集成与模型管理(LLM Integration and Model Management)

应用编排与外部知识接入 · 聚焦本章的模块关系、源码依据与实现要点。

项目Dify 章节6 状态全文译文 模块模型调用与提供方适配、配置治理、入库与解析、测试、发布与运维
源码线索
  • api/controllers/console/app/generator.py
  • api/core/agent/output_parser/cot_output_parser.py
  • api/core/app/app_config/easy_ui_based_app/model_config/converter.py
  • api/core/app/llm/model_access.py
  • api/core/datasource/datasource_manager.py
  • api/core/entities/model_entities.py
  • api/core/entities/provider_configuration.py
  • api/core/hosting_configuration.py
  • api/core/llm_generator/llm_generator.py
  • api/core/llm_generator/output_parser/suggested_questions_after_answer.py
模块标签
  • 模型调用与提供方适配
  • 配置治理
  • 入库与解析
  • 测试、发布与运维
  • 工作流与编排

章节正文

LLM 集成与模型管理

大语言模型(LLM)集成与模型管理

相关源文件

本 Wiki 页面的生成参考了以下源文件:

  • api/controllers/console/app/generator.py
  • api/core/agent/output_parser/cot_output_parser.py
  • api/core/app/app_config/easy_ui_based_app/model_config/converter.py
  • api/core/app/llm/model_access.py
  • api/core/datasource/datasource_manager.py
  • api/core/entities/model_entities.py
  • api/core/entities/provider_configuration.py
  • api/core/hosting_configuration.py
  • api/core/llm_generator/llm_generator.py
  • api/core/llm_generator/output_parser/suggested_questions_after_answer.py
  • api/core/llm_generator/prompts.py
  • api/core/model_manager.py
  • api/core/ops/base_trace_instance.py
  • api/core/provider_manager.py
  • api/core/schemas/resolver.py
  • api/services/enterprise/enterprise_service.py
  • api/services/entities/model_provider_entities.py
  • api/services/model_load_balancing_service.py
  • api/services/model_provider_service.py
  • api/tests/integration_tests/model_runtime/__mock/plugin_model.py
  • api/tests/test_containers_integration_tests/services/test_api_based_extension_service.py
  • api/tests/test_containers_integration_tests/services/test_model_load_balancing_service.py
  • api/tests/test_containers_integration_tests/services/test_model_provider_service.py
  • api/tests/unit_tests/core/app/task_pipeline/test_easy_ui_based_generate_task_pipeline_core.py
  • api/tests/unit_tests/core/datasource/test_datasource_manager.py
  • api/tests/unit_tests/core/entities/test_entities_provider_configuration.py
  • api/tests/unit_tests/core/helper/test_encrypter.py
  • api/tests/unit_tests/core/llm_generator/test_llm_generator.py
  • api/tests/unit_tests/core/ops/test_base_trace_instance.py
  • api/tests/unit_tests/core/test_model_manager.py
  • api/tests/unit_tests/core/test_provider_configuration.py
  • api/tests/unit_tests/core/test_provider_manager.py
  • api/tests/unit_tests/models/test_provider_models.py
  • api/tests/unit_tests/services/test_model_load_balancing_service.py

目的与范围

本文档描述了 Dify 的大语言模型(LLM)集成系统。该系统通过统一的接口,抽象了来自不同提供商(如 OpenAI、Anthropic 等)的语言模型。内容涵盖了提供商/模型架构、凭证管理、模型调用管线以及多租户配置。

如需深入的技术细节,请参考以下子页面:

  • 提供商与模型架构:详细说明 ModelManagerProviderManager、提供商配置和凭证存储。
  • 模型调用管线:详细说明 CredentialsProviderModelFactoryModelInstance 的创建过程以及执行流程。
  • 配额管理与积分池:详细说明 LLMQuotaLayer、用量追踪以及试用版和付费版的积分池管理。

提供商与模型架构

该系统采用多层架构来表示大语言模型(LLM)提供商及其模型,主要由 ProviderManager api/core/provider_manager.py:64-89 进行管理。

核心实体与关系

租户、提供商和凭证之间的关系由几个关键的 SQLAlchemy 模型和领域实体定义。ProviderManager 负责将这些实体组装成运行时所需的连贯配置 api/core/provider_manager.py:100-136

Dify · 核心实体与关系 · 图 1
Dify · 核心实体与关系 · 图 1

来源: api/models/provider.py:44-54api/core/provider_manager.py:141-166

配置组装

ProviderManager 为特定租户组装 ProviderConfigurations api/core/provider_manager.py:100-139。该对象封装了以下内容:

  1. 系统配置:由 Dify 托管的试用或付费配额,在 Cloud 版本中通过 HostingConfiguration 管理 api/core/hosting_configuration.py:43-50
  2. 自定义配置:用户为特定提供商或单个模型提供的 API 密钥 api/core/entities/provider_configuration.py:75-81
  3. 模型设置:每个模型的启用状态和负载均衡状态 api/core/entities/provider_configuration.py:123-129

更多详情,请参阅 提供商与模型架构

模型调用管线

该调用管线使用 ModelInstance 抽象,将高级应用请求转换为特定于提供商的 API 调用。

模型实例获取

ModelInstance 是用于调用的运行时对象。它根据 using_provider_type(系统 vs. 自定义)解析正确的凭证 api/core/model_manager.py:137-158,并在启用负载均衡时初始化 LBModelManager api/core/model_manager.py:83-116

调用流程

该管线确保凭证在传递给底层 ModelRuntime 之前已被解密且有效。

Dify · 调用流程 · 图 2
Dify · 调用流程 · 图 2

来源: api/core/model_manager.py:151-163api/core/entities/provider_configuration.py:115-150api/core/provider_manager.py:100-136

关于提示词构建和流式传输的详细信息,请参阅 模型调用管线

配额与积分管理

Dify 通过分层配额系统管理用量,特别是在 Cloud 版本中,该系统与 HostingConfigurationProviderQuotaType 集成 api/core/hosting_configuration.py:12-35

配额追踪与计费

系统使用 HostingProvider 实体来追踪 TrialHostingQuota(试用托管配额)、PaidHostingQuota(付费托管配额)和 FreeHostingQuota(免费托管配额)api/core/hosting_configuration.py:17-35。配额使用不同的单位进行追踪,例如 TIMES(次数)或 CREDITS(积分)api/core/hosting_configuration.py:70, 133

负载均衡与冷却

LBModelManager 负责处理凭证轮换,以防止触及提供商的速率限制,并管理特定凭证的冷却状态 api/services/model_load_balancing_service.py:35-43

组件职责
ModelLoadBalancingService管理负载均衡配置的生命周期和状态 api/services/model_load_balancing_service.py:45
ProviderCredentialsCache基于 Redis 的已解密凭证缓存,用于减少数据库/KMS 的负载 api/core/helper/model_provider_cache.py:31
HostingConfiguration定义 Cloud 版本的默认试用模型和配额 api/core/hosting_configuration.py:43-66
LLMGenerator用于系统级模型调用的工具(例如,生成对话标题)api/core/llm_generator/llm_generator.py:91

关于积分如何扣除和共享的详细信息,请参阅 配额管理与积分池

模型设置与默认值

租户可以通过 ModelProviderService api/services/model_provider_service.py:24 控制哪些模型可用以及默认使用哪些模型。

  • ModelSettings(模型设置):可以为每个租户启用或禁用单个模型 api/core/entities/provider_configuration.py:81
  • TenantDefaultModel(租户默认模型):存储每种 ModelType(大语言模型、文本嵌入、重排序等)的首选模型 api/models/provider.py:52
  • Load Balancing(负载均衡):用于在多个自定义凭证之间分配负载的配置 api/models/provider.py:45

来源: api/core/provider_manager.py:100-136api/core/entities/provider_configuration.py:115-150api/services/model_provider_service.py:56-130