diff --git a/src/crewai/agent.py b/src/crewai/agent.py index a265f4d52..4ddd20e21 100644 --- a/src/crewai/agent.py +++ b/src/crewai/agent.py @@ -482,6 +482,7 @@ class Agent(BaseAgent): verbose=self.verbose, response_format=response_format, i18n=self.i18n, + original_agent=self, ) return lite_agent.kickoff(messages) diff --git a/src/crewai/lite_agent.py b/src/crewai/lite_agent.py index ea9c2738d..d458e6de0 100644 --- a/src/crewai/lite_agent.py +++ b/src/crewai/lite_agent.py @@ -150,6 +150,10 @@ class LiteAgent(BaseModel): default=[], description="Results of the tools used by the agent." ) + # Reference of Agent + original_agent: Optional[BaseAgent] = Field( + default=None, description="Reference to the agent that created this LiteAgent" + ) # Private Attributes _parsed_tools: List[CrewStructuredTool] = PrivateAttr(default_factory=list) _token_process: TokenProcess = PrivateAttr(default_factory=TokenProcess) @@ -158,7 +162,7 @@ class LiteAgent(BaseModel): _messages: List[Dict[str, str]] = PrivateAttr(default_factory=list) _iterations: int = PrivateAttr(default=0) _printer: Printer = PrivateAttr(default_factory=Printer) - + @model_validator(mode="after") def setup_llm(self): """Set up the LLM and other components after initialization.""" @@ -414,6 +418,7 @@ class LiteAgent(BaseModel): i18n=self.i18n, agent_key=self.key, agent_role=self.role, + agent=self.original_agent, ) except Exception as e: raise e diff --git a/src/crewai/tools/tool_usage.py b/src/crewai/tools/tool_usage.py index 889a8c272..78942fc39 100644 --- a/src/crewai/tools/tool_usage.py +++ b/src/crewai/tools/tool_usage.py @@ -179,12 +179,7 @@ class ToolUsage: if self.agent.fingerprint: event_data.update(self.agent.fingerprint) - crewai_event_bus.emit( - self, - ToolUsageStartedEvent( - **event_data - ), - ) + crewai_event_bus.emit(self,ToolUsageStartedEvent(**event_data)) started_at = time.time() from_cache = False