Skip to main content
Apply edit strategies when retrieving messages to manage context window size. The original session remains unchanged.

Current Context Size

The get_messages response includes this_time_tokens - the total token count of returned messages. Use this to:
  • Check current context window size
  • Decide when to apply edit strategies
  • Determine when to reset the prompt cache
result = client.sessions.get_messages(session_id="session-uuid")
print(f"Current tokens: {result.this_time_tokens}")

if result.this_time_tokens > 50000:
    # Apply strategies to reduce context
    result = client.sessions.get_messages(
        session_id="session-uuid",
        edit_strategies=[{"type": "token_limit", "params": {"limit_tokens": 30000}}]
    )

Basic Usage

from acontext import AcontextClient
import os

client = AcontextClient(api_key=os.getenv("ACONTEXT_API_KEY"))

result = client.sessions.get_messages(
    session_id="session-uuid",
    edit_strategies=[
        {"type": "token_limit", "params": {"limit_tokens": 20000}}
    ]
)
print(f"Messages: {len(result.items)}, Tokens: {result.this_time_tokens}")

Edit Strategies

Token Limit

Remove oldest messages until under token limit:
{"type": "token_limit", "params": {"limit_tokens": 20000}}

Remove Tool Results

Replace old tool results with placeholder, keep recent N, and optionally filter by token count:
{
    "type": "remove_tool_result",
    "params": {
        "keep_recent_n_tool_results": 3,
        "tool_result_placeholder": "Done",
        "keep_tools": ["important_tool"],
        "gt_token": 100  # only remove results with more than 100 tokens
    }
}

Remove Tool Call Params

Remove arguments from old tool calls, keep recent N, and optionally filter by token count:
{
    "type": "remove_tool_call_params",
    "params": {
        "keep_recent_n_tool_calls": 3,
        "keep_tools": ["important_tool"],
        "gt_token": 100  # only remove params with more than 100 tokens
    }
}

Middle Out

Remove messages from the middle, preserve head and tail:
{"type": "middle_out", "params": {"token_reduce_to": 5000}}

Combining Strategies

result = client.sessions.get_messages(
    session_id="session-uuid",
    edit_strategies=[
        {"type": "remove_tool_result", "params": {"keep_recent_n_tool_results": 3}},
        {"type": "token_limit", "params": {"limit_tokens": 30000}}
    ]
)

Get Raw Token Count

token_counts = client.sessions.get_token_counts(session_id="session-uuid")
print(f"Total tokens: {token_counts.total_tokens}")

Next Steps