From 65da9425dff5b11db28ae18bef1a29143bb4fc05 Mon Sep 17 00:00:00 2001 From: Yeuoly <45712896+Yeuoly@users.noreply.github.com> Date: Fri, 7 Mar 2025 00:41:56 +0800 Subject: [PATCH] Fix: only retrieval plugin-compatible providers when provider_name starts with `langgenius` (#15133) --- api/core/entities/provider_configuration.py | 34 ++++++++++++++------- api/core/plugin/entities/plugin.py | 3 ++ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/api/core/entities/provider_configuration.py b/api/core/entities/provider_configuration.py index b1a155fea8..4b8214019c 100644 --- a/api/core/entities/provider_configuration.py +++ b/api/core/entities/provider_configuration.py @@ -187,18 +187,30 @@ class ProviderConfiguration(BaseModel): :return: """ # get provider - provider_record = ( - db.session.query(Provider) - .filter( - Provider.tenant_id == self.tenant_id, - Provider.provider_type == ProviderType.CUSTOM.value, - or_( - Provider.provider_name == ModelProviderID(self.provider.provider).plugin_name, - Provider.provider_name == self.provider.provider, - ), + model_provider_id = ModelProviderID(self.provider.provider) + if model_provider_id.is_langgenius(): + provider_record = ( + db.session.query(Provider) + .filter( + Provider.tenant_id == self.tenant_id, + Provider.provider_type == ProviderType.CUSTOM.value, + or_( + Provider.provider_name == model_provider_id.provider_name, + Provider.provider_name == self.provider.provider, + ), + ) + .first() + ) + else: + provider_record = ( + db.session.query(Provider) + .filter( + Provider.tenant_id == self.tenant_id, + Provider.provider_type == ProviderType.CUSTOM.value, + Provider.provider_name == self.provider.provider, + ) + .first() ) - .first() - ) # Get provider credential secret variables provider_credential_secret_variables = self.extract_secret_variables( diff --git a/api/core/plugin/entities/plugin.py b/api/core/plugin/entities/plugin.py index c61e848a42..ad39b972bf 100644 --- a/api/core/plugin/entities/plugin.py +++ b/api/core/plugin/entities/plugin.py @@ -164,6 +164,9 @@ class GenericProviderID: self.organization, self.plugin_name, self.provider_name = value.split("/") self.is_hardcoded = is_hardcoded + def is_langgenius(self) -> bool: + return self.organization == "langgenius" + @property def plugin_id(self) -> str: return f"{self.organization}/{self.plugin_name}"