From c83d45c2c8fba9780ac212ff176c2855d5de149f Mon Sep 17 00:00:00 2001 From: Novice Date: Thu, 20 Mar 2025 19:55:05 +0800 Subject: [PATCH] fix: remove the literal_eval function --- api/core/workflow/nodes/agent/agent_node.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/api/core/workflow/nodes/agent/agent_node.py b/api/core/workflow/nodes/agent/agent_node.py index 5347e5911a..8838b1bf2c 100644 --- a/api/core/workflow/nodes/agent/agent_node.py +++ b/api/core/workflow/nodes/agent/agent_node.py @@ -1,5 +1,4 @@ import json -from ast import literal_eval from collections.abc import Generator, Mapping, Sequence from typing import Any, cast @@ -144,18 +143,19 @@ class AgentNode(ToolNode): raise ValueError(f"Variable {agent_input.value} does not exist") parameter_value = variable.value elif agent_input.type in {"mixed", "constant"}: - segment_group = variable_pool.convert_template(str(agent_input.value)) + try: + parameter_value = json.dumps(agent_input.value, ensure_ascii=False) + except TypeError: + parameter_value = str(agent_input.value) + segment_group = variable_pool.convert_template(parameter_value) parameter_value = segment_group.log if for_log else segment_group.text + try: + parameter_value = json.loads(parameter_value) + except json.JSONDecodeError: + parameter_value = parameter_value else: raise ValueError(f"Unknown agent input type '{agent_input.type}'") - value = parameter_value.strip() - if (parameter_value.startswith("{") and parameter_value.endswith("}")) or ( - parameter_value.startswith("[") and parameter_value.endswith("]") - ): - try: - value = literal_eval(parameter_value) - except: - value = json.loads(parameter_value.replace("'", '"')) # transform string to python object + value = parameter_value if parameter.type == "array[tools]": value = cast(list[dict[str, Any]], value) value = [tool for tool in value if tool.get("enabled", False)]