diff --git a/src/crewai/knowledge/storage/knowledge_storage.py b/src/crewai/knowledge/storage/knowledge_storage.py index ac76e9a80..f722a50ef 100644 --- a/src/crewai/knowledge/storage/knowledge_storage.py +++ b/src/crewai/knowledge/storage/knowledge_storage.py @@ -11,6 +11,8 @@ import chromadb.errors from chromadb.api import ClientAPI from chromadb.api.types import OneOrMany from chromadb.config import Settings +from pydantic.warnings import PydanticDeprecatedSince211 +import warnings from crewai.knowledge.storage.base_knowledge_storage import BaseKnowledgeStorage from crewai.rag.embeddings.configurator import EmbeddingConfigurator @@ -85,6 +87,15 @@ class KnowledgeStorage(BaseKnowledgeStorage): raise Exception("Collection not initialized") def initialize_knowledge_storage(self): + # Suppress deprecation warnings from chromadb, which are not relevant to us + # TODO: Remove this once we upgrade chromadb to at least 1.0.8. + warnings.filterwarnings( + "ignore", + category=PydanticDeprecatedSince211, + message=r".*'model_fields'.*is deprecated.*", + module=r"^chromadb(\.|$)", + ) + self.app = create_persistent_client( path=os.path.join(db_storage_path(), "knowledge"), settings=Settings(allow_reset=True), diff --git a/src/crewai/memory/storage/rag_storage.py b/src/crewai/memory/storage/rag_storage.py index eaa955fd3..6cab8e401 100644 --- a/src/crewai/memory/storage/rag_storage.py +++ b/src/crewai/memory/storage/rag_storage.py @@ -12,6 +12,8 @@ from crewai.rag.embeddings.configurator import EmbeddingConfigurator from crewai.utilities.chromadb import create_persistent_client from crewai.utilities.constants import MAX_FILE_NAME_LENGTH from crewai.utilities.paths import db_storage_path +import warnings +from pydantic.warnings import PydanticDeprecatedSince211 @contextlib.contextmanager @@ -62,6 +64,15 @@ class RAGStorage(BaseRAGStorage): def _initialize_app(self): from chromadb.config import Settings + # Suppress deprecation warnings from chromadb, which are not relevant to us + # TODO: Remove this once we upgrade chromadb to at least 1.0.8. + warnings.filterwarnings( + "ignore", + category=PydanticDeprecatedSince211, + message=r".*'model_fields'.*is deprecated.*", + module=r"^chromadb(\.|$)", + ) + self._set_embedder_config() self.app = create_persistent_client( diff --git a/tests/memory/short_term_memory_test.py b/tests/memory/short_term_memory_test.py index 020b3a94c..cb7ec9967 100644 --- a/tests/memory/short_term_memory_test.py +++ b/tests/memory/short_term_memory_test.py @@ -1,5 +1,6 @@ from unittest.mock import patch, ANY from collections import defaultdict +from pydantic.warnings import PydanticDeprecatedSince211 import pytest from crewai.agent import Agent @@ -35,10 +36,12 @@ def short_term_memory(): return ShortTermMemory(crew=Crew(agents=[agent], tasks=[task])) +@pytest.mark.filterwarnings("error", category=PydanticDeprecatedSince211) def test_short_term_memory_search_events(short_term_memory): events = defaultdict(list) with crewai_event_bus.scoped_handlers(): + @crewai_event_bus.on(MemoryQueryStartedEvent) def on_search_started(source, event): events["MemoryQueryStartedEvent"].append(event) @@ -59,33 +62,35 @@ def test_short_term_memory_search_events(short_term_memory): assert len(events["MemoryQueryFailedEvent"]) == 0 assert dict(events["MemoryQueryStartedEvent"][0]) == { - 'timestamp': ANY, - 'type': 'memory_query_started', - 'source_fingerprint': None, - 'source_type': 'short_term_memory', - 'fingerprint_metadata': None, - 'query': 'test value', - 'limit': 3, - 'score_threshold': 0.35 + "timestamp": ANY, + "type": "memory_query_started", + "source_fingerprint": None, + "source_type": "short_term_memory", + "fingerprint_metadata": None, + "query": "test value", + "limit": 3, + "score_threshold": 0.35, } assert dict(events["MemoryQueryCompletedEvent"][0]) == { - 'timestamp': ANY, - 'type': 'memory_query_completed', - 'source_fingerprint': None, - 'source_type': 'short_term_memory', - 'fingerprint_metadata': None, - 'query': 'test value', - 'results': [], - 'limit': 3, - 'score_threshold': 0.35, - 'query_time_ms': ANY + "timestamp": ANY, + "type": "memory_query_completed", + "source_fingerprint": None, + "source_type": "short_term_memory", + "fingerprint_metadata": None, + "query": "test value", + "results": [], + "limit": 3, + "score_threshold": 0.35, + "query_time_ms": ANY, } +@pytest.mark.filterwarnings("error", category=PydanticDeprecatedSince211) def test_short_term_memory_save_events(short_term_memory): events = defaultdict(list) with crewai_event_bus.scoped_handlers(): + @crewai_event_bus.on(MemorySaveStartedEvent) def on_save_started(source, event): events["MemorySaveStartedEvent"].append(event) @@ -105,28 +110,30 @@ def test_short_term_memory_save_events(short_term_memory): assert len(events["MemorySaveFailedEvent"]) == 0 assert dict(events["MemorySaveStartedEvent"][0]) == { - 'timestamp': ANY, - 'type': 'memory_save_started', - 'source_fingerprint': None, - 'source_type': 'short_term_memory', - 'fingerprint_metadata': None, - 'value': 'test value', - 'metadata': {'task': 'test_task'}, - 'agent_role': "test_agent" + "timestamp": ANY, + "type": "memory_save_started", + "source_fingerprint": None, + "source_type": "short_term_memory", + "fingerprint_metadata": None, + "value": "test value", + "metadata": {"task": "test_task"}, + "agent_role": "test_agent", } assert dict(events["MemorySaveCompletedEvent"][0]) == { - 'timestamp': ANY, - 'type': 'memory_save_completed', - 'source_fingerprint': None, - 'source_type': 'short_term_memory', - 'fingerprint_metadata': None, - 'value': 'test value', - 'metadata': {'task': 'test_task', 'agent': 'test_agent'}, - 'agent_role': "test_agent", - 'save_time_ms': ANY + "timestamp": ANY, + "type": "memory_save_completed", + "source_fingerprint": None, + "source_type": "short_term_memory", + "fingerprint_metadata": None, + "value": "test value", + "metadata": {"task": "test_task", "agent": "test_agent"}, + "agent_role": "test_agent", + "save_time_ms": ANY, } + +@pytest.mark.filterwarnings("error", category=PydanticDeprecatedSince211) def test_save_and_search(short_term_memory): memory = ShortTermMemoryItem( data="""test value test value test value test value test value test value