From c9912e99799a1bb22e0a54308a8c33ffad9b3382 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 2 May 2025 08:12:31 +0000 Subject: [PATCH] Refactor: Extract message validation into helper method with type hints Co-Authored-By: Joe Moura --- src/crewai/llm.py | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/crewai/llm.py b/src/crewai/llm.py index 82e48c8d6..2a52d1e66 100644 --- a/src/crewai/llm.py +++ b/src/crewai/llm.py @@ -322,6 +322,23 @@ class LLM(BaseLLM): ANTHROPIC_PREFIXES = ("anthropic/", "claude-", "claude/") return any(prefix in model.lower() for prefix in ANTHROPIC_PREFIXES) + def _validate_messages( + self, + messages: Union[str, List[Dict[str, str]], None] + ) -> None: + """Validate that messages list is not empty or None. + + Args: + messages: Input messages for the LLM + + Raises: + ValueError: If messages is None or an empty list + """ + if messages is None: + raise ValueError("Messages list cannot be empty. At least one message is required.") + if isinstance(messages, list) and len(messages) == 0: + raise ValueError("Messages list cannot be empty. At least one message is required.") + def _prepare_completion_params( self, messages: Union[str, List[Dict[str, str]]], @@ -337,12 +354,12 @@ class LLM(BaseLLM): Returns: Dict[str, Any]: Parameters for the completion call + + Raises: + ValueError: If messages is None or an empty list """ - # --- 1) Ensure messages list is not None or empty (additional safeguard) - if messages is None: - raise ValueError("Messages list cannot be empty. At least one message is required.") - if isinstance(messages, list) and len(messages) == 0: - raise ValueError("Messages list cannot be empty. At least one message is required.") + # --- 1) Ensure messages list is not empty + self._validate_messages(messages) # --- 2) Format messages according to provider requirements if isinstance(messages, str): @@ -848,14 +865,11 @@ class LLM(BaseLLM): Raises: TypeError: If messages format is invalid - ValueError: If response format is not supported + ValueError: If messages is None or an empty list, or if response format is not supported LLMContextLengthExceededException: If input exceeds model's context limit """ # --- 1) Validate messages is not None or empty to prevent IndexError in LiteLLM's ollama_pt() - if messages is None: - raise ValueError("Messages list cannot be empty. At least one message is required.") - if isinstance(messages, list) and len(messages) == 0: - raise ValueError("Messages list cannot be empty. At least one message is required.") + self._validate_messages(messages) # --- 2) Emit call started event assert hasattr(crewai_event_bus, "emit")