Bläddra i källkod

Fix: only retrieval plugin-compatible providers when provider_name starts with `langgenius` (#15133)

Yeuoly 1 månad sedan
förälder
incheckning
65da9425df
2 ändrade filer med 25 tillägg och 10 borttagningar
  1. 22 10
      api/core/entities/provider_configuration.py
  2. 3 0
      api/core/plugin/entities/plugin.py

+ 22 - 10
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,
+        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(

+ 3 - 0
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}"