From 6a78ed7c8a1599ca949dc00f0df7cd34c1aa9d6e Mon Sep 17 00:00:00 2001 From: mengyonghao <1533512157@qq.com> Date: Mon, 12 Jan 2026 20:24:49 +0800 Subject: [PATCH] fix(workflow): fix default values in parameter extraction node and incorrect value retrieval in comparison operations --- api/app/core/workflow/nodes/operators.py | 3 +-- .../workflow/nodes/parameter_extractor/config.py | 4 ++-- .../core/workflow/nodes/parameter_extractor/node.py | 12 ++++++++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/api/app/core/workflow/nodes/operators.py b/api/app/core/workflow/nodes/operators.py index ab6ad3e1..25caec07 100644 --- a/api/app/core/workflow/nodes/operators.py +++ b/api/app/core/workflow/nodes/operators.py @@ -260,8 +260,7 @@ class ConditionBase(ABC): raise RuntimeError("Unsupported variable type") def check(self, no_right=False): - left = self.pool.get(self.left_selector.variable_selector) - if not isinstance(left, self.type_limit): + if not isinstance(self.left_value, self.type_limit): raise TypeError(f"The variable to be compared on must be of {self.type_limit} type") if not no_right: right = self.resolve_right_literal_value() diff --git a/api/app/core/workflow/nodes/parameter_extractor/config.py b/api/app/core/workflow/nodes/parameter_extractor/config.py index 3b5607c5..cfbd9c14 100644 --- a/api/app/core/workflow/nodes/parameter_extractor/config.py +++ b/api/app/core/workflow/nodes/parameter_extractor/config.py @@ -37,7 +37,7 @@ class ParamsConfig(BaseModel): ) required: bool = Field( - ..., + default=False, description="Whether the parameter is required" ) @@ -59,6 +59,6 @@ class ParameterExtractorNodeConfig(BaseNodeConfig): ) prompt: str = Field( - ..., + default="", description="User-provided supplemental prompt" ) diff --git a/api/app/core/workflow/nodes/parameter_extractor/node.py b/api/app/core/workflow/nodes/parameter_extractor/node.py index af2a4478..84d61aa9 100644 --- a/api/app/core/workflow/nodes/parameter_extractor/node.py +++ b/api/app/core/workflow/nodes/parameter_extractor/node.py @@ -157,9 +157,17 @@ class ParameterExtractorNode(BaseNode): messages = [ ("system", system_prompt), - ("user", self._render_template(self.typed_config.prompt, state)), - ("user", rendered_user_prompt), + ] + if self.typed_config.prompt: + messages.extend([ + ("user", self._render_template(self.typed_config.prompt, state)), + ("user", rendered_user_prompt), + ]) + else: + messages.extend([ + ("user", rendered_user_prompt), + ]) model_resp = await llm.ainvoke(messages) result = json_repair.repair_json(model_resp.content, return_objects=True)