From 109b32058b2e00b04d9e48663b40606bf28763ca Mon Sep 17 00:00:00 2001 From: Jesse Turner Date: Fri, 15 May 2026 14:36:07 +0000 Subject: [PATCH 1/2] fix: use correct 'score' field for memory relevance filtering (#365) The MemoryRecordSummary API returns 'score' not 'relevanceScore'. The old code used record.get("relevanceScore", config.relevance_score) which would always fall back to the threshold value, effectively never filtering any records. Changed to record.get("score", 0.0) to match the actual API response and the pattern already used in the Strands integration. --- src/bedrock_agentcore/memory/session.py | 2 +- tests/bedrock_agentcore/memory/models/test_models.py | 4 ++-- tests/bedrock_agentcore/memory/test_session.py | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/bedrock_agentcore/memory/session.py b/src/bedrock_agentcore/memory/session.py index 6f8a81c6..9624d12b 100644 --- a/src/bedrock_agentcore/memory/session.py +++ b/src/bedrock_agentcore/memory/session.py @@ -408,7 +408,7 @@ def _retrieve_memories_for_llm( memory_records = [ record for record in memory_records - if record.get("relevanceScore", config.relevance_score) >= config.relevance_score + if record.get("score", 0.0) >= config.relevance_score ] retrieved_memories.extend(memory_records) diff --git a/tests/bedrock_agentcore/memory/models/test_models.py b/tests/bedrock_agentcore/memory/models/test_models.py index a1e6b9e5..0a426c5d 100644 --- a/tests/bedrock_agentcore/memory/models/test_models.py +++ b/tests/bedrock_agentcore/memory/models/test_models.py @@ -132,7 +132,7 @@ def test_memory_record_initialization(self): "memoryRecordId": "record-123", "content": {"text": "This is a memory record"}, "namespace": "user/preferences/", - "relevanceScore": 0.95, + "score": 0.95, "createdAt": "2023-01-01T00:00:00Z", } memory_record = MemoryRecord(data) @@ -140,7 +140,7 @@ def test_memory_record_initialization(self): assert memory_record._data == data assert memory_record.memoryRecordId == "record-123" assert memory_record["content"]["text"] == "This is a memory record" - assert memory_record.get("relevanceScore") == 0.95 + assert memory_record.get("score") == 0.95 def test_memory_record_dict_access(self): """Test MemoryRecord dictionary-like access.""" diff --git a/tests/bedrock_agentcore/memory/test_session.py b/tests/bedrock_agentcore/memory/test_session.py index a03a4a98..f9e0dde7 100644 --- a/tests/bedrock_agentcore/memory/test_session.py +++ b/tests/bedrock_agentcore/memory/test_session.py @@ -2881,9 +2881,9 @@ def test_process_turn_with_llm_with_relevance_score_filtering(self): # Mock search_long_term_memories to return records with different relevance scores mock_memories = [ - {"content": {"text": "High relevance"}, "memoryRecordId": "rec-1", "relevanceScore": 0.8}, - {"content": {"text": "Low relevance"}, "memoryRecordId": "rec-2", "relevanceScore": 0.2}, - {"content": {"text": "Medium relevance"}, "memoryRecordId": "rec-3", "relevanceScore": 0.5}, + {"content": {"text": "High relevance"}, "memoryRecordId": "rec-1", "score": 0.8}, + {"content": {"text": "Low relevance"}, "memoryRecordId": "rec-2", "score": 0.2}, + {"content": {"text": "Medium relevance"}, "memoryRecordId": "rec-3", "score": 0.5}, ] with patch.object(manager, "search_long_term_memories", return_value=mock_memories): # Mock add_turns From 88cf59b7ae491b3eeaa6bd14eb2f3d44c3de09e6 Mon Sep 17 00:00:00 2001 From: Jesse Turner Date: Fri, 15 May 2026 14:52:33 +0000 Subject: [PATCH 2/2] fix: use threshold as default when score field is absent Records without a score field (e.g. exact-match retrievals) should pass through the relevance filter rather than being silently dropped. --- src/bedrock_agentcore/memory/session.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bedrock_agentcore/memory/session.py b/src/bedrock_agentcore/memory/session.py index 9624d12b..63309437 100644 --- a/src/bedrock_agentcore/memory/session.py +++ b/src/bedrock_agentcore/memory/session.py @@ -408,7 +408,7 @@ def _retrieve_memories_for_llm( memory_records = [ record for record in memory_records - if record.get("score", 0.0) >= config.relevance_score + if record.get("score", config.relevance_score) >= config.relevance_score ] retrieved_memories.extend(memory_records)