Keep the last N turns plus a pinned system prompt within a token budget.
The full prompt is available without an account.
Implement SlidingMemory(max_tokens, count_tokens).
- add(role, content) appends a message.
- render() returns a list of messages that fits within max_tokens,
always keeping the first system message if present, and dropping the
oldest non-system messages until the budget fits.
Read-only Python 3.12 preview. Sign in to edit and execute it.
class SlidingMemory:
def __init__(self, max_tokens: int, count_tokens):
self.max_tokens = max_tokens
self.count_tokens = count_tokens
self.messages = []
def add(self, role: str, content: str) -> None:
# TODO
pass
def render(self) -> list[dict]:
# TODO
return []