MediumContext ManagementPython 3

Context Window Packer

Select system and recent conversation messages without exceeding a token budget.

30m3 sample tests6 hidden tests

Choose which chat messages fit into a bounded .

Requirements

  • Define pack_messages(messages, max_tokens).
  • Each message is a dict with id, role, and tokens.
  • Return the selected message IDs in original order.
  • Keep the first system message if it fits.
  • Ignore every later system message, even when the first system message exceeds the .
  • Fill the remaining budget by scanning every non-system message from newest to oldest, rather than requiring a contiguous newest suffix.
  • Skip any message that doesn't fit and keep scanning older ones.
  • Never exceed max_tokens.

Example

python
1messages = [ 2 {"id": "sys", "role": "system", "tokens": 2}, 3 {"id": "old", "role": "user", "tokens": 3}, 4 {"id": "new", "role": "assistant", "tokens": 4}, 5] 6assert pack_messages(messages, 6) == ["sys", "new"] 7 8messages = [ 9 {"id": "older", "role": "user", "tokens": 2}, 10 {"id": "oversized", "role": "assistant", "tokens": 8}, 11 {"id": "newest", "role": "user", "tokens": 2}, 12] 13assert pack_messages(messages, 4) == ["older", "newest"]

Constraints

  • Preserve conversation order in the returned IDs.
  • Prefer recency for non-system messages.
  • Don't mutate the input messages.

Editor