diff --git a/src/crewai/memory/storage/mem0_storage.py b/src/crewai/memory/storage/mem0_storage.py index ccf8cc810..bbfe71a95 100644 --- a/src/crewai/memory/storage/mem0_storage.py +++ b/src/crewai/memory/storage/mem0_storage.py @@ -117,7 +117,7 @@ class Mem0Storage(Storage): # Discard the filters for now since we create the filters # automatically when the crew is created. results = self.memory.search(**params) - return [r for r in results if r["score"] >= score_threshold] + return [r for r in results['results'] if r["score"] >= score_threshold] def _get_user_id(self) -> str: return self._get_config().get("user_id", "") diff --git a/tests/storage/test_mem0_storage.py b/tests/storage/test_mem0_storage.py index f9e56739f..123792f80 100644 --- a/tests/storage/test_mem0_storage.py +++ b/tests/storage/test_mem0_storage.py @@ -15,6 +15,7 @@ from crewai.task import Task class MockCrew: def __init__(self, memory_config): self.memory_config = memory_config + self.agents = [] @pytest.fixture @@ -153,3 +154,39 @@ def test_mem0_storage_with_explict_config( mem0_storage_with_memory_client_using_explictly_config.memory_config == expected_config ) + + +def test_mem0_storage_search(mem0_storage_with_memory_client_using_config_from_crew, mock_mem0_memory_client): + """Test that Mem0Storage search correctly handles the response format""" + mock_search_response = { + 'results': [ + { + 'id': '1', + 'score': 0.9, + 'metadata': {'type': 'short_term'}, + 'context': 'test context 1' + }, + { + 'id': '2', + 'score': 0.8, + 'metadata': {'type': 'short_term'}, + 'context': 'test context 2' + }, + { + 'id': '3', + 'score': 0.3, # Below threshold + 'metadata': {'type': 'short_term'}, + 'context': 'test context 3' + } + ] + } + + mock_mem0_memory_client.search.return_value = mock_search_response + + results = mem0_storage_with_memory_client_using_config_from_crew.search("test query", score_threshold=0.5) + + mock_mem0_memory_client.search.assert_called_once() + + assert len(results) == 2 + assert results[0]['score'] == 0.9 + assert results[1]['score'] == 0.8