mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
Fixing trainign feature
This commit is contained in:
@@ -344,8 +344,9 @@ class Agent(BaseAgent):
|
|||||||
human_feedbacks = [
|
human_feedbacks = [
|
||||||
i["human_feedback"] for i in data.get(agent_id, {}).values()
|
i["human_feedback"] for i in data.get(agent_id, {}).values()
|
||||||
]
|
]
|
||||||
task_prompt += "You MUST follow these feedbacks: \n " + "\n - ".join(
|
task_prompt += (
|
||||||
human_feedbacks
|
"\n\nYou MUST follow these instructions: \n "
|
||||||
|
+ "\n - ".join(human_feedbacks)
|
||||||
)
|
)
|
||||||
|
|
||||||
return task_prompt
|
return task_prompt
|
||||||
@@ -354,8 +355,9 @@ class Agent(BaseAgent):
|
|||||||
"""Use trained data for the agent task prompt to improve output."""
|
"""Use trained data for the agent task prompt to improve output."""
|
||||||
if data := CrewTrainingHandler(TRAINED_AGENTS_DATA_FILE).load():
|
if data := CrewTrainingHandler(TRAINED_AGENTS_DATA_FILE).load():
|
||||||
if trained_data_output := data.get(self.role):
|
if trained_data_output := data.get(self.role):
|
||||||
task_prompt += "You MUST follow these feedbacks: \n " + "\n - ".join(
|
task_prompt += (
|
||||||
trained_data_output["suggestions"]
|
"\n\nYou MUST follow these instructions: \n - "
|
||||||
|
+ "\n - ".join(trained_data_output["suggestions"])
|
||||||
)
|
)
|
||||||
return task_prompt
|
return task_prompt
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,9 @@ class CrewAgentExecutor(CrewAgentExecutorMixin):
|
|||||||
self.messages.append(self._format_msg(f"Feedback: {human_feedback}"))
|
self.messages.append(self._format_msg(f"Feedback: {human_feedback}"))
|
||||||
formatted_answer = self._invoke_loop()
|
formatted_answer = self._invoke_loop()
|
||||||
|
|
||||||
|
if self.crew and self.crew._train:
|
||||||
|
self._handle_crew_training_output(formatted_answer)
|
||||||
|
|
||||||
return {"output": formatted_answer.output}
|
return {"output": formatted_answer.output}
|
||||||
|
|
||||||
def _invoke_loop(self, formatted_answer=None):
|
def _invoke_loop(self, formatted_answer=None):
|
||||||
@@ -294,24 +297,16 @@ class CrewAgentExecutor(CrewAgentExecutorMixin):
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Function to handle the process of the training data."""
|
"""Function to handle the process of the training data."""
|
||||||
agent_id = str(self.agent.id)
|
agent_id = str(self.agent.id)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
CrewTrainingHandler(TRAINING_DATA_FILE).load()
|
CrewTrainingHandler(TRAINING_DATA_FILE).load()
|
||||||
and not self.ask_for_human_input
|
and not self.ask_for_human_input
|
||||||
):
|
):
|
||||||
training_data = CrewTrainingHandler(TRAINING_DATA_FILE).load()
|
training_data = CrewTrainingHandler(TRAINING_DATA_FILE).load()
|
||||||
if training_data.get(agent_id):
|
if training_data.get(agent_id):
|
||||||
if self.crew is not None and hasattr(self.crew, "_train_iteration"):
|
training_data[agent_id][self.crew._train_iteration][
|
||||||
training_data[agent_id][self.crew._train_iteration][
|
"improved_output"
|
||||||
"improved_output"
|
] = result.output
|
||||||
] = result.output
|
CrewTrainingHandler(TRAINING_DATA_FILE).save(training_data)
|
||||||
CrewTrainingHandler(TRAINING_DATA_FILE).save(training_data)
|
|
||||||
else:
|
|
||||||
self._logger.log(
|
|
||||||
"error",
|
|
||||||
"Invalid crew or missing _train_iteration attribute.",
|
|
||||||
color="red",
|
|
||||||
)
|
|
||||||
|
|
||||||
if self.ask_for_human_input and human_feedback is not None:
|
if self.ask_for_human_input and human_feedback is not None:
|
||||||
training_data = {
|
training_data = {
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class TaskEvaluation(BaseModel):
|
|||||||
|
|
||||||
class TrainingTaskEvaluation(BaseModel):
|
class TrainingTaskEvaluation(BaseModel):
|
||||||
suggestions: List[str] = Field(
|
suggestions: List[str] = Field(
|
||||||
description="Based on the Human Feedbacks and the comparison between Initial Outputs and Improved outputs provide action items based on human_feedback for future tasks."
|
description="List of clear, actionable instructions derived from the Human Feedbacks to enhance the Agent's performance. Analyze the differences between Initial Outputs and Improved Outputs to generate specific action items for future tasks. Ensure all key and specific points from the human feedback are incorporated into these instructions."
|
||||||
)
|
)
|
||||||
quality: float = Field(
|
quality: float = Field(
|
||||||
description="A score from 0 to 10 evaluating on completion, quality, and overall performance from the improved output to the initial output based on the human feedback."
|
description="A score from 0 to 10 evaluating on completion, quality, and overall performance from the improved output to the initial output based on the human feedback."
|
||||||
@@ -107,16 +107,16 @@ class TaskEvaluator:
|
|||||||
final_aggregated_data = ""
|
final_aggregated_data = ""
|
||||||
for _, data in output_training_data.items():
|
for _, data in output_training_data.items():
|
||||||
final_aggregated_data += (
|
final_aggregated_data += (
|
||||||
f"Initial Output:\n{data.get('initial_output', '')}\n\n"
|
f"Initial Output:\n{data['initial_output']}\n\n"
|
||||||
f"Human Feedback:\n{data.get('human_feedback', '')}\n\n"
|
f"Human Feedback:\n{data['human_feedback']}\n\n"
|
||||||
f"Improved Output:\n{data.get('improved_output', '')}\n\n"
|
f"Improved Output:\n{data['improved_output']}\n\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
evaluation_query = (
|
evaluation_query = (
|
||||||
"Assess the quality of the training data based on the llm output, human feedback , and llm output improved result.\n\n"
|
"Assess the quality of the training data based on the llm output, human feedback , and llm output improved result.\n\n"
|
||||||
f"{final_aggregated_data}"
|
f"{final_aggregated_data}"
|
||||||
"Please provide:\n"
|
"Please provide:\n"
|
||||||
"- Based on the Human Feedbacks and the comparison between Initial Outputs and Improved outputs provide action items based on human_feedback for future tasks\n"
|
"- Provide a list of clear, actionable instructions derived from the Human Feedbacks to enhance the Agent's performance. Analyze the differences between Initial Outputs and Improved Outputs to generate specific action items for future tasks. Ensure all key and specificpoints from the human feedback are incorporated into these instructions.\n"
|
||||||
"- A score from 0 to 10 evaluating on completion, quality, and overall performance from the improved output to the initial output based on the human feedback\n"
|
"- A score from 0 to 10 evaluating on completion, quality, and overall performance from the improved output to the initial output based on the human feedback\n"
|
||||||
)
|
)
|
||||||
instructions = "I'm gonna convert this raw text into valid JSON."
|
instructions = "I'm gonna convert this raw text into valid JSON."
|
||||||
|
|||||||
Reference in New Issue
Block a user