From 7ae417b4b637c88d9781eeb94291e5f5e36cfe8b Mon Sep 17 00:00:00 2001 From: -LAN- Date: Wed, 25 Dec 2024 18:36:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(tool):=20validate=20return=20type=20from=20?= =?UTF-8?q?=5Finvoke=20method=20to=20ensure=20ToolInv=E2=80=A6=20(#12079)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: -LAN- --- api/core/tools/tool/tool.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/api/core/tools/tool/tool.py b/api/core/tools/tool/tool.py index 55f94d7619..4094207beb 100644 --- a/api/core/tools/tool/tool.py +++ b/api/core/tools/tool/tool.py @@ -222,6 +222,12 @@ class Tool(BaseModel, ABC): if not isinstance(result, list): result = [result] + if not all(isinstance(message, ToolInvokeMessage) for message in result): + raise ValueError( + f"Invalid return type from {self.__class__.__name__}._invoke method. " + "Expected ToolInvokeMessage or list of ToolInvokeMessage." + ) + return result def _transform_tool_parameters_type(self, tool_parameters: Mapping[str, Any]) -> dict[str, Any]: