From 57eff390a509adc19608a6504f7d47e787405d18 Mon Sep 17 00:00:00 2001 From: harshalmore31 Date: Wed, 25 Jun 2025 23:09:23 +0530 Subject: [PATCH] Refactor tool execution logic to improve handling of callable tools and None responses --- swarms/structs/agent.py | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/swarms/structs/agent.py b/swarms/structs/agent.py index e2bde34b..ab7ef93e 100644 --- a/swarms/structs/agent.py +++ b/swarms/structs/agent.py @@ -1080,25 +1080,24 @@ class Agent: # Print self.pretty_print(response, loop_count) - # Handle tools - if ( - hasattr(self, "tool_struct") - and self.tool_struct is not None - and self.output_raw_json_from_tool_call - is True - ): - response = response - else: - # Only execute tools if response is not None - if response is not None: - self.execute_tools( - response=response, - loop_count=loop_count, - ) + # Check and execute callable tools + if exists(self.tools): + if ( + self.tool_struct is not None + and self.output_raw_json_from_tool_call is True + ): + response = response else: - logger.warning( - f"LLM returned None response in loop {loop_count}, skipping tool execution" - ) + # Only execute tools if response is not None + if response is not None: + self.execute_tools( + response=response, + loop_count=loop_count, + ) + else: + logger.warning( + f"LLM returned None response in loop {loop_count}, skipping tool execution" + ) # Handle MCP tools if (