Procházet zdrojové kódy

feat: cast files into correct type while invoking

Yeuoly před 6 měsíci
rodič
revize
e9d69f020a
1 změnil soubory, kde provedl 12 přidání a 5 odebrání
  1. 12 5
      api/core/tools/entities/tool_entities.py

+ 12 - 5
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)