fix(be): avoid using node_data.version for judgement tool node version

pull/22462/head
Novice 10 months ago
parent 2a85f28963
commit c133906a99

@ -249,7 +249,15 @@ class AgentNode(ToolNode):
) )
extra = tool.get("extra", {}) extra = tool.get("extra", {})
runtime_variable_pool = variable_pool if self.node_data.version != "1" else None node_data = cast(AgentNodeData, self.node_data)
# This is an issue that caused problems before.
# Logically, we shouldn't use the node_data.version field for judgment
# But for backward compatibility with historical data
# this version field judgment is still preserved here.
runtime_variable_pool = (
variable_pool if node_data.version != "1" or node_data.tool_node_version != "1" else None
)
tool_runtime = ToolManager.get_agent_tool_runtime( tool_runtime = ToolManager.get_agent_tool_runtime(
self.tenant_id, self.app_id, entity, self.invoke_from, runtime_variable_pool self.tenant_id, self.app_id, entity, self.invoke_from, runtime_variable_pool
) )

@ -13,6 +13,7 @@ class AgentNodeData(BaseNodeData):
agent_strategy_name: str agent_strategy_name: str
agent_strategy_label: str # redundancy agent_strategy_label: str # redundancy
memory: MemoryConfig | None = None memory: MemoryConfig | None = None
tool_node_version: str | None = None
class AgentInput(BaseModel): class AgentInput(BaseModel):
value: Union[list[str], list[ToolSelector], Any] value: Union[list[str], list[ToolSelector], Any]

@ -73,7 +73,6 @@ NODE_TYPE_CLASSES_MAPPING: Mapping[NodeType, Mapping[str, type[BaseNode]]] = {
}, },
NodeType.TOOL: { NodeType.TOOL: {
LATEST_VERSION: ToolNode, LATEST_VERSION: ToolNode,
"2": ToolNode,
"1": ToolNode, "1": ToolNode,
}, },
NodeType.VARIABLE_AGGREGATOR: { NodeType.VARIABLE_AGGREGATOR: {
@ -123,7 +122,6 @@ NODE_TYPE_CLASSES_MAPPING: Mapping[NodeType, Mapping[str, type[BaseNode]]] = {
}, },
NodeType.AGENT: { NodeType.AGENT: {
LATEST_VERSION: AgentNode, LATEST_VERSION: AgentNode,
"2": AgentNode,
"1": AgentNode, "1": AgentNode,
}, },
} }

@ -58,6 +58,7 @@ class ToolNodeData(BaseNodeData, ToolEntity):
return typ return typ
tool_parameters: dict[str, ToolInput] tool_parameters: dict[str, ToolInput]
tool_node_version: str | None = None
@field_validator("tool_parameters", mode="before") @field_validator("tool_parameters", mode="before")
@classmethod @classmethod

@ -67,7 +67,15 @@ class ToolNode(BaseNode[ToolNodeData]):
try: try:
from core.tools.tool_manager import ToolManager from core.tools.tool_manager import ToolManager
variable_pool = self.graph_runtime_state.variable_pool if self.node_data.version != "1" else None # This is an issue that caused problems before.
# Logically, we shouldn't use the node_data.version field for judgment
# But for backward compatibility with historical data
# this version field judgment is still preserved here.
variable_pool = (
self.graph_runtime_state.variable_pool
if self.node_data.version != "1" or self.node_data.tool_node_version != "1"
else None
)
tool_runtime = ToolManager.get_workflow_tool_runtime( tool_runtime = ToolManager.get_workflow_tool_runtime(
self.tenant_id, self.app_id, self.node_id, self.node_data, self.invoke_from, variable_pool self.tenant_id, self.app_id, self.node_id, self.node_data, self.invoke_from, variable_pool
) )

Loading…
Cancel
Save