From 52ec152dd344389821a8bb7bf7096c61ce11a344 Mon Sep 17 00:00:00 2001 From: Yeuoly <45712896+Yeuoly@users.noreply.github.com> Date: Wed, 5 Jun 2024 00:01:30 +0800 Subject: [PATCH] fix: incorrect parameters transforming while validating (#4928) --- api/core/tools/tool/tool.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/api/core/tools/tool/tool.py b/api/core/tools/tool/tool.py index 290d80c7d..c6164454e 100644 --- a/api/core/tools/tool/tool.py +++ b/api/core/tools/tool/tool.py @@ -1,4 +1,5 @@ from abc import ABC, abstractmethod +from copy import deepcopy from enum import Enum from typing import Any, Optional, Union @@ -229,8 +230,13 @@ class Tool(BaseModel, ABC): """ Transform tool parameters type """ - return {p.name: ToolParameterConverter.cast_parameter_by_type(tool_parameters[p.name], p.type) - for p in self.parameters if p.name in tool_parameters} + # Temp fix for the issue that the tool parameters will be converted to empty while validating the credentials + result = deepcopy(tool_parameters) + for parameter in self.parameters: + if parameter.name in tool_parameters: + result[parameter.name] = ToolParameterConverter.cast_parameter_by_type(tool_parameters[parameter.name], parameter.type) + + return result @abstractmethod def _invoke(self, user_id: str, tool_parameters: dict[str, Any]) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]: