From bcce68cead89f93d71a2cb93551a0aec3c2525ab Mon Sep 17 00:00:00 2001 From: crazywoola <427733928@qq.com> Date: Wed, 23 Jul 2025 09:58:04 +0800 Subject: [PATCH] fix #22798 --- .../output_parser/suggested_questions_after_answer.py | 4 +++- api/core/workflow/nodes/tool/tool_node.py | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/api/core/llm_generator/output_parser/suggested_questions_after_answer.py b/api/core/llm_generator/output_parser/suggested_questions_after_answer.py index c451bf514c..5125df7177 100644 --- a/api/core/llm_generator/output_parser/suggested_questions_after_answer.py +++ b/api/core/llm_generator/output_parser/suggested_questions_after_answer.py @@ -10,10 +10,12 @@ class SuggestedQuestionsAfterAnswerOutputParser: return SUGGESTED_QUESTIONS_AFTER_ANSWER_INSTRUCTION_PROMPT def parse(self, text: str) -> Any: + if not isinstance(text, str): + # Optionally log a warning here + return [] action_match = re.search(r"\[.*?\]", text.strip(), re.DOTALL) if action_match is not None: json_obj = json.loads(action_match.group(0).strip()) else: json_obj = [] - return json_obj diff --git a/api/core/workflow/nodes/tool/tool_node.py b/api/core/workflow/nodes/tool/tool_node.py index 86d36f474d..f437ac841d 100644 --- a/api/core/workflow/nodes/tool/tool_node.py +++ b/api/core/workflow/nodes/tool/tool_node.py @@ -317,7 +317,13 @@ class ToolNode(BaseNode): elif message.type == ToolInvokeMessage.MessageType.FILE: assert message.meta is not None assert isinstance(message.meta, dict) - assert "file" in message.meta and isinstance(message.meta["file"], File) + # Validate that meta contains a 'file' key + if "file" not in message.meta: + raise ToolNodeError("File message is missing 'file' key in meta") + + # Validate that the file is an instance of File + if not isinstance(message.meta["file"], File): + raise ToolNodeError(f"Expected File object but got {type(message.meta['file']).__name__}") files.append(message.meta["file"]) elif message.type == ToolInvokeMessage.MessageType.LOG: assert isinstance(message.message, ToolInvokeMessage.LogMessage)