diff --git a/crewai/task.py b/crewai/task.py index cb1b78018..0b83ecb84 100644 --- a/crewai/task.py +++ b/crewai/task.py @@ -1,6 +1,5 @@ from typing import List, Optional -from pydantic.v1 import BaseModel, Field -from pydantic import model_validator +from pydantic.v1 import BaseModel, Field, root_validator from langchain.tools import Tool @@ -21,7 +20,19 @@ class Task(BaseModel): default=[] ) - @model_validator(mode="after") - def _set_tools(self) -> None: + @root_validator(pre=False) + def _set_tools(cls, values): + if values.get('agent'): + values['tools'] = values.get('agent.tools') + return values + + def execute(self, context) -> str: + """ + Execute the task. + Returns: + output (str): Output of the task. + """ if self.agent: - self.tools = self.agent.tools \ No newline at end of file + return self.agent.execute_task(self.description, context) + else: + raise Exception(f"The task '{self.description}' has no agent assigned, therefore it can't be executed directly and should be executed in a Crew using a specific process that support that, either consensual or hierarchical.") \ No newline at end of file