diff --git a/src/crewai/crew.py b/src/crewai/crew.py index c4d09b068..fc31a6774 100644 --- a/src/crewai/crew.py +++ b/src/crewai/crew.py @@ -561,8 +561,13 @@ class Crew(BaseModel): self._logger.log("info", "Planning the crew execution") result = CrewPlanner(self.tasks)._handle_crew_planning() - for task, step_plan in zip(self.tasks, result.list_of_plans_per_task): - task.description += step_plan + if result is not None and hasattr(result, "list_of_plans_per_task"): + for task, step_plan in zip(self.tasks, result.list_of_plans_per_task): + task.description += step_plan + else: + self._logger.log( + "info", "Something went wrong with the planning process of the Crew" + ) def _store_execution_log( self, diff --git a/src/crewai/utilities/planning_handler.py b/src/crewai/utilities/planning_handler.py index 2c5cd50a6..cba1727b9 100644 --- a/src/crewai/utilities/planning_handler.py +++ b/src/crewai/utilities/planning_handler.py @@ -1,4 +1,4 @@ -from typing import List +from typing import List, Optional from pydantic import BaseModel @@ -14,14 +14,14 @@ class CrewPlanner: def __init__(self, tasks: List[Task]): self.tasks = tasks - def _handle_crew_planning(self): + def _handle_crew_planning(self) -> Optional[BaseModel]: """Handles the Crew planning by creating detailed step-by-step plans for each task.""" planning_agent = self._create_planning_agent() tasks_summary = self._create_tasks_summary() planner_task = self._create_planner_task(planning_agent, tasks_summary) - return planner_task.execute_sync() + return planner_task.execute_sync().pydantic def _create_planning_agent(self) -> Agent: """Creates the planning agent for the crew planning."""