Jelajahi Sumber

fix: api tool provider not found (#2782)

Yeuoly 1 tahun lalu
induk
melakukan
f8951d7f57
2 mengubah file dengan 44 tambahan dan 35 penghapusan
  1. 22 19
      api/controllers/console/app/app.py
  2. 22 16
      api/controllers/console/app/model_config.py

+ 22 - 19
api/controllers/console/app/app.py

@@ -247,27 +247,30 @@ class AppApi(Resource):
         for tool in agent_mode.get('tools') or []:
             agent_tool_entity = AgentToolEntity(**tool)
             # get tool
-            tool_runtime = ToolManager.get_agent_tool_runtime(
-                tenant_id=current_user.current_tenant_id,
-                agent_tool=agent_tool_entity,
-                agent_callback=None
-            )
-            manager = ToolParameterConfigurationManager(
-                tenant_id=current_user.current_tenant_id,
-                tool_runtime=tool_runtime,
-                provider_name=agent_tool_entity.provider_id,
-                provider_type=agent_tool_entity.provider_type,
-            )
+            try:
+                tool_runtime = ToolManager.get_agent_tool_runtime(
+                    tenant_id=current_user.current_tenant_id,
+                    agent_tool=agent_tool_entity,
+                    agent_callback=None
+                )
+                manager = ToolParameterConfigurationManager(
+                    tenant_id=current_user.current_tenant_id,
+                    tool_runtime=tool_runtime,
+                    provider_name=agent_tool_entity.provider_id,
+                    provider_type=agent_tool_entity.provider_type,
+                )
 
-            # get decrypted parameters
-            if agent_tool_entity.tool_parameters:
-                parameters = manager.decrypt_tool_parameters(agent_tool_entity.tool_parameters or {})
-                masked_parameter = manager.mask_tool_parameters(parameters or {})
-            else:
-                masked_parameter = {}
+                # get decrypted parameters
+                if agent_tool_entity.tool_parameters:
+                    parameters = manager.decrypt_tool_parameters(agent_tool_entity.tool_parameters or {})
+                    masked_parameter = manager.mask_tool_parameters(parameters or {})
+                else:
+                    masked_parameter = {}
 
-            # override tool parameters
-            tool['tool_parameters'] = masked_parameter
+                # override tool parameters
+                tool['tool_parameters'] = masked_parameter
+            except Exception as e:
+                pass
 
         # override agent mode
         model_config.agent_mode = json.dumps(agent_mode)

+ 22 - 16
api/controllers/console/app/model_config.py

@@ -54,17 +54,20 @@ class ModelConfigResource(Resource):
         for tool in agent_mode.get('tools') or []:
             agent_tool_entity = AgentToolEntity(**tool)
             # get tool
-            tool_runtime = ToolManager.get_agent_tool_runtime(
-                tenant_id=current_user.current_tenant_id,
-                agent_tool=agent_tool_entity,
-                agent_callback=None
-            )
-            manager = ToolParameterConfigurationManager(
-                tenant_id=current_user.current_tenant_id,
-                tool_runtime=tool_runtime,
-                provider_name=agent_tool_entity.provider_id,
-                provider_type=agent_tool_entity.provider_type,
-            )
+            try:
+                tool_runtime = ToolManager.get_agent_tool_runtime(
+                    tenant_id=current_user.current_tenant_id,
+                    agent_tool=agent_tool_entity,
+                    agent_callback=None
+                )
+                manager = ToolParameterConfigurationManager(
+                    tenant_id=current_user.current_tenant_id,
+                    tool_runtime=tool_runtime,
+                    provider_name=agent_tool_entity.provider_id,
+                    provider_type=agent_tool_entity.provider_type,
+                )
+            except Exception as e:
+                continue
 
             # get decrypted parameters
             if agent_tool_entity.tool_parameters:
@@ -89,11 +92,14 @@ class ModelConfigResource(Resource):
             if key in tool_map:
                 tool_runtime = tool_map[key]
             else:
-                tool_runtime = ToolManager.get_agent_tool_runtime(
-                    tenant_id=current_user.current_tenant_id,
-                    agent_tool=agent_tool_entity,
-                    agent_callback=None
-                )
+                try:
+                    tool_runtime = ToolManager.get_agent_tool_runtime(
+                        tenant_id=current_user.current_tenant_id,
+                        agent_tool=agent_tool_entity,
+                        agent_callback=None
+                    )
+                except Exception as e:
+                    continue
             
             manager = ToolParameterConfigurationManager(
                 tenant_id=current_user.current_tenant_id,