diff --git a/lib/crewai/src/crewai/crew.py b/lib/crewai/src/crewai/crew.py index 1dba43f4b..7bc7ab5d2 100644 --- a/lib/crewai/src/crewai/crew.py +++ b/lib/crewai/src/crewai/crew.py @@ -786,6 +786,11 @@ class Crew(FlowTrackable, BaseModel): ) return self + @property + def display_name(self) -> str: + """Effective crew name for telemetry and UI, falling back to class name.""" + return self.name or type(self).__name__ + @property def key(self) -> str: source: list[str] = [agent.key for agent in self.agents] + [ @@ -853,7 +858,7 @@ class Crew(FlowTrackable, BaseModel): crewai_event_bus.emit( self, CrewTrainStartedEvent( - crew_name=self.name or self.__class__.__name__, + crew_name=self.display_name, n_iterations=n_iterations, filename=filename, inputs=inputs, @@ -881,7 +886,7 @@ class Crew(FlowTrackable, BaseModel): crewai_event_bus.emit( self, CrewTrainCompletedEvent( - crew_name=self.name or self.__class__.__name__, + crew_name=self.display_name, n_iterations=n_iterations, filename=filename, ), @@ -891,7 +896,7 @@ class Crew(FlowTrackable, BaseModel): self, CrewTrainFailedEvent( error=str(e), - crew_name=self.name or self.__class__.__name__, + crew_name=self.display_name, ), ) self._logger.log("error", f"Training failed: {e}", color="red") @@ -977,7 +982,7 @@ class Crew(FlowTrackable, BaseModel): self, CrewKickoffFailedEvent( error=str(e), - crew_name=self.name or self.__class__.__name__, + crew_name=self.display_name, started_event_id=self._kickoff_event_id, ), ) @@ -1188,7 +1193,7 @@ class Crew(FlowTrackable, BaseModel): self, CrewKickoffFailedEvent( error=str(e), - crew_name=self.name or self.__class__.__name__, + crew_name=self.display_name, started_event_id=self._kickoff_event_id, ), ) @@ -1794,7 +1799,7 @@ class Crew(FlowTrackable, BaseModel): crewai_event_bus.emit( self, CrewKickoffCompletedEvent( - crew_name=self.name or self.__class__.__name__, + crew_name=self.display_name, output=final_task_output, total_tokens=self.token_usage.total_tokens, started_event_id=self._kickoff_event_id, @@ -2056,7 +2061,7 @@ class Crew(FlowTrackable, BaseModel): crewai_event_bus.emit( self, CrewTestStartedEvent( - crew_name=self.name or self.__class__.__name__, + crew_name=self.display_name, n_iterations=n_iterations, eval_llm=llm_instance, inputs=inputs, @@ -2075,7 +2080,7 @@ class Crew(FlowTrackable, BaseModel): crewai_event_bus.emit( self, CrewTestCompletedEvent( - crew_name=self.name or self.__class__.__name__, + crew_name=self.display_name, ), ) except Exception as e: @@ -2083,7 +2088,7 @@ class Crew(FlowTrackable, BaseModel): self, CrewTestFailedEvent( error=str(e), - crew_name=self.name or self.__class__.__name__, + crew_name=self.display_name, ), ) raise diff --git a/lib/crewai/src/crewai/crews/utils.py b/lib/crewai/src/crewai/crews/utils.py index 1df49a278..70b6874c7 100644 --- a/lib/crewai/src/crewai/crews/utils.py +++ b/lib/crewai/src/crewai/crews/utils.py @@ -311,7 +311,7 @@ def prepare_kickoff( fmt = ConsoleFormatter(verbose=True) content = fmt.create_status_content( "Resuming from Checkpoint", - crew.name or crew.__class__.__name__, + crew.display_name, "bright_magenta", ID=str(crew.id), ) @@ -320,7 +320,7 @@ def prepare_kickoff( ) else: started_event = CrewKickoffStartedEvent( - crew_name=crew.name or crew.__class__.__name__, + crew_name=crew.display_name, inputs=normalized, ) crew._kickoff_event_id = started_event.event_id diff --git a/lib/crewai/src/crewai/utilities/evaluators/crew_evaluator_handler.py b/lib/crewai/src/crewai/utilities/evaluators/crew_evaluator_handler.py index 669765b6b..5f469c313 100644 --- a/lib/crewai/src/crewai/utilities/evaluators/crew_evaluator_handler.py +++ b/lib/crewai/src/crewai/utilities/evaluators/crew_evaluator_handler.py @@ -213,7 +213,7 @@ class CrewEvaluator: quality=quality_score, execution_duration=current_task.execution_duration, model=getattr(self.llm, "model", str(self.llm)), - crew_name=self.crew.name or self.crew.__class__.__name__, + crew_name=self.crew.display_name, crew=self.crew, ), )