diff --git a/api/core/agent/agent_app_runner.py b/api/core/agent/agent_app_runner.py index 0730827aca..c67d2d831d 100644 --- a/api/core/agent/agent_app_runner.py +++ b/api/core/agent/agent_app_runner.py @@ -24,7 +24,7 @@ from core.model_runtime.entities import ( from core.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransform from core.tools.__base.tool import Tool -from core.tools.entities.tool_entities import ToolInvokeMeta +from core.tools.entities.tool_entities import ToolInvokeFrom, ToolInvokeMeta from core.tools.tool_engine import ToolEngine from models.model import Message @@ -103,6 +103,9 @@ class AgentAppRunner(BaseAgentRunner): agent_strategy=self.config.strategy, tool_invoke_hook=tool_invoke_hook, instruction=instruction, + tenant_id=self.tenant_id, + invoke_from=self.application_generate_entity.invoke_from, + tool_invoke_from=ToolInvokeFrom.WORKFLOW, ) # Initialize state variables diff --git a/api/core/agent/patterns/function_call.py b/api/core/agent/patterns/function_call.py index 9c76f5d83d..4dd3fc2585 100644 --- a/api/core/agent/patterns/function_call.py +++ b/api/core/agent/patterns/function_call.py @@ -46,9 +46,7 @@ class FunctionCallStrategy(AgentPattern): total_usage: dict[str, LLMUsage | None] = {"usage": None} messages: list[PromptMessage] = list(prompt_messages) # Create mutable copy final_text: str = "" - structured_output_payload: dict[str, Any] | None = None final_tool_args: dict[str, Any] = {"!!!": "!!!"} - output_text_payload: str | None = None finish_reason: str | None = None output_files: list[File] = [] # Track files produced by tools @@ -139,6 +137,8 @@ class FunctionCallStrategy(AgentPattern): tool_name, tool_args, tool_call_id, messages, round_log ) tool_entity = self._find_tool_by_name(tool_name) + if not tool_entity: + raise ValueError(f"Tool {tool_name} not found") tool_outputs[tool_name] = tool_response # Track files produced by tools output_files.extend(tool_files) diff --git a/api/core/agent/patterns/react.py b/api/core/agent/patterns/react.py index 299e8c8baa..bdabe7ab26 100644 --- a/api/core/agent/patterns/react.py +++ b/api/core/agent/patterns/react.py @@ -74,10 +74,7 @@ class ReActStrategy(AgentPattern): total_usage: dict[str, Any] = {"usage": None} output_files: list[File] = [] # Track files produced by tools final_text: str = "" - structured_output_payload: dict[str, Any] | None = None - output_text_payload: str | None = None finish_reason: str | None = None - terminal_output_seen = False tool_instance_names = {tool.entity.identity.name for tool in self.tools} available_output_tool_names = { tool_name @@ -178,11 +175,11 @@ class ReActStrategy(AgentPattern): else: action_name = scratchpad.action.action_name if action_name == OUTPUT_TEXT_TOOL and isinstance(scratchpad.action.action_input, dict): - output_text_payload = scratchpad.action.action_input.get("text") + pass # output_text_payload = scratchpad.action.action_input.get("text") elif action_name == FINAL_STRUCTURED_OUTPUT_TOOL and isinstance(scratchpad.action.action_input, dict): data = scratchpad.action.action_input.get("data") if isinstance(data, dict): - structured_output_payload = data + pass # structured_output_payload = data elif action_name == FINAL_OUTPUT_TOOL: if isinstance(scratchpad.action.action_input, dict): final_text = self._format_output_text(scratchpad.action.action_input.get("text")) @@ -196,7 +193,7 @@ class ReActStrategy(AgentPattern): output_files.extend(tool_files) if action_name == terminal_tool_name: - terminal_output_seen = True + pass # terminal_output_seen = True react_state = False else: react_state = True