Diese Funktion ist für Zero Data Retention (ZDR) qualifiziert. Wenn deine Organisation eine ZDR-Vereinbarung hat, werden Daten, die über diese Funktion gesendet werden, nicht gespeichert, nachdem die API-Antwort zurückgegeben wurde.
Für die meisten Anwendungsfälle ist serverseitige Kompaktierung die primäre Strategie zur Verwaltung von Kontext in langlaufenden Gesprächen. Die Strategien auf dieser Seite sind nützlich für spezifische Szenarien, in denen du eine feinere Kontrolle darüber benötigst, welche Inhalte gelöscht werden.
„Context editing" (Kontextbearbeitung) ermöglicht es dir, bestimmte Inhalte selektiv aus dem Gesprächsverlauf zu löschen, während dieser wächst. Über die Optimierung von Kosten und das Einhalten von Limits hinaus geht es darum, aktiv zu kuratieren, was Claude sieht: Kontext ist eine endliche Ressource mit abnehmendem Grenznutzen, und irrelevante Inhalte beeinträchtigen den Fokus des Modells. Kontextbearbeitung gibt dir feingranulare Laufzeitkontrolle über diese Kuratierung. Für die allgemeineren Prinzipien hinter dem Kontextmanagement siehe Effective context engineering. Diese Seite behandelt:
| Ansatz | Wo er ausgeführt wird | Strategien | Funktionsweise |
|---|---|---|---|
| Serverseitig | API | Löschen von Tool-Ergebnissen (clear_tool_uses_20250919)Löschen von Thinking-Blöcken ( clear_thinking_20251015) | Wird angewendet, bevor der Prompt Claude erreicht. Löscht bestimmte Inhalte aus dem Gesprächsverlauf. Jede Strategie kann unabhängig konfiguriert werden. |
| Clientseitig | SDK | Kompaktierung | Verfügbar in den Python-, TypeScript- und Ruby-SDKs bei Verwendung von tool_runner. Generiert eine Zusammenfassung und ersetzt den vollständigen Gesprächsverlauf. Siehe Clientseitige Kompaktierung. |
Kontextbearbeitung befindet sich in der Beta-Phase mit Unterstützung für das Löschen von Tool-Ergebnissen und das Löschen von Thinking-Blöcken. Um sie zu aktivieren, verwende den Beta-Header context-management-2025-06-27 in deinen API-Anfragen.
Teile Feedback zu diesem Feature über das Feedback-Formular.
Die Strategie clear_tool_uses_20250919 löscht Tool-Ergebnisse, wenn der Gesprächskontext über deinen konfigurierten Schwellenwert hinauswächst. Dies ist besonders nützlich für agentische Workflows mit intensiver Tool-Nutzung. Ältere Tool-Ergebnisse (wie Dateiinhalte oder Suchergebnisse) werden nicht mehr benötigt, sobald Claude sie verarbeitet hat.
Bei Aktivierung löscht die API automatisch die ältesten Tool-Ergebnisse in chronologischer Reihenfolge. Die API ersetzt jedes gelöschte Ergebnis durch Platzhaltertext, damit Claude weiß, dass es entfernt wurde. Standardmäßig werden nur Tool-Ergebnisse gelöscht. Du kannst optional sowohl Tool-Ergebnisse als auch Tool-Aufrufe (die Tool-Use-Parameter) löschen, indem du clear_tool_inputs auf true setzt.
Die Strategie clear_thinking_20251015 verwaltet thinking-Blöcke in Gesprächen, wenn erweitertes Denken aktiviert ist. Diese Strategie gibt dir Kontrolle über die Beibehaltung von Thinking-Blöcken: Du kannst wählen, mehr Thinking-Blöcke beizubehalten, um die Kontinuität des Denkprozesses zu wahren, oder sie aggressiver zu löschen, um Platz im Kontext zu sparen.
Standardverhalten: Der Standard variiert je nach Modellklasse.
| Modellklasse | Alle vorherigen Thinking-Blöcke behalten | Nur Thinking-Blöcke des letzten Turns behalten |
|---|---|---|
| Opus | Claude Opus 4.5 und später | Claude Opus 4.1 (veraltet) und früher |
| Sonnet | Claude Sonnet 4.6 und später | Claude Sonnet 4.5 und früher |
| Haiku | (keine) | Alle Modelle bis einschließlich Claude Haiku 4.5 |
Verwende diese Strategie, um den Standard zu überschreiben. Wenn dein Code über mehrere Modellstufen hinweg läuft, setze keep explizit, anstatt dich auf den modellspezifischen Standard zu verlassen.
Ein Assistant-Gesprächsturn kann mehrere Content-Blöcke enthalten (zum Beispiel bei der Verwendung von Tools) und mehrere Thinking-Blöcke (zum Beispiel bei interleaved thinking).
Kontextbearbeitung wird serverseitig angewendet, bevor der Prompt Claude erreicht. Deine Client-Anwendung behält den vollständigen, unveränderten Gesprächsverlauf bei. Du musst deinen Client-Zustand nicht mit der bearbeiteten Version synchronisieren. Verwalte deinen vollständigen Gesprächsverlauf weiterhin lokal wie gewohnt.
Die Interaktion der Kontextbearbeitung mit Prompt-Caching variiert je nach Strategie:
Löschen von Tool-Ergebnissen: Invalidiert gecachte Prompt-Präfixe, wenn Inhalte gelöscht werden. Um dies zu berücksichtigen, lösche genügend Token, damit sich die Cache-Invalidierung lohnt. Verwende den Parameter clear_at_least, um sicherzustellen, dass jedes Mal eine Mindestanzahl von Token gelöscht wird. Du zahlst Cache-Schreibkosten jedes Mal, wenn Inhalte gelöscht werden, aber nachfolgende Anfragen können das neu gecachte Präfix wiederverwenden.
Löschen von Thinking-Blöcken: Wenn Thinking-Blöcke im Kontext behalten (nicht gelöscht) werden, bleibt der Prompt-Cache erhalten, was Cache-Treffer ermöglicht und die Kosten für Input-Token reduziert. Wenn Thinking-Blöcke gelöscht werden, wird der Cache an der Stelle invalidiert, an der das Löschen erfolgt. Konfiguriere den Parameter keep basierend darauf, ob du Cache-Performance oder Verfügbarkeit des Kontextfensters priorisieren möchtest.
Kontextbearbeitung ist auf allen unterstützten Claude-Modellen verfügbar.
Der einfachste Weg, das Löschen von Tool-Ergebnissen zu aktivieren, besteht darin, nur den Strategietyp anzugeben. Alle anderen Konfigurationsoptionen verwenden ihre Standardwerte:
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[{"role": "user", "content": "Search for recent developments in AI"}],
tools=[{"type": "web_search_20250305", "name": "web_search"}],
betas=["context-management-2025-06-27"],
context_management={"edits": [{"type": "clear_tool_uses_20250919"}]},
)Du kannst das Verhalten beim Löschen von Tool-Ergebnissen mit zusätzlichen Parametern anpassen:
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Create a simple command line calculator app using Python",
}
],
tools=[
{
"type": "text_editor_20250728",
"name": "str_replace_based_edit_tool",
"max_characters": 10000,
},
{"type": "web_search_20250305", "name": "web_search", "max_uses": 3},
],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
# Löse das Leeren aus, wenn der Schwellenwert überschritten wird
"trigger": {"type": "input_tokens", "value": 30000},
# Anzahl der Tool-Nutzungen, die nach dem Leeren behalten werden
"keep": {"type": "tool_uses", "value": 3},
# Optional: Lösche mindestens so viele Token
"clear_at_least": {"type": "input_tokens", "value": 5000},
# Schließe diese Tools vom Leeren aus
"exclude_tools": ["web_search"],
}
]
},
)Aktiviere das Löschen von Thinking-Blöcken, um Kontext und Prompt-Caching effektiv zu verwalten, wenn erweitertes Denken aktiviert ist:
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=16000,
messages=[...],
thinking={"type": "enabled", "budget_tokens": 10000},
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_thinking_20251015",
"keep": {"type": "thinking_turns", "value": 2},
}
]
},
)Die Strategie clear_thinking_20251015 unterstützt die folgende Konfiguration:
| Konfigurationsoption | Standard | Beschreibung |
|---|---|---|
keep | Modellspezifisch | Definiert, wie viele aktuelle Assistant-Turns mit Thinking-Blöcken beibehalten werden sollen. Verwende {type: "thinking_turns", value: N}, wobei N > 0 sein muss, um die letzten N Turns zu behalten, oder "all", um alle Thinking-Blöcke zu behalten. Opus 4.5+ und Sonnet 4.6+: alle Turns. Frühere Opus/Sonnet und alle Haiku: nur letzter Turn. |
Beispielkonfigurationen:
Thinking-Blöcke der letzten 3 Assistant-Turns behalten:
{
"type": "clear_thinking_20251015",
"keep": {
"type": "thinking_turns",
"value": 3
}
}Alle Thinking-Blöcke behalten (maximiert Cache-Treffer):
{
"type": "clear_thinking_20251015",
"keep": "all"
}Du kannst sowohl das Löschen von Thinking-Blöcken als auch das Löschen von Tool-Ergebnissen zusammen verwenden:
Bei Verwendung mehrerer Strategien muss die Strategie clear_thinking_20251015 zuerst im edits-Array aufgeführt werden.
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=16000,
messages=[...],
thinking={"type": "enabled", "budget_tokens": 10000},
tools=[...],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_thinking_20251015",
"keep": {"type": "thinking_turns", "value": 2},
},
{
"type": "clear_tool_uses_20250919",
"trigger": {"type": "input_tokens", "value": 50000},
"keep": {"type": "tool_uses", "value": 5},
},
]
},
)| Konfigurationsoption | Standard | Beschreibung |
|---|---|---|
trigger | 100.000 Input-Token | Definiert, wann die Kontextbearbeitungsstrategie aktiviert wird. Sobald der Prompt diesen Schwellenwert überschreitet, beginnt das Löschen. Du kannst diesen Wert entweder in input_tokens oder tool_uses angeben. |
keep | 3 Tool-Uses | Definiert, wie viele aktuelle Tool-Use/Result-Paare nach dem Löschen beibehalten werden sollen. Die API entfernt die ältesten Tool-Interaktionen zuerst und bewahrt die neuesten. |
clear_at_least | Keine | Stellt sicher, dass jedes Mal, wenn die Strategie aktiviert wird, eine Mindestanzahl von Token gelöscht wird. Wenn die API nicht mindestens die angegebene Menge löschen kann, wird die Strategie nicht angewendet. Dies hilft zu bestimmen, ob sich das Löschen von Kontext lohnt, auch wenn dadurch dein Prompt-Cache ungültig wird. |
exclude_tools | Keine | Liste von Tool-Namen, deren Tool-Uses und -Ergebnisse niemals gelöscht werden sollen. Nützlich zum Bewahren von wichtigem Kontext. |
clear_tool_inputs | false | Steuert, ob die Tool-Aufrufparameter zusammen mit den Tool-Ergebnissen gelöscht werden. Standardmäßig werden nur die Tool-Ergebnisse gelöscht, während Claudes ursprüngliche Tool-Aufrufe sichtbar bleiben. |
Du kannst über das Antwortfeld context_management sehen, welche Kontextbearbeitungen auf deine Anfrage angewendet wurden, zusammen mit hilfreichen Statistiken über die gelöschten Inhalte und Input-Token.
{
"id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
"type": "message",
"role": "assistant",
"content": [
// ...
],
"usage": {
// ...
},
"context_management": {
"applied_edits": [
// When using `clear_thinking_20251015`
{
"type": "clear_thinking_20251015",
"cleared_thinking_turns": 3,
"cleared_input_tokens": 15000
},
// When using `clear_tool_uses_20250919`
{
"type": "clear_tool_uses_20250919",
"cleared_tool_uses": 8,
"cleared_input_tokens": 50000
}
]
}
}Bei Streaming-Antworten werden die Kontextbearbeitungen im abschließenden message_delta-Event enthalten sein:
{
"type": "message_delta",
"delta": {
"stop_reason": "end_turn",
"stop_sequence": null
},
"usage": {
"output_tokens": 1024
},
"context_management": {
"applied_edits": [
// ...
]
}
}Der Token-Zählungs-Endpunkt unterstützt Kontextmanagement, sodass du vorab sehen kannst, wie viele Token dein Prompt nach Anwendung der Kontextbearbeitung verwenden wird.
response = client.beta.messages.count_tokens(
model="claude-opus-4-8",
messages=[{"role": "user", "content": "Continue our conversation..."}],
tools=[...], # Your tool definitions
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {"type": "input_tokens", "value": 30000},
"keep": {"type": "tool_uses", "value": 5},
}
]
},
)
print(f"Original tokens: {response.context_management['original_input_tokens']}")
print(f"After clearing: {response.input_tokens}")
print(
f"Savings: {response.context_management['original_input_tokens'] - response.input_tokens} tokens"
){
"input_tokens": 25000,
"context_management": {
"original_input_tokens": 70000
}
}Die Antwort zeigt sowohl die endgültige Token-Anzahl nach Anwendung des Kontextmanagements (input_tokens) als auch die ursprüngliche Token-Anzahl vor jeglichem Löschen (original_input_tokens).
Kontextbearbeitung kann mit dem Memory-Tool kombiniert werden. Wenn sich dein Gesprächskontext dem konfigurierten Lösch-Schwellenwert nähert, erhält Claude eine automatische Warnung, wichtige Informationen zu bewahren. Dies ermöglicht es Claude, Tool-Ergebnisse oder Kontext in seinen Memory-Dateien zu speichern, bevor sie aus dem Gesprächsverlauf gelöscht werden.
Diese Kombination ermöglicht dir:
Zum Beispiel kann Claude in einem Dateibearbeitungs-Workflow, in dem viele Operationen durchgeführt werden, abgeschlossene Änderungen in Memory-Dateien zusammenfassen, während der Kontext wächst. Wenn Tool-Ergebnisse gelöscht werden, behält Claude über sein Memory-System Zugriff auf diese Informationen und kann effektiv weiterarbeiten.
Um beide Features zusammen zu verwenden, aktiviere sie in deiner API-Anfrage:
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[...],
tools=[
{"type": "memory_20250818", "name": "memory"},
# Deine anderen Tools
],
betas=["context-management-2025-06-27"],
context_management={"edits": [{"type": "clear_tool_uses_20250919"}]},
)Die vollständige Memory-Tool-Referenz einschließlich Befehlen und Beispielen findest du unter Memory-Tool.
Anthropic empfiehlt serverseitige Kompaktierung gegenüber SDK-Kompaktierung. Serverseitige Kompaktierung übernimmt das Kontextmanagement automatisch mit geringerer Integrationskomplexität, besserer Token-Nutzungsberechnung und ohne clientseitige Einschränkungen. Verwende SDK-Kompaktierung nur, wenn du speziell clientseitige Kontrolle über den Zusammenfassungsprozess benötigst.
Kompaktierung ist in den Python-, TypeScript- und Ruby-SDKs verfügbar, wenn die tool_runner-Methode verwendet wird.
„Compaction" (Kompaktierung) ist ein SDK-Feature, das den Gesprächskontext automatisch verwaltet, indem Zusammenfassungen generiert werden, wenn die Token-Nutzung zu groß wird. Im Gegensatz zu serverseitigen Kontextbearbeitungsstrategien, die Inhalte löschen, weist Kompaktierung Claude an, den Gesprächsverlauf zusammenzufassen, und ersetzt dann den vollständigen Verlauf durch diese Zusammenfassung. Dies ermöglicht es Claude, an langlaufenden Aufgaben weiterzuarbeiten, die sonst das Kontextfenster überschreiten würden.
Wenn Kompaktierung aktiviert ist, überwacht das SDK die Token-Nutzung nach jeder Modellantwort:
input_tokens + cache_creation_input_tokens + cache_read_input_tokens + output_tokens.<summary></summary>-Tags eingeschlossen ist.Füge compaction_control zu deinem tool_runner-Aufruf hinzu, um automatische Zusammenfassung zu aktivieren, wenn die Token-Nutzung den Schwellenwert überschreitet.
Während das Gespräch wächst, sammelt sich der Nachrichtenverlauf an:
Vor der Kompaktierung (nähert sich 100k Token):
[
{ "role": "user", "content": "Analyze all files and write a report..." },
{ "role": "assistant", "content": "I'll help. Let me start by reading..." },
{
"role": "user",
"content": [{ "type": "tool_result", "tool_use_id": "...", "content": "..." }]
},
{ "role": "assistant", "content": "Based on file1.txt, I see..." },
{
"role": "user",
"content": [{ "type": "tool_result", "tool_use_id": "...", "content": "..." }]
},
{ "role": "assistant", "content": "After analyzing file2.txt..." }
// ... 50 more exchanges like this ...
]Wenn die Token den Schwellenwert überschreiten, fügt das SDK eine Zusammenfassungsanfrage ein und Claude generiert eine Zusammenfassung. Der gesamte Verlauf wird dann ersetzt:
Nach der Kompaktierung (zurück auf ~2-3k Token):
[
{
"role": "assistant",
"content": "# Task Overview\nThe user requested analysis of directory files to produce a summary report...\n\n# Current State\nAnalyzed 52 files across 3 subdirectories. Key findings documented in report.md...\n\n# Important Discoveries\n- Configuration files use YAML format\n- Found 3 deprecated dependencies\n- Test coverage at 67%\n\n# Next Steps\n1. Analyze remaining files in /src/legacy\n2. Complete final report sections...\n\n# Context to Preserve\nUser prefers markdown format with executive summary first..."
}
]Claude arbeitet von dieser Zusammenfassung aus weiter, als wäre sie der ursprüngliche Gesprächsverlauf.
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
enabled | boolean | Ja | - | Ob automatische Kompaktierung aktiviert werden soll |
context_token_threshold | number | Nein | 100.000 | Token-Anzahl, bei der Kompaktierung ausgelöst wird |
model | string | Nein | Gleich wie Hauptmodell | Modell, das zum Generieren von Zusammenfassungen verwendet werden soll |
summary_prompt | string | Nein | Siehe unten | Benutzerdefinierter Prompt für die Zusammenfassungsgenerierung |
Der Schwellenwert bestimmt, wann Kompaktierung erfolgt. Ein niedrigerer Schwellenwert bedeutet häufigere Kompaktierungen mit kleineren Kontextfenstern. Ein höherer Schwellenwert erlaubt mehr Kontext, birgt aber das Risiko, Limits zu erreichen.
# Häufigere Komprimierung für speicherbeschränkte Szenarien
compaction_control = {"enabled": True, "context_token_threshold": 50000}
# Seltenere Komprimierung, wenn du mehr Kontext benötigst
compaction_control = {"enabled": True, "context_token_threshold": 150000}Du kannst ein schnelleres oder günstigeres Modell zum Generieren von Zusammenfassungen verwenden:
compaction_control = {
"enabled": True,
"context_token_threshold": 100000,
"model": "claude-haiku-4-5",
}Du kannst einen benutzerdefinierten Prompt für domänenspezifische Anforderungen bereitstellen. Dein Prompt sollte Claude anweisen, seine Zusammenfassung in <summary></summary>-Tags einzuschließen.
compaction_control = {
"enabled": True,
"context_token_threshold": 100000,
"summary_prompt": """Summarize the research conducted so far, including:
- Sources consulted and key findings
- Questions answered and remaining unknowns
- Recommended next steps
Wrap your summary in <summary></summary> tags.""",
}Der integrierte Zusammenfassungs-Prompt weist Claude an, eine strukturierte Fortsetzungszusammenfassung zu erstellen, die Folgendes enthält:
Diese Struktur ermöglicht es Claude, die Arbeit effizient fortzusetzen, ohne wichtigen Kontext zu verlieren oder Fehler zu wiederholen.
Bei der Verwendung serverseitiger Tools kann das SDK die Token-Nutzung falsch berechnen, wodurch die Kompaktierung zum falschen Zeitpunkt ausgelöst wird.
Zum Beispiel könnte die API-Antwort nach einer Websuchoperation Folgendes anzeigen:
{
"usage": {
"input_tokens": 63000,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 270000,
"output_tokens": 1400
}
}Das SDK berechnet die Gesamtnutzung als 63.000 + 0 + 270.000 + 1.400 = 334.400 Token. Der Wert cache_read_input_tokens enthält jedoch akkumulierte Lesevorgänge aus mehreren internen API-Aufrufen, die vom serverseitigen Tool durchgeführt wurden, nicht deinen tatsächlichen Gesprächskontext. Deine tatsächliche Kontextlänge könnte nur die 63.000 input_tokens betragen, aber das SDK sieht 334k und löst die Kompaktierung vorzeitig aus.
Workarounds:
Wenn das SDK die Kompaktierung auslöst, während eine Tool-Use-Antwort aussteht, entfernt es den Tool-Use-Block aus dem Nachrichtenverlauf, bevor die Zusammenfassung generiert wird. Claude wird den Tool-Aufruf nach dem Fortsetzen von der Zusammenfassung aus erneut ausgeben, falls er noch benötigt wird.
Zu verstehen, wann Kompaktierung ausgelöst wird, hilft dir, Schwellenwerte abzustimmen und das erwartete Verhalten zu überprüfen.
Gute Anwendungsfälle:
Weniger ideale Anwendungsfälle:
Was this page helpful?