CompressionManager is responsible for compressing tool call results to save context space while preserving critical information.
CompressionManager Attributes
| Parameter | Type | Default | Description |
|---|---|---|---|
model | Optional[Model] | None | Model used for compression |
compress_tool_results | bool | True | Flag to enable tool result compression |
compress_tool_results_limit | int | 3 | Number of uncompressed tool results before compression triggers |
compress_tool_call_instructions | Optional[str] | None | Custom prompt for compression. If not provided, uses the default compression prompt |
stats | Dict[str, Any] | {} | Tracks compression statistics (messages_compressed, original_size, compressed_size) |
CompressionManager Methods
should_compress(messages: List[Message]) -> bool
Checks whether compression should be triggered based on the number of uncompressed tool results.
Parameters:
messages: List of messages to check
bool: True if the number of uncompressed tool results meets or exceedscompress_tool_results_limit
compress(messages: List[Message]) -> None
Compresses all uncompressed tool results.
Parameters:
messages: List of messages containing tool results to compress
None: Modifies messages in place, settingcompressed_contenton each tool message
acompress(messages: List[Message]) -> None
Compresses all uncompressed tool results asynchronously.
Parameters:
messages: List of messages containing tool results to compress
None: Modifies messages in place, settingcompressed_contenton each tool message