diff --git a/swarms/structs/agent.py b/swarms/structs/agent.py index be02c704..839cf440 100644 --- a/swarms/structs/agent.py +++ b/swarms/structs/agent.py @@ -711,45 +711,50 @@ class Agent: while attempt < self.retry_attempts and not success: try: if self.long_term_memory is not None: - logger.info( - "Querying long term memory..." - ) + logger.info("Querying long term memory...") self.memory_query(task_prompt) + # Generate response using LLM + response = self.llm(task_prompt, *args, **kwargs) + + # Check if response is a dictionary and has 'choices' key + if isinstance(response, dict) and 'choices' in response: + response = response['choices'][0]['message']['content'] + elif isinstance(response, str): + # If response is already a string, use it as is + pass else: - response_args = ( - (task_prompt, *args) - if img is None - else (task_prompt, img, *args) - ) - response = self.call_llm( - *response_args, **kwargs - ) + raise ValueError(f"Unexpected response format: {type(response)}") - # Log the step metadata - logged = self.log_step_metadata( - loop_count, task_prompt, response - ) - logger.info(logged) + # Check and execute tools + if self.tools is not None: + print(f"self.tools is not None: {response}") + self.parse_and_execute_tools(response) - # Conver to a str if the response is not a str - response = self.llm_output_parser( - response - ) + # Log the step metadata + logged = self.log_step_metadata( + loop_count, task_prompt, response + ) + logger.info(logged) - # Print - if self.streaming_on is True: - self.stream_response(response) - else: - print(response) + # Conver to a str if the response is not a str + response = self.llm_output_parser( + response + ) - # Add the response to the memory - self.short_memory.add( - role=self.agent_name, content=response - ) + # Print + if self.streaming_on is True: + self.stream_response(response) + else: + print(response) + + # Add the response to the memory + self.short_memory.add( + role=self.agent_name, content=response + ) - # Add to all responses - all_responses.append(response) + # Add to all responses + all_responses.append(response) # TODO: Implement reliablity check if self.tools is not None: @@ -806,8 +811,7 @@ class Agent: except Exception as e: logger.error( - f"Attempt {attempt+1}: Error generating" - f" response: {e}" + f"Attempt {attempt+1}: Error generating response: {e}" ) attempt += 1