diff --git a/src/agents/memory/openai_conversations_session.py b/src/agents/memory/openai_conversations_session.py index 8e0641067c..8b1dcd4916 100644 --- a/src/agents/memory/openai_conversations_session.py +++ b/src/agents/memory/openai_conversations_session.py @@ -100,7 +100,6 @@ async def get_items(self, limit: int | None = None) -> list[TResponseInputItem]: else: async for item in self._openai_client.conversations.items.list( conversation_id=session_id, - limit=session_limit, order="desc", ): # calling model_dump() to make this serializable diff --git a/tests/memory/test_openai_conversations_session.py b/tests/memory/test_openai_conversations_session.py index d0075418d9..908b592765 100644 --- a/tests/memory/test_openai_conversations_session.py +++ b/tests/memory/test_openai_conversations_session.py @@ -232,6 +232,38 @@ async def test_get_items_zero_limit_returns_empty_without_api_call(self, mock_op assert session.session_id == "test_conversation_id" mock_openai_client.conversations.items.list.assert_not_called() + @pytest.mark.asyncio + async def test_get_items_applies_large_limit_after_provider_pagination( + self, mock_openai_client + ): + class ConversationItem: + def __init__(self, item_id: int) -> None: + self.item_id = item_id + + def model_dump(self, *, exclude_unset: bool) -> dict[str, int]: + assert exclude_unset is True + return {"item_id": self.item_id} + + yielded_item_ids: list[int] = [] + + async def descending_items(): + for item_id in range(101, -1, -1): + yielded_item_ids.append(item_id) + yield ConversationItem(item_id) + + mock_openai_client.conversations.items.list = MagicMock(return_value=descending_items()) + session = OpenAIConversationsSession( + conversation_id="test_id", openai_client=mock_openai_client + ) + + items = await session.get_items(limit=101) + + assert [cast(dict[str, int], item)["item_id"] for item in items] == list(range(1, 102)) + assert yielded_item_ids == list(range(101, 0, -1)) + mock_openai_client.conversations.items.list.assert_called_once_with( + conversation_id="test_id", order="desc" + ) + @pytest.mark.asyncio async def test_add_items_simple(self, mock_openai_client): """Test adding items to the conversation."""