diff --git a/src/bedrock_agentcore/memory/constants.py b/src/bedrock_agentcore/memory/constants.py index 6ab3a444..ba4687d6 100644 --- a/src/bedrock_agentcore/memory/constants.py +++ b/src/bedrock_agentcore/memory/constants.py @@ -157,7 +157,7 @@ class RetrievalConfig(BaseModel): retrieval_query: Optional custom query for semantic search (default: None) """ - top_k: int = Field(default=10, gt=1, le=100) + top_k: int = Field(default=10, ge=1, le=100) relevance_score: float = Field(default=0.0, ge=0.0, le=1.0) strategy_id: Optional[str] = None retrieval_query: Optional[str] = None diff --git a/tests/bedrock_agentcore/memory/test_session.py b/tests/bedrock_agentcore/memory/test_session.py index 3108587a..d33cafcc 100644 --- a/tests/bedrock_agentcore/memory/test_session.py +++ b/tests/bedrock_agentcore/memory/test_session.py @@ -3940,3 +3940,17 @@ def test_get_last_k_turns_explicit_max_results(self): manager.get_last_k_turns(actor_id="user-123", session_id="session-456", k=200, max_results=50) call_kwargs = manager._data_plane_client.list_events.call_args[1] assert call_kwargs["maxResults"] == 50 + + +def test_retrieval_config_top_k_allows_one(): + """top_k=1 (single best-scoring record) is valid; the SDK itself calls + retrieve_memories(top_k=1). The lower bound must be inclusive (ge=1).""" + import pytest as _pytest + from pydantic import ValidationError + + assert RetrievalConfig(top_k=1).top_k == 1 # must not raise + # bounds still enforced on either side + with _pytest.raises(ValidationError): + RetrievalConfig(top_k=0) + with _pytest.raises(ValidationError): + RetrievalConfig(top_k=101)