Sliding Window Memory Buffer

Easy
Agents

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 order
  • clear(): 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: 2
Explanation: 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
        pass
Lines: 1Characters: 0
Ready
The AI Interview - Master AI/ML Interviews