From 405bb73c48c768cc4ceb2e7fed170bcc435170b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moura?= Date: Sun, 22 Dec 2024 00:34:30 -0300 Subject: [PATCH] Fixing guardarils implementation --- src/crewai/task.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/crewai/task.py b/src/crewai/task.py index 1880cff89..c4278ce11 100644 --- a/src/crewai/task.py +++ b/src/crewai/task.py @@ -305,17 +305,25 @@ class Task(BaseModel): ) self.retry_count += 1 - context = f"Previous attempt failed validation: {guardrail_result.error}\nPlease try again." + context = ( + f"### Previous attempt failed validation: {guardrail_result.error}\n\n\n" + f"### Previous result:\n{task_output.raw}\n\n\n" + "Try again, making sure to address the validation error." + ) return self._execute_core(agent, context, tools) if guardrail_result.result is None: raise Exception( "Task guardrail returned None as result. This is not allowed." ) - task_output.raw = guardrail_result.result - pydantic_output, json_output = self._export_output(guardrail_result.result) - task_output.pydantic = pydantic_output - task_output.json_dict = json_output + + if isinstance(guardrail_result.result, str): + task_output.raw = guardrail_result.result + pydantic_output, json_output = self._export_output(guardrail_result.result) + task_output.pydantic = pydantic_output + task_output.json_dict = json_output + elif isinstance(guardrail_result.result, TaskOutput): + task_output = guardrail_result.result self.output = task_output