Browse Source

fix: transform None into correct dest type (#4077)

Yeuoly 11 months ago
parent
commit
b5f101bdac
1 changed files with 8 additions and 1 deletions
  1. 8 1
      api/core/tools/tool/tool.py

+ 8 - 1
api/core/tools/tool/tool.py

@@ -233,7 +233,10 @@ class Tool(BaseModel, ABC):
                     ToolParameter.ToolParameterType.STRING, 
                     ToolParameter.ToolParameterType.SELECT,
                 ] and not isinstance(tool_parameters[parameter.name], str):
-                    tool_parameters[parameter.name] = str(tool_parameters[parameter.name])
+                    if tool_parameters[parameter.name] is None:
+                        tool_parameters[parameter.name] = ''
+                    else:
+                        tool_parameters[parameter.name] = str(tool_parameters[parameter.name])
                 elif parameter.type == ToolParameter.ToolParameterType.NUMBER \
                     and not isinstance(tool_parameters[parameter.name], int | float):
                     if isinstance(tool_parameters[parameter.name], str):
@@ -241,6 +244,10 @@ class Tool(BaseModel, ABC):
                             tool_parameters[parameter.name] = int(tool_parameters[parameter.name])
                         except ValueError:
                             tool_parameters[parameter.name] = float(tool_parameters[parameter.name])
+                    elif isinstance(tool_parameters[parameter.name], bool):
+                        tool_parameters[parameter.name] = int(tool_parameters[parameter.name])
+                    elif tool_parameters[parameter.name] is None:
+                        tool_parameters[parameter.name] = 0
                 elif parameter.type == ToolParameter.ToolParameterType.BOOLEAN:
                     if not isinstance(tool_parameters[parameter.name], bool):
                         # check if it is a string