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

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

应用编排与外部知识接入 · 本章是 Dify DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目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
模块标签
  • 系统架构
  • 测试、发布与运维
  • 界面与交互
  • 模型调用与提供方适配
  • 配置治理

中文译文

配额管理与额度池(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/langgenius/dify/6.3-quota-management-and-credit-pools
翻译时间:2026-05-27T08:44:24.760Z
翻译模型:deepseek-chat
原文字符数:12202
项目:Dify (dify)

---

配额管理与信用池

相关源文件

以下文件用于生成此维基页面:

  • 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 填充。

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

classDiagram
    class FeatureModel {
        +BillingModel billing
        +LimitationModel members
        +LimitationModel apps
        +LimitationModel vector_space
        +Quota trigger_event
        +Quota api_rate_limit
        +int next_credit_reset_date
    }
    class LimitationModel {
        +int size
        +int limit
        +is_available(required) bool
    }
    class Quota {
        +int usage
        +int limit
        +int reset_date
    }
    class HostingProvider {
        +bool enabled
        +dict credentials
        +QuotaUnit quota_unit
        +list quotas
    }
    FeatureModel *-- LimitationModel
    FeatureModel *-- Quota
    HostingProvider *-- HostingQuota

资源限制:

  • 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 使用预留模式管理分布式配额系统,以防止并发请求期间的超额使用。

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

sequenceDiagram
    participant App as "工作流/聊天引擎"
    participant BS as "services.billing_service.BillingService"
    participant API as "外部计费 API"

    Note over App, API: 执行前(预留)
    App->>BS: quota_reserve(tenant_id, feature, request_id)
    BS->>API: POST /quota/reserve
    API-->>BS: QuotaReserveResult {reservation_id, available}
    BS-->>App: reservation_id

    Note over App, API: 任务执行(例如大语言模型调用)

    Note over App, API: 执行后(提交)
    App->>BS: quota_commit(tenant_id, feature, reservation_id, actual_amount)
    BS->>API: POST /quota/commit
    API-->>BS: QuotaCommitResult {available, refunded}

关键函数:

  • 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 密钥不同。

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

graph TD
    subgraph "core.provider_manager.ProviderManager"
        GetConfig["get_configurations(tenant_id)"]
        InitTrial["_init_trial_provider_records"]
    end

    subgraph "core.hosting_configuration.HostingConfiguration"
        AzureOpenAI["init_azure_openai()"]
        OpenAI["init_openai()"]
    end

    GetConfig --> InitTrial
    InitTrial --> AzureOpenAI
    InitTrial --> OpenAI

    subgraph "配额实体"
        TrialQ["TrialHostingQuota"]
        PaidQ["PaidHostingQuota"]
        Restrict["RestrictModel"]
    end

    AzureOpenAI --> TrialQ
    TrialQ --> Restrict

配额类型:

  • 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