From b5f101bdacb711f7b92c3ebf9feaef297c60e08c Mon Sep 17 00:00:00 2001 From: Yeuoly <45712896+Yeuoly@users.noreply.github.com> Date: Sat, 4 May 2024 16:34:42 +0800 Subject: [PATCH] fix: transform None into correct dest type (#4077) --- api/core/tools/tool/tool.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/api/core/tools/tool/tool.py b/api/core/tools/tool/tool.py index 4203180992..03aa0623fe 100644 --- a/api/core/tools/tool/tool.py +++ b/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