From cbc501875a9b6fafccec5a3f6e2ef01ecfa6d884 Mon Sep 17 00:00:00 2001 From: -LAN- Date: Thu, 17 Jul 2025 22:04:10 +0800 Subject: [PATCH] fix: structured output handling in nodes Signed-off-by: -LAN- --- .../nodes/knowledge_retrieval/knowledge_retrieval_node.py | 1 + api/core/workflow/nodes/llm/node.py | 8 ++++++-- .../nodes/question_classifier/question_classifier_node.py | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py b/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py index c7c368e509..5bb6804ef5 100644 --- a/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py +++ b/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py @@ -546,6 +546,7 @@ class KnowledgeRetrievalNode(BaseNode): stop=stop, user_id=self.user_id, structured_output_enabled=self.node_data.structured_output_enabled, + structured_output=None, file_saver=self._llm_file_saver, file_outputs=self._file_outputs, node_id=self.node_id, diff --git a/api/core/workflow/nodes/llm/node.py b/api/core/workflow/nodes/llm/node.py index 1d10df5db6..f78328501c 100644 --- a/api/core/workflow/nodes/llm/node.py +++ b/api/core/workflow/nodes/llm/node.py @@ -254,6 +254,7 @@ class LLMNode(BaseNode): stop=stop, user_id=self.user_id, structured_output_enabled=self.node_data.structured_output_enabled, + structured_output=self.node_data.structured_output, file_saver=self._llm_file_saver, file_outputs=self._file_outputs, node_id=self.node_id, @@ -335,6 +336,7 @@ class LLMNode(BaseNode): stop: Optional[Sequence[str]] = None, user_id: str, structured_output_enabled: bool, + structured_output: Optional[Mapping[str, Any]] = None, file_saver: LLMFileSaver, file_outputs: list["File"], node_id: str, @@ -346,7 +348,9 @@ class LLMNode(BaseNode): raise ValueError(f"Model schema not found for {node_data_model.name}") if structured_output_enabled: - output_schema = LLMNode.fetch_structured_output_schema() + output_schema = LLMNode.fetch_structured_output_schema( + structured_output=structured_output or {}, + ) invoke_result = invoke_llm_with_structured_output( provider=model_instance.provider, model_schema=model_schema, @@ -1020,7 +1024,7 @@ class LLMNode(BaseNode): @staticmethod def fetch_structured_output_schema( *, - structured_output: Mapping[str, Any] | None = None, + structured_output: Mapping[str, Any], ) -> dict[str, Any]: """ Fetch the structured output schema from the node data. diff --git a/api/core/workflow/nodes/question_classifier/question_classifier_node.py b/api/core/workflow/nodes/question_classifier/question_classifier_node.py index ed3323972b..54e10ba966 100644 --- a/api/core/workflow/nodes/question_classifier/question_classifier_node.py +++ b/api/core/workflow/nodes/question_classifier/question_classifier_node.py @@ -184,6 +184,7 @@ class QuestionClassifierNode(BaseNode): stop=stop, user_id=self.user_id, structured_output_enabled=False, + structured_output=None, file_saver=self._llm_file_saver, file_outputs=self._file_outputs, node_id=self.node_id,