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.
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!")
Domain
Subdomains
Functions
Dependencies
- anthropic
- anthropic.lib.tools
- json
Source
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