|
|
|
@@ -8,12 +8,12 @@ from core.model_manager import ModelManager |
|
|
|
from core.model_runtime.entities.model_entities import ModelType |
|
|
|
from core.plugin.manager.exc import PluginDaemonClientSideError |
|
|
|
from core.plugin.manager.plugin import PluginInstallationManager |
|
|
|
from core.tools.entities.tool_entities import ToolProviderType |
|
|
|
from core.tools.entities.tool_entities import ToolParameter, ToolProviderType |
|
|
|
from core.tools.tool_manager import ToolManager |
|
|
|
from core.workflow.entities.node_entities import NodeRunResult |
|
|
|
from core.workflow.entities.variable_pool import VariablePool |
|
|
|
from core.workflow.enums import SystemVariableKey |
|
|
|
from core.workflow.nodes.agent.entities import AgentNodeData |
|
|
|
from core.workflow.nodes.agent.entities import AgentNodeData, ParamsAutoGenerated |
|
|
|
from core.workflow.nodes.base.entities import BaseNodeData |
|
|
|
from core.workflow.nodes.enums import NodeType |
|
|
|
from core.workflow.nodes.event.event import RunCompletedEvent |
|
|
|
@@ -156,16 +156,38 @@ class AgentNode(ToolNode): |
|
|
|
value = cast(list[dict[str, Any]], value) |
|
|
|
value = [tool for tool in value if tool.get("enabled", False)] |
|
|
|
|
|
|
|
for tool in value: |
|
|
|
if "schemas" in tool: |
|
|
|
tool.pop("schemas") |
|
|
|
parameters = tool.get("parameters", {}) |
|
|
|
if all(isinstance(v, dict) for _, v in parameters.items()): |
|
|
|
params = {} |
|
|
|
for key, param in parameters.items(): |
|
|
|
if param.get("auto", ParamsAutoGenerated.OPEN.value) == ParamsAutoGenerated.CLOSE.value: |
|
|
|
value_param = param.get("value", {}) |
|
|
|
params[key] = value_param.get("value", "") if value_param is not None else None |
|
|
|
else: |
|
|
|
params[key] = None |
|
|
|
parameters = params |
|
|
|
tool["settings"] = {k: v.get("value", None) for k, v in tool.get("settings", {}).items()} |
|
|
|
tool["parameters"] = parameters |
|
|
|
|
|
|
|
if not for_log: |
|
|
|
if parameter.type == "array[tools]": |
|
|
|
value = cast(list[dict[str, Any]], value) |
|
|
|
tool_value = [] |
|
|
|
for tool in value: |
|
|
|
provider_type = ToolProviderType(tool.get("type", ToolProviderType.BUILT_IN.value)) |
|
|
|
setting_params = tool.get("settings", {}) |
|
|
|
parameters = tool.get("parameters", {}) |
|
|
|
manual_input_params = [key for key, value in parameters.items() if value is not None] |
|
|
|
|
|
|
|
parameters = {**parameters, **setting_params} |
|
|
|
entity = AgentToolEntity( |
|
|
|
provider_id=tool.get("provider_name", ""), |
|
|
|
provider_type=ToolProviderType.BUILT_IN, |
|
|
|
provider_type=provider_type, |
|
|
|
tool_name=tool.get("tool_name", ""), |
|
|
|
tool_parameters=tool.get("parameters", {}), |
|
|
|
tool_parameters=parameters, |
|
|
|
plugin_unique_identifier=tool.get("plugin_unique_identifier", None), |
|
|
|
) |
|
|
|
|
|
|
|
@@ -178,11 +200,26 @@ class AgentNode(ToolNode): |
|
|
|
tool_runtime.entity.description.llm = ( |
|
|
|
extra.get("descrption", "") or tool_runtime.entity.description.llm |
|
|
|
) |
|
|
|
|
|
|
|
for tool_runtime_params in tool_runtime.entity.parameters: |
|
|
|
tool_runtime_params.form = ( |
|
|
|
ToolParameter.ToolParameterForm.FORM |
|
|
|
if tool_runtime_params.name in manual_input_params |
|
|
|
else tool_runtime_params.form |
|
|
|
) |
|
|
|
manual_input_value = {} |
|
|
|
if tool_runtime.entity.parameters: |
|
|
|
manual_input_value = { |
|
|
|
key: value for key, value in parameters.items() if key in manual_input_params |
|
|
|
} |
|
|
|
runtime_parameters = { |
|
|
|
**tool_runtime.runtime.runtime_parameters, |
|
|
|
**manual_input_value, |
|
|
|
} |
|
|
|
tool_value.append( |
|
|
|
{ |
|
|
|
**tool_runtime.entity.model_dump(mode="json"), |
|
|
|
"runtime_parameters": tool_runtime.runtime.runtime_parameters, |
|
|
|
"runtime_parameters": runtime_parameters, |
|
|
|
"provider_type": provider_type.value, |
|
|
|
} |
|
|
|
) |
|
|
|
value = tool_value |