← Lesson
Context Windows
Joeven
Run
Reset
Python loads on first run
LIMIT = 24 def tok(s): return s.split() spec = tok("SPEC: never delete rows; prefer sql tool") history = [ tok("user: how many users?"), tok("assistant: I'll query"), tok("tool: users=920 timeout-timeout-timeout-timeout"), tok("assistant: retrying"), tok("tool: users=920"), tok("user: delete them actually"), ] def pack(spec, history, limit): pinned = list(spec) used = len(pinned) kept = [] for msg in reversed(history): if used + len(msg) > limit: continue kept.append(msg) used += len(msg) kept.reverse() packed = pinned + [w for msg in kept for w in msg] return packed, used packed, used = pack(spec, history, LIMIT) print("used", used, "/", LIMIT) print("packed:", " ".join(packed)) print("spec pinned?", packed[:3] == spec[:3]) print("last user kept?", "delete" in packed) def drop_oldest(spec, history, limit): msgs = [spec] + history flat = [] for msg in msgs: flat.extend(msg) if len(flat) <= limit: return flat return flat[len(flat) - limit :] dropped = drop_oldest(spec, history, LIMIT) print("drop oldest starts", dropped[:6]) print("drop oldest lost spec?", dropped[:3] != spec[:3])
Run to execute this in your browser. Nothing is sent to a server.