File size: 1,374 Bytes
fe617ac
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import asyncio
from langchain_core.messages import HumanMessage, AIMessage
from src.core.context_compressor import compressor

async def run_benchmark():
    print("🚀 Starting Context Compression Benchmark...")
    
    # 1. Simulate Long History (12 messages, 6 turns)
    history = []
    for i in range(1, 7):
        history.append(HumanMessage(content=f"User question {i}: I like sci-fi."))
        history.append(AIMessage(content=f"AI answer {i}: Here is a sci-fi book."))
        
    print(f"Original History Length: {len(history)} messages")
    
    # 2. Compress
    print("Compressing...")
    # Mock LLM generation usually takes time, so latency includes API call
    compressed = await compressor.compress_history(history)
    
    print(f"Compressed History Length: {len(compressed)} messages")
    
    # 3. Validation
    # Expected: 1 SystemMessage (Summary) + 4 Messages (Recent) = 5
    if len(compressed) == 5:
        print("✅ SUCCESS: History compressed to 5 messages.")
        print(f"Summary Content: {compressed[0].content}")
        print(f"Oldest Retained Message: {compressed[1].content}")
    else:
        print(f"❌ FAILURE: Expected 5 messages, got {len(compressed)}")
        for i, m in enumerate(compressed):
            print(f"[{i}] {type(m).__name__}: {m.content}")

if __name__ == "__main__":
    asyncio.run(run_benchmark())