Implement a sliding window memory buffer that stores the most recent N messages. When the buffer is full and a new message arrives, the oldest message should be evicted (FIFO).
Requirements:
add(role, content): Add message as dict{'role': role, 'content': content}get_recent(n): Return last n messages in chronological orderclear(): Remove all messages- Maintain max_size constraint strictly
Edge Cases:
- n > current size should return all messages
- n=None returns all messages
- Empty memory should return empty list
Examples
Example 1:
Input:
mem = SlidingWindowMemory(3); mem.add('user', 'Hi'); mem.add('assistant', 'Hello'); mem.get_recent()Output:
[{'role': 'user', 'content': 'Hi'}, {'role': 'assistant', 'content': 'Hello'}]Explanation: Two messages added, both retrieved in order
Example 2:
Input:
mem = SlidingWindowMemory(2); [mem.add('user', str(i)) for i in range(3)]; len(mem.messages)Output:
2Explanation: Max size 2, 3 messages added, oldest evicted
Starter Code
class SlidingWindowMemory:
"""
Simple sliding window memory for conversation history.
Maintains last N messages, evicting oldest when full.
"""
def __init__(self, max_size=5):
self.max_size = max_size
self.messages = []
def add(self, role, content):
"""Add message with role ('user', 'assistant', 'system')"""
# Your implementation here
pass
def get_recent(self, n=None):
"""Get last n messages (or all if n is None)"""
# Your implementation here
pass
def clear(self):
"""Clear all messages"""
# Your implementation here
passPython3
ReadyLines: 1Characters: 0
Ready