Revert to single output in _create_crew_output; remove redundant empty task check

Co-Authored-By: brandon@crewai.com <brandon@crewai.com>
This commit is contained in:
Devin AI
2025-01-21 18:17:27 +00:00
parent 4b767b25e0
commit 200ecff5f6

View File

@@ -440,9 +440,6 @@ class Crew(BaseModel):
@model_validator(mode="after") @model_validator(mode="after")
def validate_must_have_non_conditional_task(self) -> "Crew": def validate_must_have_non_conditional_task(self) -> "Crew":
"""Ensure that a crew has at least one non-conditional task.""" """Ensure that a crew has at least one non-conditional task."""
if not self.tasks:
return self # Empty task list is handled by other validators
non_conditional_count = sum( non_conditional_count = sum(
1 for task in self.tasks if not isinstance(task, ConditionalTask) 1 for task in self.tasks if not isinstance(task, ConditionalTask)
) )
@@ -922,13 +919,14 @@ class Crew(BaseModel):
) )
def _create_crew_output(self, task_outputs: List[TaskOutput]) -> CrewOutput: def _create_crew_output(self, task_outputs: List[TaskOutput]) -> CrewOutput:
# Filter out empty task outputs if not task_outputs:
valid_task_outputs = [t for t in task_outputs if t.raw] raise ValueError("No task outputs available to create crew output.")
# Use the last valid task output as the final output # Filter out empty outputs and get the last valid one as the main output
final_task_output = valid_task_outputs[-1] if valid_task_outputs else None valid_outputs = [t for t in task_outputs if t.raw]
if not final_task_output: if not valid_outputs:
raise ValueError("No valid task outputs available to create crew output.") raise ValueError("No valid task outputs available to create crew output.")
final_task_output = valid_outputs[-1]
final_string_output = final_task_output.raw final_string_output = final_task_output.raw
self._finish_execution(final_string_output) self._finish_execution(final_string_output)
@@ -938,7 +936,7 @@ class Crew(BaseModel):
raw=final_task_output.raw, raw=final_task_output.raw,
pydantic=final_task_output.pydantic, pydantic=final_task_output.pydantic,
json_dict=final_task_output.json_dict, json_dict=final_task_output.json_dict,
tasks_output=valid_task_outputs, # Only include valid task outputs tasks_output=task_outputs, # Keep all task outputs
token_usage=token_usage, token_usage=token_usage,
) )