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

This commit is contained in:
Yeuoly 2024-05-04 16:34:42 +08:00 committed by GitHub
parent 5940564d84
commit b5f101bdac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

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