From 8a345bd27d71ba9a34fd6548da0c7167b8844732 Mon Sep 17 00:00:00 2001 From: Yansong Zhang <916125788@qq.com> Date: Wed, 21 Jan 2026 10:13:54 +0800 Subject: [PATCH] add trial model list in system features --- api/enums/hosted_provider.py | 15 +++++++++++++++ api/services/feature_service.py | 20 ++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 api/enums/hosted_provider.py diff --git a/api/enums/hosted_provider.py b/api/enums/hosted_provider.py new file mode 100644 index 0000000000..6a562eef42 --- /dev/null +++ b/api/enums/hosted_provider.py @@ -0,0 +1,15 @@ +from enum import StrEnum + + +class HostedTrialProvider(StrEnum): + """ + Enum representing hosted model provider names for trial access. + """ + + OPENAI = "openai" + DEEPSEEK = "deepseek" + ANTHROPIC = "anthropic" + GEMINI = "gemini" + XAI = "xai" + TONGYI = "tongyi" + diff --git a/api/services/feature_service.py b/api/services/feature_service.py index 9b853b8337..c6f9cc7aba 100644 --- a/api/services/feature_service.py +++ b/api/services/feature_service.py @@ -4,6 +4,7 @@ from pydantic import BaseModel, ConfigDict, Field from configs import dify_config from enums.cloud_plan import CloudPlan +from enums.hosted_provider import HostedTrialProvider from services.billing_service import BillingService from services.enterprise.enterprise_service import EnterpriseService @@ -170,6 +171,7 @@ class SystemFeatureModel(BaseModel): plugin_installation_permission: PluginInstallationPermissionModel = PluginInstallationPermissionModel() enable_change_email: bool = True plugin_manager: PluginManagerModel = PluginManagerModel() + trial_models: list[str] = [] class FeatureService: @@ -225,6 +227,24 @@ class FeatureService: system_features.is_allow_register = dify_config.ALLOW_REGISTER system_features.is_allow_create_workspace = dify_config.ALLOW_CREATE_WORKSPACE system_features.is_email_setup = dify_config.MAIL_TYPE is not None and dify_config.MAIL_TYPE != "" + system_features.trial_models = cls._fulfill_trial_models_from_env() + + @classmethod + def _fulfill_trial_models_from_env(cls) -> list[str]: + trial_models: list[str] = [] + if dify_config.HOSTED_OPENAI_PAID_ENABLED and dify_config.HOSTED_OPENAI_TRIAL_ENABLED: + trial_models.append(HostedTrialProvider.OPENAI) + if dify_config.HOSTED_DEEPSEEK_PAID_ENABLED and dify_config.HOSTED_DEEPSEEK_TRIAL_ENABLED: + trial_models.append(HostedTrialProvider.DEEPSEEK) + if dify_config.HOSTED_ANTHROPIC_PAID_ENABLED and dify_config.HOSTED_ANTHROPIC_TRIAL_ENABLED: + trial_models.append(HostedTrialProvider.ANTHROPIC) + if dify_config.HOSTED_GEMINI_PAID_ENABLED and dify_config.HOSTED_GEMINI_TRIAL_ENABLED: + trial_models.append(HostedTrialProvider.GEMINI) + if dify_config.HOSTED_XAI_PAID_ENABLED and dify_config.HOSTED_XAI_TRIAL_ENABLED: + trial_models.append(HostedTrialProvider.XAI) + if dify_config.HOSTED_TONGYI_PAID_ENABLED and dify_config.HOSTED_TONGYI_TRIAL_ENABLED: + trial_models.append(HostedTrialProvider.TONGYI) + return trial_models @classmethod def _fulfill_params_from_env(cls, features: FeatureModel):