feat: emit AgentExecutionCompletedEvent in agent adapters

- Added emission of AgentExecutionCompletedEvent in both LangGraphAgentAdapter and OpenAIAgentAdapter to signal task completion.
- Enhanced event handling to include agent, task, and output details for better tracking of execution results.
This commit is contained in:
lorenzejay
2025-04-14 12:45:18 -07:00
parent 5f4e645f10
commit a413b90174
2 changed files with 16 additions and 2 deletions

View File

@@ -16,6 +16,7 @@ from crewai.utilities import Logger
from crewai.utilities.converter import Converter
from crewai.utilities.events import crewai_event_bus
from crewai.utilities.events.agent_events import (
AgentExecutionCompletedEvent,
AgentExecutionErrorEvent,
AgentExecutionStartedEvent,
)
@@ -169,6 +170,12 @@ class LangGraphAgentAdapter(BaseAgentAdapter):
self._converter_adapter.post_process_result(final_answer)
or "Task execution completed but no clear answer was provided."
)
crewai_event_bus.emit(
self,
event=AgentExecutionCompletedEvent(
agent=self, task=task, output=final_answer
),
)
return final_answer

View File

@@ -12,6 +12,7 @@ from crewai.tools.agent_tools.agent_tools import AgentTools
from crewai.utilities import Logger
from crewai.utilities.events import crewai_event_bus
from crewai.utilities.events.agent_events import (
AgentExecutionCompletedEvent,
AgentExecutionErrorEvent,
AgentExecutionStartedEvent,
)
@@ -109,9 +110,15 @@ class OpenAIAgentAdapter(BaseAgentAdapter):
task=task,
),
)
# This is pretty much the agent_executor logic:
result = self.agent_executor.run_sync(self._openai_agent, task_prompt)
return self.handle_execution_result(result)
final_answer = self.handle_execution_result(result)
crewai_event_bus.emit(
self,
event=AgentExecutionCompletedEvent(
agent=self, task=task, output=final_answer
),
)
return final_answer
except Exception as e:
self._logger.log("error", f"Error executing OpenAI task: {str(e)}")