improve: generalize tool parameter converter (#4786)

This commit is contained in:
Bowen Liang
2024-06-03 21:26:58 +08:00
committed by GitHub
parent 3c8a120e51
commit 3542d55e67
10 changed files with 143 additions and 114 deletions

View File

@@ -12,6 +12,7 @@ from core.tools.errors import (
from core.tools.provider.tool_provider import ToolProviderController
from core.tools.tool.builtin_tool import BuiltinTool
from core.tools.tool.tool import Tool
from core.tools.utils.tool_parameter_converter import ToolParameterConverter
from core.tools.utils.yaml_utils import load_yaml_file
from core.utils.module_import_helper import load_single_subclass_from_source
@@ -200,16 +201,8 @@ class BuiltinToolProviderController(ToolProviderController):
# the parameter is not set currently, set the default value if needed
if parameter_schema.default is not None:
default_value = parameter_schema.default
# parse default value into the correct type
if parameter_schema.type == ToolParameter.ToolParameterType.STRING or \
parameter_schema.type == ToolParameter.ToolParameterType.SELECT:
default_value = str(default_value)
elif parameter_schema.type == ToolParameter.ToolParameterType.NUMBER:
default_value = float(default_value)
elif parameter_schema.type == ToolParameter.ToolParameterType.BOOLEAN:
default_value = bool(default_value)
default_value = ToolParameterConverter.cast_parameter_by_type(parameter_schema.default,
parameter_schema.type)
tool_parameters[parameter] = default_value
def validate_credentials(self, credentials: dict[str, Any]) -> None:

View File

@@ -11,6 +11,7 @@ from core.tools.entities.tool_entities import (
)
from core.tools.errors import ToolNotFoundError, ToolParameterValidationError, ToolProviderCredentialValidationError
from core.tools.tool.tool import Tool
from core.tools.utils.tool_parameter_converter import ToolParameterConverter
class ToolProviderController(BaseModel, ABC):
@@ -122,17 +123,8 @@ class ToolProviderController(BaseModel, ABC):
# the parameter is not set currently, set the default value if needed
if parameter_schema.default is not None:
default_value = parameter_schema.default
# parse default value into the correct type
if parameter_schema.type == ToolParameter.ToolParameterType.STRING or \
parameter_schema.type == ToolParameter.ToolParameterType.SELECT:
default_value = str(default_value)
elif parameter_schema.type == ToolParameter.ToolParameterType.NUMBER:
default_value = float(default_value)
elif parameter_schema.type == ToolParameter.ToolParameterType.BOOLEAN:
default_value = bool(default_value)
tool_parameters[parameter] = default_value
tool_parameters[parameter] = ToolParameterConverter.cast_parameter_by_type(parameter_schema.default,
parameter_schema.type)
def validate_credentials_format(self, credentials: dict[str, Any]) -> None:
"""