From e9d69f020a97de5b94f1b401df8f266e7bbacec9 Mon Sep 17 00:00:00 2001 From: Yeuoly Date: Tue, 5 Nov 2024 20:26:55 +0800 Subject: [PATCH] feat: cast files into correct type while invoking --- api/core/tools/entities/tool_entities.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/api/core/tools/entities/tool_entities.py b/api/core/tools/entities/tool_entities.py index 94a0c783e1..8b86ba7473 100644 --- a/api/core/tools/entities/tool_entities.py +++ b/api/core/tools/entities/tool_entities.py @@ -258,11 +258,18 @@ class ToolParameter(BaseModel): return float(value) else: return int(value) - case ( - ToolParameter.ToolParameterType.SYSTEM_FILES - | ToolParameter.ToolParameterType.FILE - | ToolParameter.ToolParameterType.FILES - ): + case ToolParameter.ToolParameterType.SYSTEM_FILES | ToolParameter.ToolParameterType.FILES: + if not isinstance(value, list): + return [value] + return value + case ToolParameter.ToolParameterType.FILE: + if isinstance(value, list): + if len(value) != 1: + raise ValueError( + "This parameter only accepts one file but got multiple files while invoking." + ) + else: + return value[0] return value case _: return str(value)