From f4efdc55e22e0e8a5d8d5c446d571155cdabc791 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sun, 9 Feb 2025 22:52:13 +0000 Subject: [PATCH] refactor: implement review suggestions - Extract model conversion logic to _get_llm_instance helper method - Improve error message clarity - Simplify LLM instance creation in CrewEvaluator Co-Authored-By: Joe Moura --- src/crewai/crew.py | 22 ++++++++++++++----- .../evaluators/crew_evaluator_handler.py | 5 +---- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/crewai/crew.py b/src/crewai/crew.py index 3b7f9cbbd..9f737a7a6 100644 --- a/src/crewai/crew.py +++ b/src/crewai/crew.py @@ -1161,14 +1161,26 @@ class Crew(BaseModel): inputs: Optional dictionary of inputs to pass to the crew """ if not llm and not openai_model_name: - raise ValueError("Either llm or openai_model_name must be provided") - - model_to_use: Union[str, LLM] = llm if llm is not None else openai_model_name - if isinstance(model_to_use, str): - model_to_use = LLM(model=model_to_use) + raise ValueError("Must provide either 'llm' or 'openai_model_name' parameter") + model_to_use = self._get_llm_instance(llm, openai_model_name) test_crew = self.copy() + def _get_llm_instance(self, llm: Optional[Union[str, LLM]], openai_model_name: Optional[str]) -> LLM: + """Get an LLM instance from either llm or openai_model_name parameter. + + Args: + llm: LLM instance or model name + openai_model_name: OpenAI model name (deprecated) + + Returns: + LLM instance + """ + model = llm if llm is not None else openai_model_name + if isinstance(model, str): + return LLM(model=model) + return model + self._test_execution_span = test_crew._telemetry.test_execution_span( test_crew, n_iterations, diff --git a/src/crewai/utilities/evaluators/crew_evaluator_handler.py b/src/crewai/utilities/evaluators/crew_evaluator_handler.py index 9d98daf76..90c33923a 100644 --- a/src/crewai/utilities/evaluators/crew_evaluator_handler.py +++ b/src/crewai/utilities/evaluators/crew_evaluator_handler.py @@ -36,10 +36,7 @@ class CrewEvaluator: def __init__(self, crew, llm: Union[str, LLM]): self.crew = crew - if isinstance(llm, str): - self.llm = LLM(model=llm) - else: - self.llm = llm + self.llm = LLM(model=llm) if isinstance(llm, str) else llm self._telemetry = Telemetry() self._setup_for_evaluating()