From cb3865a0429fc4d9a81071a866218dceb84445df Mon Sep 17 00:00:00 2001 From: Lorenze Jay Date: Mon, 27 Jan 2025 09:28:20 -0800 Subject: [PATCH] hopefully fixes test --- src/crewai/agents/agent_builder/base_agent.py | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/crewai/agents/agent_builder/base_agent.py b/src/crewai/agents/agent_builder/base_agent.py index 7f76c1d34..c9c4368e1 100644 --- a/src/crewai/agents/agent_builder/base_agent.py +++ b/src/crewai/agents/agent_builder/base_agent.py @@ -266,13 +266,34 @@ class BaseAgent(ABC, BaseModel): "cache_handler", "llm", "knowledge_sources", + "_knowledge", } - # Copy llm and clear callbacks + # Copy llm existing_llm = shallow_copy(self.llm) - existing_knowledge_sources = shallow_copy(self.knowledge_sources) + + # Properly copy knowledge sources if they exist + existing_knowledge_sources = None + if self.knowledge_sources: + # Create a shared storage instance for all knowledge sources + shared_storage = ( + self.knowledge_sources[0].storage if self.knowledge_sources else None + ) + + existing_knowledge_sources = [] + for source in self.knowledge_sources: + copied_source = ( + source.model_copy() + if hasattr(source, "model_copy") + else shallow_copy(source) + ) + # Ensure all copied sources use the same storage instance + copied_source.storage = shared_storage + existing_knowledge_sources.append(copied_source) + copied_data = self.model_dump(exclude=exclude) copied_data = {k: v for k, v in copied_data.items() if v is not None} + copied_agent = type(self)( **copied_data, llm=existing_llm,