Conversation Memory Compressor

Medium
Agents

Implement memory compression for agent context windows:

  1. estimate_tokens(text): Rough estimate (1 token ~ 0.75 words)
  2. compress(messages, strategy): Compress to fit max_tokens

Strategies:

  • truncate: Remove oldest messages first
  • summarize: Group old messages, replace with summary
  • selective: Keep system + recent + important (marked), drop rest

Message Format: {'role': 'user/assistant/system', 'content': '...', 'important': bool}

Return:

  • compressed: list of messages after compression
  • compression_ratio: original_tokens / final_tokens
  • dropped: number of messages removed

Priority Order (selective): System > Important > Recent > Old

Examples

Example 1:
Input: mc = MemoryCompressor(50); msgs = [{'role':'user','content':'hello world ' * 20}]; r = mc.compress(msgs, 'truncate'); r['compression_ratio'] > 1
Output: True
Explanation: Compression happened, ratio should be > 1

Starter Code

class MemoryCompressor:
    """
    Compress agent conversation history to fit context window.
    """
    
    def __init__(self, max_tokens=1000):
        self.max_tokens = max_tokens
        self.compression_strategies = []
    
    def estimate_tokens(self, text):
        """Rough token estimation (words / 0.75)"""
        # Your implementation here
        pass
    
    def compress(self, messages, strategy='summarize'):
        """
        Compress messages to fit max_tokens.
        Strategies: 'truncate', 'summarize', 'selective'
        
        Returns: {'compressed': [...], 'compression_ratio': float, 'dropped': int}
        """
        # Your implementation here
        pass
    
    def _truncate_oldest(self, messages, target_tokens):
        """Remove oldest messages until under budget"""
        # Your implementation here
        pass
    
    def _summarize_batch(self, messages):
        """Summarize a batch of messages (simulated)"""
        # Simulate: return '[Summary of N messages]'
        pass
Lines: 1Characters: 0
Ready
The AI Interview - Master AI/ML Interviews