Parcourir la source

fix: agent error handling

Yeuoly il y a 6 mois
Parent
commit
598d208e54
2 fichiers modifiés avec 11 ajouts et 4 suppressions
  1. 6 3
      api/core/plugin/manager/base.py
  2. 5 1
      api/services/agent_service.py

+ 6 - 3
api/core/plugin/manager/base.py

@@ -24,6 +24,7 @@ from core.plugin.manager.exc import (
     PluginDaemonNotFoundError,
     PluginDaemonUnauthorizedError,
     PluginInvokeError,
+    PluginNotFoundError,
     PluginPermissionDeniedError,
     PluginUniqueIdentifierError,
 )
@@ -143,7 +144,7 @@ class BasePluginManager:
         if rep.code != 0:
             try:
                 error = PluginDaemonError(**json.loads(rep.message))
-            except Exception as e:
+            except Exception:
                 raise ValueError(f"{rep.message}, code: {rep.code}")
 
             self._handle_plugin_daemon_error(error.error_type, error.message)
@@ -171,7 +172,7 @@ class BasePluginManager:
             try:
                 line_data = json.loads(line)
                 rep = PluginDaemonBasicResponse[type](**line_data)
-            except Exception as e:
+            except Exception:
                 # TODO modify this when line_data has code and message
                 if line_data and "error" in line_data:
                     raise ValueError(line_data["error"])
@@ -182,7 +183,7 @@ class BasePluginManager:
                 if rep.code == -500:
                     try:
                         error = PluginDaemonError(**json.loads(rep.message))
-                    except Exception as e:
+                    except Exception:
                         raise PluginDaemonInnerError(code=rep.code, message=rep.message)
 
                     self._handle_plugin_daemon_error(error.error_type, error.message)
@@ -226,6 +227,8 @@ class BasePluginManager:
                 raise PluginDaemonNotFoundError(description=message)
             case PluginUniqueIdentifierError.__name__:
                 raise PluginUniqueIdentifierError(description=message)
+            case PluginNotFoundError.__name__:
+                raise PluginNotFoundError(description=message)
             case PluginDaemonUnauthorizedError.__name__:
                 raise PluginDaemonUnauthorizedError(description=message)
             case PluginPermissionDeniedError.__name__:

+ 5 - 1
api/services/agent_service.py

@@ -7,6 +7,7 @@ from flask_login import current_user  # type: ignore
 import contexts
 from core.app.app_config.easy_ui_based_app.agent.manager import AgentConfigManager
 from core.plugin.manager.agent import PluginAgentManager
+from core.plugin.manager.exc import PluginDaemonClientSideError
 from core.tools.tool_manager import ToolManager
 from extensions.ext_database import db
 from models.account import Account
@@ -169,4 +170,7 @@ class AgentService:
         Get agent provider
         """
         manager = PluginAgentManager()
-        return manager.fetch_agent_strategy_provider(tenant_id, provider_name)
+        try:
+            return manager.fetch_agent_strategy_provider(tenant_id, provider_name)
+        except PluginDaemonClientSideError as e:
+            raise ValueError(str(e)) from e