Loading...
    • Entwicklerleitfaden
    • API-Referenz
    • MCP
    • Ressourcen
    • Versionshinweise
    Search...
    ⌘K
    Erste Schritte
    Einführung in ClaudeSchnelleinstieg
    Modelle & Preise
    ModellübersichtModell auswählenNeuerungen in Claude 4.6MigrationsleitfadenModellabschreibungenPreise
    Mit Claude entwickeln
    FunktionsübersichtMessages API verwendenStop-Gründe verarbeitenBest Practices für Prompts
    Modellfähigkeiten
    Extended ThinkingAdaptive ThinkingAufwandFast Mode (Research Preview)Strukturierte AusgabenZitateStreaming MessagesBatch-VerarbeitungPDF-UnterstützungSuchergebnisseMehrsprachige UnterstützungEmbeddingsVision
    Tools
    ÜbersichtTool-Nutzung implementierenWeb-Such-ToolWeb-Abruf-ToolCode-Ausführungs-ToolMemory-ToolBash-ToolComputer-Use-ToolText-Editor-Tool
    Tool-Infrastruktur
    Tool-SucheProgrammgesteuerte Tool-AufrufeFeingranulares Tool-Streaming
    Kontextverwaltung
    KontextfensterKomprimierungKontextbearbeitungPrompt CachingToken-Zählung
    Dateien & Assets
    Files API
    Agent Skills
    ÜbersichtSchnelleinstiegBest PracticesSkills für UnternehmenSkills mit der API verwenden
    Agent SDK
    ÜbersichtSchnelleinstiegTypeScript SDKTypeScript V2 (Preview)Python SDKMigrationsleitfaden
    MCP in der API
    MCP-ConnectorRemote MCP-Server
    Claude auf Plattformen von Drittanbietern
    Amazon BedrockMicrosoft FoundryVertex AI
    Prompt Engineering
    ÜbersichtPrompt-GeneratorPrompt-Vorlagen verwendenPrompt-VerbessererKlar und direkt seinBeispiele verwenden (Multishot Prompting)Claude denken lassen (CoT)XML-Tags verwendenClaude eine Rolle geben (System Prompts)Komplexe Prompts verkettenTipps für lange KontexteTipps für Extended Thinking
    Testen & Evaluieren
    Erfolgskriterien definierenTestfälle entwickelnEvaluierungstool verwendenLatenz reduzieren
    Schutzmaßnahmen verstärken
    Halluzinationen reduzierenAusgabekonsistenz erhöhenJailbreaks abschwächenStreaming-AblehnungenPrompt-Lecks reduzierenClaude im Charakter halten
    Verwaltung und Überwachung
    Admin API ÜbersichtDatenspeicherortArbeitsbereicheUsage and Cost APIClaude Code Analytics APIZero Data Retention
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Kontextverwaltung

    Komprimierung

    Serverseitige Kontextkomprimierung zur Verwaltung langer Gespräche, die sich dem Kontextfenster-Limit nähern.

    Serverseitige Komprimierung ist die empfohlene Strategie zur Verwaltung von Kontext in langfristigen Gesprächen und agentengesteuerten Workflows. Sie verwaltet den Kontext automatisch mit minimalem Integrationaufwand.

    Komprimierung erweitert die effektive Kontextlänge für langfristige Gespräche und Aufgaben, indem älterer Kontext automatisch zusammengefasst wird, wenn sich das Kontextfenster-Limit nähert. Dies ist ideal für:

    • Chat-basierte, mehrteilige Gespräche, bei denen Sie möchten, dass Benutzer einen Chat über einen längeren Zeitraum nutzen
    • Aufgabenorientierte Prompts, die viel Folgework erfordern (oft Tool-Nutzung), das das 200K-Kontextfenster überschreiten kann

    Komprimierung ist derzeit in Beta. Fügen Sie den Beta-Header compact-2026-01-12 in Ihre API-Anfragen ein, um diese Funktion zu nutzen.

    This feature is in beta and is not covered by Zero Data Retention (ZDR) arrangements. Beta features are excluded from ZDR.

    Unterstützte Modelle

    Komprimierung wird auf den folgenden Modellen unterstützt:

    • Claude Opus 4.6 (claude-opus-4-6)

    Wie Komprimierung funktioniert

    Wenn Komprimierung aktiviert ist, fasst Claude Ihr Gespräch automatisch zusammen, wenn es sich dem konfigurierten Token-Schwellenwert nähert. Die API:

    1. Erkennt, wenn Eingabe-Token Ihren angegebenen Triggerschwellenwert überschreiten.
    2. Generiert eine Zusammenfassung des aktuellen Gesprächs.
    3. Erstellt einen compaction-Block mit der Zusammenfassung.
    4. Setzt die Antwort mit dem komprimierten Kontext fort.

    Bei nachfolgenden Anfragen fügen Sie die Antwort zu Ihren Nachrichten hinzu. Die API löscht automatisch alle Nachrichtenblöcke vor dem compaction-Block und setzt das Gespräch von der Zusammenfassung aus fort.

    Flussdiagramm, das den Komprimierungsprozess zeigt: Wenn Eingabe-Token den Triggerschwellenwert überschreiten, generiert Claude eine Zusammenfassung in einem Komprimierungsblock und setzt die Antwort mit dem komprimierten Kontext fort

    Grundlegende Verwendung

    Aktivieren Sie Komprimierung, indem Sie die compact_20260112-Strategie zu context_management.edits in Ihrer Messages API-Anfrage hinzufügen.

    curl https://api.anthropic.com/v1/messages \
         --header "x-api-key: $ANTHROPIC_API_KEY" \
         --header "anthropic-version: 2023-06-01" \
         --header "anthropic-beta: compact-2026-01-12" \
         --header "content-type: application/json" \
         --data \
    '{
        "model": "claude-opus-4-6",
        "max_tokens": 4096,
        "messages": [
            {
                "role": "user",
                "content": "Help me build a website"
            }
        ],
        "context_management": {
            "edits": [
                {
                    "type": "compact_20260112"
                }
            ]
        }
    }'

    Parameter

    ParameterTypStandardBeschreibung
    typestringErforderlichMuss "compact_20260112" sein
    triggerobject150.000 TokenWann Komprimierung ausgelöst wird. Muss mindestens 50.000 Token sein.
    pause_after_compactionbooleanfalseOb nach der Generierung der Komprimierungszusammenfassung pausiert werden soll
    instructionsstringnullBenutzerdefinierter Zusammenfassungs-Prompt. Ersetzt den Standard-Prompt vollständig, wenn bereitgestellt.

    Trigger-Konfiguration

    Konfigurieren Sie, wann Komprimierung ausgelöst wird, mit dem trigger-Parameter:

    response = client.beta.messages.create(
        betas=["compact-2026-01-12"],
        model="claude-opus-4-6",
        max_tokens=4096,
        messages=messages,
        context_management={
            "edits": [
                {
                    "type": "compact_20260112",
                    "trigger": {"type": "input_tokens", "value": 150000},
                }
            ]
        },
    )

    Benutzerdefinierte Zusammenfassungsanweisungen

    Standardmäßig verwendet Komprimierung den folgenden Zusammenfassungs-Prompt:

    You have written a partial transcript for the initial task above. Please write a summary of the transcript. The purpose of this summary is to provide continuity so you can continue to make progress towards solving the task in a future context, where the raw history above may not be accessible and will be replaced with this summary. Write down anything that would be helpful, including the state, next steps, learnings etc. You must wrap your summary in a <summary></summary> block.

    Sie können benutzerdefinierte Anweisungen über den instructions-Parameter bereitstellen, um diesen Prompt vollständig zu ersetzen. Benutzerdefinierte Anweisungen ergänzen den Standard nicht; sie ersetzen ihn vollständig:

    response = client.beta.messages.create(
        betas=["compact-2026-01-12"],
        model="claude-opus-4-6",
        max_tokens=4096,
        messages=messages,
        context_management={
            "edits": [
                {
                    "type": "compact_20260112",
                    "instructions": "Focus on preserving code snippets, variable names, and technical decisions.",
                }
            ]
        },
    )

    Pausieren nach Komprimierung

    Verwenden Sie pause_after_compaction, um die API nach der Generierung der Komprimierungszusammenfassung zu pausieren. Dies ermöglicht es Ihnen, zusätzliche Inhaltsblöcke hinzuzufügen (z. B. um aktuelle Nachrichten oder spezifische anweisungsorientierte Nachrichten zu bewahren), bevor die API mit der Antwort fortfährt.

    Wenn aktiviert, gibt die API eine Nachricht mit dem compaction-Stoppgrund nach der Generierung des Komprimierungsblocks zurück:

    response = client.beta.messages.create(
        betas=["compact-2026-01-12"],
        model="claude-opus-4-6",
        max_tokens=4096,
        messages=messages,
        context_management={
            "edits": [{"type": "compact_20260112", "pause_after_compaction": True}]
        },
    )
    
    # Check if compaction triggered a pause
    if response.stop_reason == "compaction":
        # Response contains only the compaction block
        messages.append({"role": "assistant", "content": response.content})
    
        # Continue the request
        response = client.beta.messages.create(
            betas=["compact-2026-01-12"],
            model="claude-opus-4-6",
            max_tokens=4096,
            messages=messages,
            context_management={"edits": [{"type": "compact_20260112"}]},
        )

    Durchsetzung eines Gesamttoken-Budgets

    Wenn ein Modell an langen Aufgaben mit vielen Tool-Use-Iterationen arbeitet, kann der Gesamttoken-Verbrauch erheblich wachsen. Sie können pause_after_compaction mit einem Komprimierungszähler kombinieren, um die kumulative Nutzung zu schätzen und die Aufgabe elegant abzuschließen, sobald ein Budget erreicht ist:

    Python
    TRIGGER_THRESHOLD = 100_000
    TOTAL_TOKEN_BUDGET = 3_000_000
    n_compactions = 0
    
    response = client.beta.messages.create(
        betas=["compact-2026-01-12"],
        model="claude-opus-4-6",
        max_tokens=4096,
        messages=messages,
        context_management={
            "edits": [
                {
                    "type": "compact_20260112",
                    "trigger": {"type": "input_tokens", "value": TRIGGER_THRESHOLD},
                    "pause_after_compaction": True,
                }
            ]
        },
    )
    
    if response.stop_reason == "compaction":
        n_compactions += 1
        messages.append({"role": "assistant", "content": response.content})
    
        # Estimate total tokens consumed; prompt wrap-up if over budget
        if n_compactions * TRIGGER_THRESHOLD >= TOTAL_TOKEN_BUDGET:
            messages.append(
                {
                    "role": "user",
                    "content": "Please wrap up your current work and summarize the final state.",
                }
            )

    Arbeiten mit Komprimierungsblöcken

    Wenn Komprimierung ausgelöst wird, gibt die API einen compaction-Block am Anfang der Assistenten-Antwort zurück.

    Ein langfristiges Gespräch kann zu mehreren Komprimierungen führen. Der letzte Komprimierungsblock spiegelt den endgültigen Zustand des Prompts wider und ersetzt den Inhalt davor durch die generierte Zusammenfassung.

    {
      "content": [
        {
          "type": "compaction",
          "content": "Summary of the conversation: The user requested help building a web scraper..."
        },
        {
          "type": "text",
          "text": "Based on our conversation so far..."
        }
      ]
    }

    Komprimierungsblöcke zurückgeben

    Sie müssen den compaction-Block bei nachfolgenden Anfragen an die API zurückgeben, um das Gespräch mit dem verkürzten Prompt fortzusetzen. Der einfachste Ansatz ist, den gesamten Antwortinhalt zu Ihren Nachrichten hinzuzufügen:

    # After receiving a response with a compaction block
    messages.append({"role": "assistant", "content": response.content})
    
    # Continue the conversation
    messages.append({"role": "user", "content": "Now add error handling"})
    
    response = client.beta.messages.create(
        betas=["compact-2026-01-12"],
        model="claude-opus-4-6",
        max_tokens=4096,
        messages=messages,
        context_management={"edits": [{"type": "compact_20260112"}]},
    )

    Wenn die API einen compaction-Block empfängt, werden alle Inhaltsblöcke davor ignoriert. Sie können entweder:

    • Die ursprünglichen Nachrichten in Ihrer Liste behalten und die API den komprimierten Inhalt entfernen lassen
    • Die komprimierten Nachrichten manuell löschen und nur den Komprimierungsblock und danach einbeziehen

    Streaming

    Beim Streaming von Antworten mit aktivierter Komprimierung erhalten Sie ein content_block_start-Ereignis, wenn die Komprimierung beginnt. Der Komprimierungsblock streamt anders als Textblöcke. Sie erhalten ein content_block_start-Ereignis, gefolgt von einem einzelnen content_block_delta mit dem vollständigen Zusammenfassungsinhalt (kein Zwischenstreaming) und dann ein content_block_stop-Ereignis.

    import anthropic
    
    client = anthropic.Anthropic()
    
    with client.beta.messages.stream(
        betas=["compact-2026-01-12"],
        model="claude-opus-4-6",
        max_tokens=4096,
        messages=messages,
        context_management={"edits": [{"type": "compact_20260112"}]},
    ) as stream:
        for event in stream:
            if event.type == "content_block_start":
                if event.content_block.type == "compaction":
                    print("Compaction started...")
                elif event.content_block.type == "text":
                    print("Text response started...")
    
            elif event.type == "content_block_delta":
                if event.delta.type == "compaction_delta":
                    print(f"Compaction complete: {len(event.delta.content)} chars")
                elif event.delta.type == "text_delta":
                    print(event.delta.text, end="", flush=True)
    
        # Get the final accumulated message
        message = stream.get_final_message()
        messages.append({"role": "assistant", "content": message.content})

    Prompt-Caching

    Komprimierung funktioniert gut mit Prompt-Caching. Sie können einen cache_control-Breakpoint auf Komprimierungsblöcken hinzufügen, um den zusammengefassten Inhalt zu cachen. Der ursprüngliche komprimierte Inhalt wird ignoriert.

    {
        "role": "assistant",
        "content": [
            {
                "type": "compaction",
                "content": "[summary text]",
                "cache_control": {"type": "ephemeral"}
            },
            {
                "type": "text",
                "text": "Based on our conversation..."
            }
        ]
    }

    Maximierung von Cache-Treffern mit System-Prompts

    Wenn Komprimierung auftritt, wird die Zusammenfassung zu neuem Inhalt, der in den Cache geschrieben werden muss. Ohne zusätzliche Cache-Breakpoints würde dies auch jeden gecachten System-Prompt ungültig machen, was erfordert, dass er zusammen mit der Komprimierungszusammenfassung neu gecacht wird.

    Um Cache-Trefferquoten zu maximieren, fügen Sie einen cache_control-Breakpoint am Ende Ihres System-Prompts hinzu. Dies hält den System-Prompt separat gecacht von der Konversation, sodass bei Komprimierung:

    • Der System-Prompt-Cache gültig bleibt und aus dem Cache gelesen wird
    • Nur die Komprimierungszusammenfassung als neuer Cache-Eintrag geschrieben werden muss
    response = client.beta.messages.create(
        betas=["compact-2026-01-12"],
        model="claude-opus-4-6",
        max_tokens=4096,
        system=[
            {
                "type": "text",
                "text": "You are a helpful coding assistant...",
                "cache_control": {
                    "type": "ephemeral"
                },  # Cache the system prompt separately
            }
        ],
        messages=messages,
        context_management={"edits": [{"type": "compact_20260112"}]},
    )

    Dieser Ansatz ist besonders vorteilhaft für lange System-Prompts, da sie auch über mehrere Komprimierungsereignisse hinweg während eines Gesprächs gecacht bleiben.

    Verständnis der Nutzung

    Komprimierung erfordert einen zusätzlichen Sampling-Schritt, der zu Ratenlimits und Abrechnung beiträgt. Die API gibt detaillierte Nutzungsinformationen in der Antwort zurück:

    {
      "usage": {
        "input_tokens": 45000,
        "output_tokens": 1234,
        "iterations": [
          {
            "type": "compaction",
            "input_tokens": 180000,
            "output_tokens": 3500
          },
          {
            "type": "message",
            "input_tokens": 23000,
            "output_tokens": 1000
          }
        ]
      }
    }

    Das iterations-Array zeigt die Nutzung für jede Sampling-Iteration. Wenn Komprimierung auftritt, sehen Sie eine compaction-Iteration gefolgt von der Haupt-message-Iteration. Die Token-Zählungen der endgültigen Iteration spiegeln die effektive Kontextgröße nach Komprimierung wider.

    Die Top-Level-input_tokens und output_tokens enthalten nicht die Nutzung der Komprimierungsiteration – sie spiegeln die Summe aller Nicht-Komprimierungsiterationen wider. Um die Gesamttoken zu berechnen, die für eine Anfrage verbraucht und abgerechnet werden, summieren Sie alle Einträge im usage.iterations-Array.

    Wenn Sie sich zuvor auf usage.input_tokens und usage.output_tokens für Kostenverfolgung oder Auditing verlassen haben, müssen Sie Ihre Verfolgungslogik aktualisieren, um über usage.iterations zu aggregieren, wenn Komprimierung aktiviert ist. Das iterations-Array wird nur gefüllt, wenn eine neue Komprimierung während der Anfrage ausgelöst wird. Das erneute Anwenden eines vorherigen compaction-Blocks verursacht keine zusätzlichen Komprimierungskosten, und die Top-Level-Nutzungsfelder bleiben in diesem Fall genau.

    Kombination mit anderen Funktionen

    Server-Tools

    Bei Verwendung von Server-Tools (wie Web-Suche) wird der Komprimierungstrigger am Anfang jeder Sampling-Iteration überprüft. Komprimierung kann mehrmals innerhalb einer einzelnen Anfrage auftreten, je nach Ihrem Triggerschwellenwert und der Menge des generierten Outputs.

    Token-Zählung

    Der Token-Zählungs-Endpunkt (/v1/messages/count_tokens) wendet vorhandene compaction-Blöcke in Ihrem Prompt an, löst aber keine neuen Komprimierungen aus. Verwenden Sie ihn, um Ihre effektive Token-Zählung nach vorherigen Komprimierungen zu überprüfen:

    count_response = client.beta.messages.count_tokens(
        betas=["compact-2026-01-12"],
        model="claude-opus-4-6",
        messages=messages,
        context_management={"edits": [{"type": "compact_20260112"}]},
    )
    
    print(f"Current tokens: {count_response.input_tokens}")
    print(f"Original tokens: {count_response.context_management.original_input_tokens}")

    Beispiele

    Hier ist ein vollständiges Beispiel eines langfristigen Gesprächs mit Komprimierung:

    import anthropic
    
    client = anthropic.Anthropic()
    
    messages: list[dict] = []
    
    
    def chat(user_message: str) -> str:
        messages.append({"role": "user", "content": user_message})
    
        response = client.beta.messages.create(
            betas=["compact-2026-01-12"],
            model="claude-opus-4-6",
            max_tokens=4096,
            messages=messages,
            context_management={
                "edits": [
                    {
                        "type": "compact_20260112",
                        "trigger": {"type": "input_tokens", "value": 100000},
                    }
                ]
            },
        )
    
        # Append response (compaction blocks are automatically included)
        messages.append({"role": "assistant", "content": response.content})
    
        # Return the text content
        return next(block.text for block in response.content if block.type == "text")
    
    
    # Run a long conversation
    print(chat("Help me build a Python web scraper"))
    print(chat("Add support for JavaScript-rendered pages"))
    print(chat("Now add rate limiting and error handling"))
    # ... continue as long as needed

    Hier ist ein Beispiel, das pause_after_compaction verwendet, um die letzten zwei Nachrichten (ein Benutzer + ein Assistenten-Turn) wörtlich zu bewahren, anstatt sie zusammenzufassen:

    import anthropic
    from typing import Any
    
    client = anthropic.Anthropic()
    
    messages: list[dict[str, Any]] = []
    
    
    def chat(user_message: str) -> str:
        messages.append({"role": "user", "content": user_message})
    
        response = client.beta.messages.create(
            betas=["compact-2026-01-12"],
            model="claude-opus-4-6",
            max_tokens=4096,
            messages=messages,
            context_management={
                "edits": [
                    {
                        "type": "compact_20260112",
                        "trigger": {"type": "input_tokens", "value": 100000},
                        "pause_after_compaction": True,
                    }
                ]
            },
        )
    
        # Check if compaction occurred and paused
        if response.stop_reason == "compaction":
            # Get the compaction block from the response
            compaction_block = response.content[0]
    
            # Preserve the last 2 messages (1 user + 1 assistant turn)
            # by including them after the compaction block
            preserved_messages = messages[-2:] if len(messages) >= 2 else messages
    
            # Build new message list: compaction + preserved messages
            new_assistant_content = [compaction_block]
            messages_after_compaction = [
                {"role": "assistant", "content": new_assistant_content}
            ] + preserved_messages
    
            # Continue the request with the compacted context + preserved messages
            response = client.beta.messages.create(
                betas=["compact-2026-01-12"],
                model="claude-opus-4-6",
                max_tokens=4096,
                messages=messages_after_compaction,
                context_management={"edits": [{"type": "compact_20260112"}]},
            )
    
            # Update our message list to reflect the compaction
            messages.clear()
            messages.extend(messages_after_compaction)
    
        # Append the final response
        messages.append({"role": "assistant", "content": response.content})
    
        # Return the text content
        return next(block.text for block in response.content if block.type == "text")
    
    
    # Run a long conversation
    print(chat("Help me build a Python web scraper"))
    print(chat("Add support for JavaScript-rendered pages"))
    print(chat("Now add rate limiting and error handling"))
    # ... continue as long as needed

    Aktuelle Einschränkungen

    • Gleiches Modell für Zusammenfassung: Das in Ihrer Anfrage angegebene Modell wird für die Zusammenfassung verwendet. Es gibt keine Option, ein anderes (z. B. günstigeres) Modell für die Zusammenfassung zu verwenden.

    Nächste Schritte

    Komprimierungs-Cookbook

    Erkunden Sie praktische Beispiele und Implementierungen im Cookbook.

    Kontextfenster

    Erfahren Sie mehr über Kontextfenstergröße und Verwaltungsstrategien.

    Kontext-Bearbeitung

    Erkunden Sie andere Strategien zur Verwaltung von Gesprächskontext wie Tool-Ergebnis-Clearing und Thinking-Block-Clearing.

    Was this page helpful?

    • Unterstützte Modelle
    • Wie Komprimierung funktioniert
    • Grundlegende Verwendung
    • Parameter
    • Trigger-Konfiguration
    • Benutzerdefinierte Zusammenfassungsanweisungen
    • Pausieren nach Komprimierung
    • Arbeiten mit Komprimierungsblöcken
    • Komprimierungsblöcke zurückgeben
    • Streaming
    • Prompt-Caching
    • Verständnis der Nutzung
    • Kombination mit anderen Funktionen
    • Server-Tools
    • Token-Zählung
    • Beispiele
    • Aktuelle Einschränkungen
    • Nächste Schritte