From e32d1007ba2b8d05ac0f54790a3c3c231dc32c18 Mon Sep 17 00:00:00 2001 From: Brandon Hancock Date: Tue, 21 Jan 2025 14:56:17 -0500 Subject: [PATCH] implement proper try / except --- src/crewai/agent.py | 4 ++++ src/crewai/agents/crew_agent_executor.py | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/crewai/agent.py b/src/crewai/agent.py index b7f0b2896..5823ef7f9 100644 --- a/src/crewai/agent.py +++ b/src/crewai/agent.py @@ -3,6 +3,7 @@ import shutil import subprocess from typing import Any, Dict, List, Literal, Optional, Union +from litellm import AuthenticationError as LiteLLMAuthenticationError from pydantic import Field, InstanceOf, PrivateAttr, model_validator from crewai.agents import CacheHandler @@ -261,6 +262,9 @@ class Agent(BaseAgent): } )["output"] except Exception as e: + if isinstance(e, LiteLLMAuthenticationError): + # Do not retry on authentication errors + raise e self._times_executed += 1 if self._times_executed > self.max_retry_limit: raise e diff --git a/src/crewai/agents/crew_agent_executor.py b/src/crewai/agents/crew_agent_executor.py index e4e67169d..e1402edf1 100644 --- a/src/crewai/agents/crew_agent_executor.py +++ b/src/crewai/agents/crew_agent_executor.py @@ -100,7 +100,11 @@ class CrewAgentExecutor(CrewAgentExecutorMixin): self._show_start_logs() self.ask_for_human_input = bool(inputs.get("ask_for_human_input", False)) - formatted_answer = self._invoke_loop() + + try: + formatted_answer = self._invoke_loop() + except Exception as e: + raise e if self.ask_for_human_input: formatted_answer = self._handle_human_feedback(formatted_answer) @@ -153,7 +157,7 @@ class CrewAgentExecutor(CrewAgentExecutorMixin): continue elif self._is_litellm_authentication_error(e): self._handle_litellm_auth_error(e) - break + raise e else: self._printer.print( content=f"Unhandled exception: {e}",