agentic_huge_data_base / wiki
页面 Dify · 6.3 配额管理与额度池·DeepWiki 中文全文译文

6.3 · 配额管理与额度池(Quota Management and Credit Pools)

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

项目Dify 章节6.3 状态全文译文 模块系统架构、测试、发布与运维、界面与交互、模型调用与提供方适配
源码线索
  • api/controllers/console/__init__.py
  • api/controllers/console/admin.py
  • api/controllers/console/billing/billing.py
  • api/controllers/console/billing/compliance.py
  • api/controllers/console/error.py
  • api/controllers/console/wraps.py
  • api/controllers/service_api/wraps.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/controllers/console/__init__.py
  • api/controllers/console/admin.py
  • api/controllers/console/billing/billing.py
  • api/controllers/console/billing/compliance.py
  • api/controllers/console/error.py
  • api/controllers/console/wraps.py
  • api/controllers/service_api/wraps.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/entities/model_entities.py
  • api/core/entities/provider_configuration.py
  • api/core/hosting_configuration.py
  • api/core/model_manager.py
  • api/core/provider_manager.py
  • api/core/schemas/resolver.py
  • api/services/billing_service.py
  • api/services/enterprise/enterprise_service.py
  • api/services/entities/model_provider_entities.py
  • api/services/feature_service.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_billing_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/controllers/console/workspace/test_workspace.py
  • api/tests/unit_tests/core/entities/test_entities_provider_configuration.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_billing_service.py
  • api/tests/unit_tests/services/test_model_load_balancing_service.py

目的与范围

本文档描述了 Dify 中的配额管理系统和信用池架构。它涵盖了平台如何跟踪和执行大语言模型(LLM)API 调用、功能使用以及不同部署层级(云端版 vs. 自托管版)之间的资源分配限制。本文档详细介绍了 LLMQuotaLayer、用于云端集成的 BillingService 以及用于管理试用版和付费版的 FeatureService

有关模型提供者配置和凭证的信息,请参阅提供者与模型架构(6.1)。有关工作流执行和节点生命周期的信息,请参阅工作流定义与执行模型(5.1)

系统概述

配额管理系统提供对大语言模型(LLM)调用和平台资源的使用跟踪与执行控制。它通过三种主要机制运行:

机制目的范围
大语言模型(LLM)配额配置定义配额类型(试用版、免费版、付费版)和模型限制按提供者、按租户
功能服务检查基于计划的限制(应用数、成员数、向量空间)按租户
计费服务管理托管试用版/付费版信用余额和预留仅限云端版,按租户

关键特性:

  • 执行前校验:通过装饰器和服务层检查,在任务或大语言模型(LLM)调用开始前验证配额可用性。api/controllers/console/wraps.py:94-133
  • 预留/提交模式:云端计费使用 reservecommit 流程,确保流式或长时间运行任务期间的准确性。api/services/billing_service.py:209-237
  • 租户隔离:所有配额和信用池严格按 tenant_id 隔离。api/services/billing_service.py:188-192
  • 多层支持:云端版计划范围从 SANDBOXTEAM,企业特定功能通过许可证启用。api/services/feature_service.py:128-150

核心组件与数据模型

功能与计费模型

系统使用 Pydantic 模型来定义各种平台资源的限制。这些模型由 FeatureService 填充。

标题:配额与功能数据结构

Dify · 功能与计费模型 · 图 1
Dify · 功能与计费模型 · 图 1

资源限制:

  • members:工作空间成员的最大数量。api/services/feature_service.py:131
  • apps:允许的最大应用程序数量。api/services/feature_service.py:132
  • vector_space:知识存储的容量。api/services/feature_service.py:133
  • trigger_event:工作流/自动化的执行配额。api/services/feature_service.py:144

来源:api/services/feature_service.py:128-151api/core/hosting_configuration.py:31-36

配额检查与扣除流程

云端版配额生命周期

在 Dify 云端版中,BillingService 使用预留模式管理分布式配额系统,以防止并发请求期间的超额使用。

标题:计费预留与提交序列

Dify · 云端版配额生命周期 · 图 2
Dify · 云端版配额生命周期 · 图 2

关键函数:

  • quota_reserve:如果租户对请求的功能信用不足,则阻止执行。api/services/billing_service.py:209-221
  • quota_commit:根据实际使用量(例如实际使用的 Token 与预留的 Token)最终确定扣除。api/services/billing_service.py:224-236
  • quota_release:如果任务失败或中止,则取消预留。api/services/billing_service.py:239-251

来源:api/services/billing_service.py:209-251

托管配置与模型限制

Dify 对"托管"提供者(例如 Dify 云端版提供的 OpenAI 或 Anthropic)的管理方式与自定义 API 密钥不同。

标题:提供者配置与配额映射

Dify · 托管配置与模型限制 · 图 3
Dify · 托管配置与模型限制 · 图 3

配额类型:

  • ProviderQuotaType.TRIAL:Dify 提供的有限免费使用。api/core/hosting_configuration.py:17-21
  • ProviderQuotaType.PAID:基于 Dify 付费订阅的使用。api/core/hosting_configuration.py:23-25
  • ProviderQuotaType.FREE:无限制或高限制的免费层模型。api/core/hosting_configuration.py:27-29

来源:api/core/hosting_configuration.py:12-36api/core/provider_manager.py:100-136

速率限制与合规性

除了大语言模型(LLM)Token 之外,系统还使用装饰器对特定平台操作执行速率限制。

知识与 API 速率限制
  • 知识速率限制:在 cloud_edition_billing_rate_limit_check 中使用基于 Redis 的滑动窗口(zadd/zremrangebyscore)强制执行。api/controllers/console/wraps.py:161-180
  • 合规性下载:使用专门的 RateLimiter 限制下载合规性报告的频率。api/services/billing_service.py:180
控制器级别执行

Dify 使用 Flask 装饰器包装敏感端点:

  • cloud_edition_billing_resource_check:通过检查 FeatureService.get_features 拦截创建应用或添加成员的请求。api/controllers/console/wraps.py:94-133
  • cloud_edition_billing_knowledge_limit_check:将高级知识功能(例如添加片段)限制为付费计划。api/controllers/console/wraps.py:136-158
  • validate_app_token:确保应用程序处于活动状态且租户未被归档,然后才允许 API 访问。api/controllers/service_api/wraps.py:55-78

来源:api/controllers/console/wraps.py:94-180api/controllers/service_api/wraps.py:55-133

关键类总结

职责
BillingService处理配额预留、提交和订阅信息的 API 通信。api/services/billing_service.py:176
FeatureService从环境变量、计费 API 和企业许可证聚合计划限制。api/services/feature_service.py:187
ProviderManager管理租户范围的提供者配置,包括托管配额。api/core/provider_manager.py:64
HostingConfiguration定义 Dify 云端版托管的硬编码配额和受限模型。api/core/hosting_configuration.py:43
ModelInstance检查模型是否已启用,并在调用前获取凭证/负载均衡设置。api/core/model_manager.py:35

来源:api/services/billing_service.py:176api/services/feature_service.py:187api/core/provider_manager.py:64api/core/hosting_configuration.py:43api/core/model_manager.py:35