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 dd314073a2..c964c252ce 100644 --- a/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py +++ b/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py @@ -375,19 +375,20 @@ class KnowledgeRetrievalNode(LLMNode): expected_value = self.graph_runtime_state.variable_pool.convert_template( expected_value ).value[0] - if expected_value.value_type == "number": # type: ignore - expected_value = expected_value.value # type: ignore - elif expected_value.value_type == "string": # type: ignore - expected_value = re.sub(r"[\r\n\t]+", " ", expected_value.text).strip() # type: ignore - elif expected_value.value_type in ( - "array[number]", - "array[string]", - "array[object]", - "array", - ): # type: ignore - expected_value = expected_value.value # type: ignore - else: - raise ValueError("Invalid expected metadata value type") + if hasattr(expected_value, "value_type"): + if expected_value.value_type == "number": # type: ignore + expected_value = expected_value.value # type: ignore + elif expected_value.value_type == "string": # type: ignore + expected_value = re.sub(r"[\r\n\t]+", " ", expected_value.text).strip() # type: ignore + elif expected_value.value_type in ( + "array[number]", + "array[string]", + "array[object]", + "array", + ): # type: ignore + expected_value = expected_value.value # type: ignore + else: + raise ValueError("Invalid expected metadata value type") elif isinstance(expected_value, list): # For constant array values pass diff --git a/api/core/workflow/utils/condition/processor.py b/api/core/workflow/utils/condition/processor.py index 9795387788..c321f1812c 100644 --- a/api/core/workflow/utils/condition/processor.py +++ b/api/core/workflow/utils/condition/processor.py @@ -77,7 +77,7 @@ def _evaluate_condition( *, operator: SupportedComparisonOperator, value: Any, - expected: str | Sequence[str] | None, + expected: str | Sequence[str] | Sequence[int] | Sequence[float] | int | float | None, ) -> bool: match operator: case "contains":