Home / File/ auto_compaction.py — anthropic-sdk-python Source File

auto_compaction.py — anthropic-sdk-python Source File

Architecture documentation for auto_compaction.py, a python file in the anthropic-sdk-python codebase. 3 imports, 0 dependents.

File python AnthropicClient SyncAPI 3 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  9f659f2e_724c_fa6e_9bf2_51745746d7f3["auto_compaction.py"]
  28b0c811_20f6_fc4a_4b48_7fb9e87bf7e5["json"]
  9f659f2e_724c_fa6e_9bf2_51745746d7f3 --> 28b0c811_20f6_fc4a_4b48_7fb9e87bf7e5
  d10c5377_2939_0f0b_cc44_8759393f2853["anthropic"]
  9f659f2e_724c_fa6e_9bf2_51745746d7f3 --> d10c5377_2939_0f0b_cc44_8759393f2853
  401f8a6c_a177_4dcd_662b_ade2f5d17081["anthropic.lib.tools"]
  9f659f2e_724c_fa6e_9bf2_51745746d7f3 --> 401f8a6c_a177_4dcd_662b_ade2f5d17081
  style 9f659f2e_724c_fa6e_9bf2_51745746d7f3 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Show the full summary content after compaction"""

import json

from anthropic import Anthropic
from anthropic.lib.tools import beta_tool


@beta_tool
def search(query: str) -> str:
    """Search for information."""
    return json.dumps(
        {
            "results": [
                {"title": f"Result for {query}", "content": "Lorem ipsum " * 100},
                {"title": f"More on {query}", "content": "Detailed info " * 100},
            ]
        }
    )


@beta_tool
def done(summary: str) -> str:  # noqa: ARG001
    """Call when finished."""
    return "Complete"


client = Anthropic()

runner = client.beta.messages.tool_runner(
    model="claude-sonnet-4-20250514",
    max_tokens=4096,
    tools=[search, done],
    messages=[
        {
            "role": "user",
            "content": "You MUST search for EACH of these animals ONE BY ONE: dogs, cats, birds, fish, horses, elephants, lions, tigers, bears, wolves. After searching for ALL of them, call done.",
        }
    ],
    compaction_control={
        "enabled": True,
        "context_token_threshold": 3000,  # Even lower threshold
    },
)

prev_msg_count = 0
for i, message in enumerate(runner):
    curr_msg_count = len(list(runner._params["messages"]))
    print(f"Turn {i + 1}: {message.usage.input_tokens} input tokens, {curr_msg_count} messages")

    if curr_msg_count < prev_msg_count:
        print("=" * 70)
        print("🔄 COMPACTION OCCURRED!")
        print("=" * 70)
        print(f"Messages went from {prev_msg_count} → {curr_msg_count}")
        print(f"Input tokens: {message.usage.input_tokens}")
        print("\nNEW MESSAGES LIST:")
        print("-" * 70)

        for msg in runner._params["messages"]:
            role = msg.get("role", "?")
            content = msg.get("content", "")

            if isinstance(content, list):
                for block in content:
                    if isinstance(block, dict) and block.get("type") == "text":
                        print(f"\n[{role}] TEXT BLOCK:")
                        print(block.get("text", ""))
            elif isinstance(content, str):
                print(f"\n[{role}]:")
                print(content)

        print("-" * 70)

    prev_msg_count = curr_msg_count

print("\n✅ Done!")

Subdomains

Dependencies

  • anthropic
  • anthropic.lib.tools
  • json

Frequently Asked Questions

What does auto_compaction.py do?
auto_compaction.py is a source file in the anthropic-sdk-python codebase, written in python. It belongs to the AnthropicClient domain, SyncAPI subdomain.
What functions are defined in auto_compaction.py?
auto_compaction.py defines 3 function(s): curr_msg_count, done, search.
What does auto_compaction.py depend on?
auto_compaction.py imports 3 module(s): anthropic, anthropic.lib.tools, json.
Where is auto_compaction.py in the architecture?
auto_compaction.py is located at examples/auto_compaction.py (domain: AnthropicClient, subdomain: SyncAPI, directory: examples).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free