From a6d3898080327417737dfcf3ae8cc044c4723368 Mon Sep 17 00:00:00 2001 From: Eduardo Chiarotti Date: Fri, 11 Oct 2024 22:35:17 -0300 Subject: [PATCH] fix: training issue (#1433) * fix: training issue * fix: output from crew * fix: message --- src/crewai/agents/crew_agent_executor.py | 26 ++++++++++++++++++++++++ src/crewai/cli/run_crew.py | 10 ++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/crewai/agents/crew_agent_executor.py b/src/crewai/agents/crew_agent_executor.py index 3cb195206..d15c80732 100644 --- a/src/crewai/agents/crew_agent_executor.py +++ b/src/crewai/agents/crew_agent_executor.py @@ -334,6 +334,32 @@ class CrewAgentExecutor(CrewAgentExecutorMixin): color="red", ) + if self.ask_for_human_input and human_feedback is not None: + training_data = { + "initial_output": result.output, + "human_feedback": human_feedback, + "agent": agent_id, + "agent_role": self.agent.role, + } + if self.crew is not None and hasattr(self.crew, "_train_iteration"): + train_iteration = self.crew._train_iteration + if isinstance(train_iteration, int): + CrewTrainingHandler(TRAINING_DATA_FILE).append( + train_iteration, agent_id, training_data + ) + else: + self._logger.log( + "error", + "Invalid train iteration type. Expected int.", + color="red", + ) + else: + self._logger.log( + "error", + "Crew is None or does not have _train_iteration attribute.", + color="red", + ) + def _format_prompt(self, prompt: str, inputs: Dict[str, str]) -> str: prompt = prompt.replace("{input}", inputs["input"]) prompt = prompt.replace("{tool_names}", inputs["tool_names"]) diff --git a/src/crewai/cli/run_crew.py b/src/crewai/cli/run_crew.py index e4e3e1b2f..0b1ac29bc 100644 --- a/src/crewai/cli/run_crew.py +++ b/src/crewai/cli/run_crew.py @@ -1,6 +1,7 @@ import subprocess import click +import tomllib def run_crew() -> None: @@ -9,13 +10,16 @@ def run_crew() -> None: """ command = ["uv", "run", "run_crew"] try: - subprocess.run(command, capture_output=True, text=True, check=True) + subprocess.run(command, capture_output=False, text=True, check=True) except subprocess.CalledProcessError as e: click.echo(f"An error occurred while running the crew: {e}", err=True) click.echo(e.output, err=True, nl=True) - click.echo(e.stderr, err=True, nl=True) - if "table found" in e.stderr: + + with open("pyproject.toml", "rb") as f: + data = tomllib.load(f) + + if data.get("tool", {}).get("poetry"): click.secho( "It's possible that you are using an old version of crewAI that uses poetry, please run `crewai update` to update your pyproject.toml to use uv.", fg="yellow",