diff --git a/src/crewai/agents/crew_agent_executor.py b/src/crewai/agents/crew_agent_executor.py index 8b3db9d85..bfe924d60 100644 --- a/src/crewai/agents/crew_agent_executor.py +++ b/src/crewai/agents/crew_agent_executor.py @@ -3,7 +3,13 @@ import re from typing import Any, Dict, List, Union from crewai.agents.agent_builder.base_agent_executor_mixin import CrewAgentExecutorMixin -from crewai.agents.parser import CrewAgentParser +from crewai.agents.parser import ( + FINAL_ANSWER_AND_PARSABLE_ACTION_ERROR_MESSAGE, + AgentAction, + AgentFinish, + CrewAgentParser, + OutputParserException, +) from crewai.agents.tools_handler import ToolsHandler from crewai.tools.tool_usage import ToolUsage, ToolUsageErrorException from crewai.utilities import I18N, Printer @@ -13,12 +19,6 @@ from crewai.utilities.exceptions.context_window_exceeding_exception import ( ) from crewai.utilities.logger import Logger from crewai.utilities.training_handler import CrewTrainingHandler -from crewai.agents.parser import ( - AgentAction, - AgentFinish, - OutputParserException, - FINAL_ANSWER_AND_PARSABLE_ACTION_ERROR_MESSAGE, -) class CrewAgentExecutor(CrewAgentExecutorMixin): @@ -313,9 +313,10 @@ class CrewAgentExecutor(CrewAgentExecutorMixin): ): training_data = CrewTrainingHandler(TRAINING_DATA_FILE).load() if training_data.get(agent_id): - training_data[agent_id][self.crew._train_iteration][ - "improved_output" - ] = result.output + if self.crew is not None and hasattr(self.crew, "_train_iteration"): + training_data[agent_id][self.crew._train_iteration][ + "improved_output" + ] = result.output CrewTrainingHandler(TRAINING_DATA_FILE).save(training_data) if self.ask_for_human_input and human_feedback is not None: diff --git a/src/crewai/project/annotations.py b/src/crewai/project/annotations.py index 3d1bea567..5315983d2 100644 --- a/src/crewai/project/annotations.py +++ b/src/crewai/project/annotations.py @@ -98,7 +98,8 @@ def crew(func) -> Callable[..., "Crew"]: # Sort tasks by their registration order sorted_task_names = sorted( - tasks, key=lambda name: task.registration_order.index(name) + tasks, + key=lambda name: task.registration_order.index(name), # type: ignore ) # Instantiate tasks in the order they were defined