Prompt-Caching ist eine leistungsstarke Funktion, die Ihre API-Nutzung optimiert, indem Sie von bestimmten Präfixen in Ihren Prompts fortfahren können. Dieser Ansatz reduziert die Verarbeitungszeit und Kosten für sich wiederholende Aufgaben oder Prompts mit konsistenten Elementen erheblich. Hier ist ein Beispiel für die Implementierung von Prompt-Caching mit der Messages API unter Verwendung eines cache_control-Blocks:
curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-sonnet-4-5",
    "max_tokens": 1024,
    "system": [
      {
        "type": "text",
        "text": "You are an AI assistant tasked with analyzing literary works. Your goal is to provide insightful commentary on themes, characters, and writing style.\n"
      },
      {
        "type": "text",
        "text": "<the entire contents of Pride and Prejudice>",
        "cache_control": {"type": "ephemeral"}
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "Analyze the major themes in Pride and Prejudice."
      }
    ]
  }'

# Call the model again with the same inputs up to the cache checkpoint
curl https://api.anthropic.com/v1/messages # rest of input
JSON
{"cache_creation_input_tokens":188086,"cache_read_input_tokens":0,"input_tokens":21,"output_tokens":393}
{"cache_creation_input_tokens":0,"cache_read_input_tokens":188086,"input_tokens":21,"output_tokens":393}
In diesem Beispiel wird der gesamte Text von „Pride and Prejudice” mithilfe des cache_control-Parameters zwischengespeichert. Dies ermöglicht die Wiederverwendung dieses großen Textes über mehrere API-Aufrufe hinweg, ohne ihn jedes Mal neu zu verarbeiten. Wenn Sie nur die Benutzermeldung ändern, können Sie verschiedene Fragen zum Buch stellen und dabei den zwischengespeicherten Inhalt nutzen, was zu schnelleren Antworten und verbesserter Effizienz führt.

Wie Prompt-Caching funktioniert

Wenn Sie eine Anfrage mit aktiviertem Prompt-Caching senden:
  1. Das System prüft, ob ein Prompt-Präfix bis zu einem angegebenen Cache-Haltepunkt bereits aus einer kürzlichen Abfrage zwischengespeichert ist.
  2. Falls gefunden, wird die zwischengespeicherte Version verwendet, was die Verarbeitungszeit und Kosten reduziert.
  3. Andernfalls wird der vollständige Prompt verarbeitet und das Präfix zwischengespeichert, sobald die Antwort beginnt.
Dies ist besonders nützlich für:
  • Prompts mit vielen Beispielen
  • Große Mengen an Kontext oder Hintergrundinformationen
  • Sich wiederholende Aufgaben mit konsistenten Anweisungen
  • Lange Multi-Turn-Gespräche
Standardmäßig hat der Cache eine Lebensdauer von 5 Minuten. Der Cache wird jedes Mal ohne zusätzliche Kosten aktualisiert, wenn der zwischengespeicherte Inhalt verwendet wird.
Falls 5 Minuten zu kurz sind, bietet Anthropic auch eine Cache-Dauer von 1 Stunde gegen zusätzliche Kosten. Der 1-Stunden-Cache befindet sich derzeit in der Beta-Phase.Weitere Informationen finden Sie unter 1-Stunden-Cache-Dauer.
Prompt-Caching speichert das vollständige Präfix zwischenPrompt-Caching verweist auf den gesamten Prompt - tools, system und messages (in dieser Reihenfolge) bis zu und einschließlich des Blocks, der mit cache_control gekennzeichnet ist.

Preisgestaltung

Prompt-Caching führt eine neue Preisstruktur ein. Die folgende Tabelle zeigt den Preis pro Million Token für jedes unterstützte Modell:
ModelBase Input Tokens5m Cache Writes1h Cache WritesCache Hits & RefreshesOutput Tokens
Claude Opus 4.1$15 / MTok$18.75 / MTok$30 / MTok$1.50 / MTok$75 / MTok
Claude Opus 4$15 / MTok$18.75 / MTok$30 / MTok$1.50 / MTok$75 / MTok
Claude Sonnet 4.5$3 / MTok$3.75 / MTok$6 / MTok$0.30 / MTok$15 / MTok
Claude Sonnet 4$3 / MTok$3.75 / MTok$6 / MTok$0.30 / MTok$15 / MTok
Claude Sonnet 3.7 (deprecated)$3 / MTok$3.75 / MTok$6 / MTok$0.30 / MTok$15 / MTok
Claude Haiku 4.5$1 / MTok$1.25 / MTok$2 / MTok$0.10 / MTok$5 / MTok
Claude Haiku 3.5$0.80 / MTok$1 / MTok$1.6 / MTok$0.08 / MTok$4 / MTok
Claude Opus 3 (deprecated)$15 / MTok$18.75 / MTok$30 / MTok$1.50 / MTok$75 / MTok
Claude Haiku 3$0.25 / MTok$0.30 / MTok$0.50 / MTok$0.03 / MTok$1.25 / MTok
Die obige Tabelle spiegelt die folgenden Preismultiplikatoren für Prompt-Caching wider:
  • 5-Minuten-Cache-Schreib-Token kosten das 1,25-fache des Basis-Eingabe-Token-Preises
  • 1-Stunden-Cache-Schreib-Token kosten das 2-fache des Basis-Eingabe-Token-Preises
  • Cache-Lese-Token kosten das 0,1-fache des Basis-Eingabe-Token-Preises

Wie man Prompt-Caching implementiert

Unterstützte Modelle

Prompt-Caching wird derzeit unterstützt auf:
  • Claude Opus 4.1
  • Claude Opus 4
  • Claude Sonnet 4.5
  • Claude Sonnet 4
  • Claude Sonnet 3.7
  • Claude Haiku 4.5
  • Claude Haiku 3.5
  • Claude Haiku 3
  • Claude Opus 3 (veraltet)

Strukturierung Ihres Prompts

Platzieren Sie statische Inhalte (Tool-Definitionen, Systemanweisungen, Kontext, Beispiele) am Anfang Ihres Prompts. Markieren Sie das Ende des wiederverwendbaren Inhalts zum Zwischenspeichern mit dem cache_control-Parameter. Cache-Präfixe werden in der folgenden Reihenfolge erstellt: tools, dann system, dann messages. Diese Reihenfolge bildet eine Hierarchie, bei der jede Ebene auf den vorherigen aufbaut.

Wie die automatische Präfix-Überprüfung funktioniert

Sie können nur einen Cache-Haltepunkt am Ende Ihres statischen Inhalts verwenden, und das System findet automatisch das längste übereinstimmende Präfix. So funktioniert es:
  • Wenn Sie einen cache_control-Haltepunkt hinzufügen, prüft das System automatisch auf Cache-Treffer an allen vorherigen Inhaltsblock-Grenzen (bis zu etwa 20 Blöcke vor Ihrem expliziten Haltepunkt)
  • Wenn eine dieser vorherigen Positionen mit zwischengespeichertem Inhalt aus früheren Anfragen übereinstimmt, verwendet das System das längste übereinstimmende Präfix
  • Dies bedeutet, dass Sie nicht mehrere Haltepunkte benötigen, um Caching zu aktivieren - einer am Ende ist ausreichend

Wann mehrere Haltepunkte verwendet werden sollten

Sie können bis zu 4 Cache-Haltepunkte definieren, wenn Sie möchten:
  • Verschiedene Abschnitte zwischenspeichern, die sich mit unterschiedlichen Häufigkeiten ändern (z. B. Tools ändern sich selten, aber der Kontext wird täglich aktualisiert)
  • Mehr Kontrolle darüber haben, was genau zwischengespeichert wird
  • Caching für Inhalte sicherstellen, die mehr als 20 Blöcke vor Ihrem endgültigen Haltepunkt liegen
Wichtige Einschränkung: Die automatische Präfix-Überprüfung schaut nur etwa 20 Inhaltsblöcke von jedem expliziten Haltepunkt zurück. Wenn Ihr Prompt mehr als 20 Inhaltsblöcke vor Ihrem Cache-Haltepunkt hat, werden Inhalte früher als das nicht auf Cache-Treffer überprüft, es sei denn, Sie fügen zusätzliche Haltepunkte hinzu.

Cache-Einschränkungen

Die minimale zwischenspeicherbare Prompt-Länge beträgt:
  • 1024 Token für Claude Opus 4.1, Claude Opus 4, Claude Sonnet 4.5, Claude Sonnet 4, Claude Sonnet 3.7 (veraltet) und Claude Opus 3 (veraltet)
  • 4096 Token für Claude Haiku 4.5
  • 2048 Token für Claude Haiku 3.5 und Claude Haiku 3
Kürzere Prompts können nicht zwischengespeichert werden, auch wenn sie mit cache_control gekennzeichnet sind. Alle Anfragen zum Zwischenspeichern von weniger als dieser Anzahl von Token werden ohne Caching verarbeitet. Um zu sehen, ob ein Prompt zwischengespeichert wurde, siehe die Antwort-Nutzungsfelder fields. Beachten Sie bei gleichzeitigen Anfragen, dass ein Cache-Eintrag erst verfügbar wird, nachdem die erste Antwort beginnt. Wenn Sie Cache-Treffer für parallele Anfragen benötigen, warten Sie auf die erste Antwort, bevor Sie nachfolgende Anfragen senden. Derzeit ist „ephemeral” der einzige unterstützte Cache-Typ, der standardmäßig eine Lebensdauer von 5 Minuten hat.

Verständnis der Cache-Haltepunkt-Kosten

Cache-Haltepunkte selbst verursachen keine Kosten. Sie werden nur berechnet für:
  • Cache-Schreibvorgänge: Wenn neuer Inhalt in den Cache geschrieben wird (25% mehr als Basis-Eingabe-Token für 5-Minuten-TTL)
  • Cache-Lesevorgänge: Wenn zwischengespeicherter Inhalt verwendet wird (10% des Basis-Eingabe-Token-Preises)
  • Reguläre Eingabe-Token: Für jeden nicht zwischengespeicherten Inhalt
Das Hinzufügen von mehr cache_control-Haltepunkten erhöht Ihre Kosten nicht - Sie zahlen immer noch den gleichen Betrag basierend auf dem, was tatsächlich zwischengespeichert und gelesen wird. Die Haltepunkte geben Ihnen einfach Kontrolle darüber, welche Abschnitte unabhängig zwischengespeichert werden können.

Was zwischengespeichert werden kann

Die meisten Blöcke in der Anfrage können mit cache_control zum Zwischenspeichern gekennzeichnet werden. Dies umfasst:
  • Tools: Tool-Definitionen im tools-Array
  • Systemmeldungen: Inhaltsblöcke im system-Array
  • Textmeldungen: Inhaltsblöcke im messages.content-Array, sowohl für Benutzer- als auch für Assistent-Turns
  • Bilder & Dokumente: Inhaltsblöcke im messages.content-Array, in Benutzer-Turns
  • Tool-Nutzung und Tool-Ergebnisse: Inhaltsblöcke im messages.content-Array, sowohl in Benutzer- als auch in Assistent-Turns
Jedes dieser Elemente kann mit cache_control gekennzeichnet werden, um Caching für diesen Teil der Anfrage zu aktivieren.

Was nicht zwischengespeichert werden kann

Während die meisten Anfrage-Blöcke zwischengespeichert werden können, gibt es einige Ausnahmen:
  • Thinking-Blöcke können nicht direkt mit cache_control zwischengespeichert werden. Thinking-Blöcke KÖNNEN jedoch zusammen mit anderen Inhalten zwischengespeichert werden, wenn sie in vorherigen Assistent-Turns erscheinen. Wenn sie auf diese Weise zwischengespeichert werden, zählen sie als Eingabe-Token, wenn sie aus dem Cache gelesen werden.
  • Sub-Content-Blöcke (wie citations) können nicht direkt zwischengespeichert werden. Speichern Sie stattdessen den Top-Level-Block zwischen. Im Fall von Zitaten können die Top-Level-Dokument-Inhaltsblöcke, die als Quellenmaterial für Zitate dienen, zwischengespeichert werden. Dies ermöglicht es Ihnen, Prompt-Caching effektiv mit Zitaten zu verwenden, indem Sie die Dokumente zwischenspeichern, auf die Zitate verweisen werden.
  • Leere Textblöcke können nicht zwischengespeichert werden.

Was den Cache ungültig macht

Änderungen an zwischengespeichertem Inhalt können einen Teil oder den gesamten Cache ungültig machen. Wie in Strukturierung Ihres Prompts beschrieben, folgt der Cache der Hierarchie: toolssystemmessages. Änderungen auf jeder Ebene machen diese Ebene und alle nachfolgenden Ebenen ungültig. Die folgende Tabelle zeigt, welche Teile des Cache durch verschiedene Arten von Änderungen ungültig gemacht werden. ✘ zeigt an, dass der Cache ungültig gemacht wird, während ✓ anzeigt, dass der Cache gültig bleibt.
Was sich ändertTools-CacheSystem-CacheMessages-CacheAuswirkung
Tool-DefinitionenDas Ändern von Tool-Definitionen (Namen, Beschreibungen, Parameter) macht den gesamten Cache ungültig
Web-Suche-UmschalterDas Aktivieren/Deaktivieren der Web-Suche ändert den System-Prompt
Zitate-UmschalterDas Aktivieren/Deaktivieren von Zitaten ändert den System-Prompt
Tool-AuswahlÄnderungen am tool_choice-Parameter beeinflussen nur Message-Blöcke
BilderDas Hinzufügen/Entfernen von Bildern an einer beliebigen Stelle im Prompt beeinträchtigt Message-Blöcke
Thinking-ParameterÄnderungen an Extended-Thinking-Einstellungen (Aktivieren/Deaktivieren, Budget) beeinflussen Message-Blöcke
Nicht-Tool-Ergebnisse, die an Extended-Thinking-Anfragen übergeben werdenWenn Nicht-Tool-Ergebnisse in Anfragen übergeben werden, während Extended Thinking aktiviert ist, werden alle zuvor zwischengespeicherten Thinking-Blöcke aus dem Kontext entfernt, und alle Messages im Kontext, die diesen Thinking-Blöcken folgen, werden aus dem Cache entfernt. Weitere Details finden Sie unter Caching mit Thinking-Blöcken.

Verfolgung der Cache-Leistung

Überwachen Sie die Cache-Leistung mit diesen API-Antwortfeldern innerhalb von usage in der Antwort (oder message_start-Ereignis bei Streaming):
  • cache_creation_input_tokens: Anzahl der Token, die beim Erstellen eines neuen Eintrags in den Cache geschrieben werden.
  • cache_read_input_tokens: Anzahl der Token, die für diese Anfrage aus dem Cache abgerufen werden.
  • input_tokens: Anzahl der Eingabe-Token, die nicht aus dem Cache gelesen oder zum Erstellen eines Cache verwendet wurden.

Best Practices für effektives Caching

Um die Leistung des Prompt-Caching zu optimieren:
  • Speichern Sie stabilen, wiederverwendbaren Inhalt wie Systemanweisungen, Hintergrundinformationen, große Kontexte oder häufige Tool-Definitionen zwischen.
  • Platzieren Sie zwischengespeicherten Inhalt am Anfang des Prompts für beste Leistung.
  • Verwenden Sie Cache-Haltepunkte strategisch, um verschiedene zwischenspeicherbare Präfix-Abschnitte zu trennen.
  • Analysieren Sie regelmäßig Cache-Hit-Raten und passen Sie Ihre Strategie nach Bedarf an.

Optimierung für verschiedene Anwendungsfälle

Passen Sie Ihre Prompt-Caching-Strategie an Ihr Szenario an:
  • Conversational Agents: Reduzieren Sie Kosten und Latenz für erweiterte Gespräche, besonders solche mit langen Anweisungen oder hochgeladenen Dokumenten.
  • Coding Assistants: Verbessern Sie Autocomplete und Codebase-Q&A, indem Sie relevante Abschnitte oder eine zusammengefasste Version der Codebase im Prompt behalten.
  • Große Dokumentenverarbeitung: Integrieren Sie vollständiges Langform-Material einschließlich Bilder in Ihren Prompt, ohne die Antwortlatenz zu erhöhen.
  • Detaillierte Anweisungssätze: Teilen Sie umfangreiche Listen von Anweisungen, Verfahren und Beispielen, um Claudes Antworten zu verfeinern. Entwickler fügen normalerweise ein oder zwei Beispiele in den Prompt ein, aber mit Prompt-Caching können Sie noch bessere Leistung erzielen, indem Sie 20+ diverse Beispiele von hochwertigen Antworten einbeziehen.
  • Agentic Tool Use: Verbessern Sie die Leistung für Szenarien mit mehreren Tool-Aufrufen und iterativen Code-Änderungen, bei denen jeder Schritt normalerweise einen neuen API-Aufruf erfordert.
  • Sprechen Sie mit Büchern, Papieren, Dokumentation, Podcast-Transkripten und anderen Langform-Inhalten: Bringen Sie jede Wissensbasis zum Leben, indem Sie das gesamte Dokument(e) in den Prompt einbetten und Benutzer es befragen lassen.

Fehlerbehebung bei häufigen Problemen

Wenn Sie unerwartet Verhalten erleben:
  • Stellen Sie sicher, dass zwischengespeicherte Abschnitte identisch sind und mit cache_control an den gleichen Stellen über Aufrufe hinweg gekennzeichnet sind
  • Überprüfen Sie, dass Aufrufe innerhalb der Cache-Lebensdauer (standardmäßig 5 Minuten) erfolgen
  • Überprüfen Sie, dass tool_choice und die Bildnutzung zwischen Aufrufen konsistent bleiben
  • Validieren Sie, dass Sie mindestens die Mindestanzahl von Token zwischenspeichern
  • Das System prüft automatisch auf Cache-Treffer an vorherigen Inhaltsblock-Grenzen (bis zu ~20 Blöcke vor Ihrem Haltepunkt). Für Prompts mit mehr als 20 Inhaltsblöcken benötigen Sie möglicherweise zusätzliche cache_control-Parameter früher im Prompt, um sicherzustellen, dass alle Inhalte zwischengespeichert werden können
  • Überprüfen Sie, dass die Schlüssel in Ihren tool_use-Inhaltsblöcken stabile Ordnung haben, da einige Sprachen (z. B. Swift, Go) die Schlüsselreihenfolge während der JSON-Konvertierung randomisieren und Caches unterbrechen
Änderungen an tool_choice oder das Vorhandensein/Fehlen von Bildern an einer beliebigen Stelle im Prompt machen den Cache ungültig und erfordern die Erstellung eines neuen Cache-Eintrags. Weitere Details zur Cache-Ungültigmachung finden Sie unter Was den Cache ungültig macht.

Caching mit Thinking-Blöcken

Bei Verwendung von Extended Thinking mit Prompt-Caching haben Thinking-Blöcke ein spezielles Verhalten: Automatisches Caching zusammen mit anderen Inhalten: Während Thinking-Blöcke nicht explizit mit cache_control gekennzeichnet werden können, werden sie als Teil des Anfrageinhalts zwischengespeichert, wenn Sie nachfolgende API-Aufrufe mit Tool-Ergebnissen durchführen. Dies geschieht häufig während der Tool-Nutzung, wenn Sie Thinking-Blöcke zurückgeben, um das Gespräch fortzusetzen. Eingabe-Token-Zählung: Wenn Thinking-Blöcke aus dem Cache gelesen werden, zählen sie als Eingabe-Token in Ihren Nutzungsmetriken. Dies ist wichtig für die Kostenberechnung und Token-Budgetierung. Cache-Ungültigmachungsmuster:
  • Der Cache bleibt gültig, wenn nur Tool-Ergebnisse als Benutzermeldungen bereitgestellt werden
  • Der Cache wird ungültig gemacht, wenn Nicht-Tool-Ergebnis-Benutzerinhalte hinzugefügt werden, was dazu führt, dass alle vorherigen Thinking-Blöcke entfernt werden
  • Dieses Caching-Verhalten tritt auch ohne explizite cache_control-Markierungen auf
Weitere Details zur Cache-Ungültigmachung finden Sie unter Was den Cache ungültig macht. Beispiel mit Tool-Nutzung:
Request 1: User: "What's the weather in Paris?"
Response: [thinking_block_1] + [tool_use block 1]

Request 2:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True]
Response: [thinking_block_2] + [text block 2]
# Request 2 caches its request content (not the response)
# The cache includes: user message, thinking_block_1, tool_use block 1, and tool_result_1

Request 3:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [thinking_block_2] + [text block 2],
User: [Text response, cache=True]
# Non-tool-result user block causes all thinking blocks to be ignored
# This request is processed as if thinking blocks were never present
Wenn ein Nicht-Tool-Ergebnis-Benutzerblock enthalten ist, kennzeichnet er eine neue Assistent-Schleife und alle vorherigen Thinking-Blöcke werden aus dem Kontext entfernt. Weitere detaillierte Informationen finden Sie in der Extended-Thinking-Dokumentation.

Cache-Speicherung und Freigabe

  • Organisationsisolation: Caches sind zwischen Organisationen isoliert. Verschiedene Organisationen teilen niemals Caches, auch wenn sie identische Prompts verwenden.
  • Genaue Übereinstimmung: Cache-Treffer erfordern 100% identische Prompt-Segmente, einschließlich aller Texte und Bilder bis zu und einschließlich des Blocks, der mit Cache-Kontrolle gekennzeichnet ist.
  • Ausgabe-Token-Generierung: Prompt-Caching hat keine Auswirkung auf die Ausgabe-Token-Generierung. Die Antwort, die Sie erhalten, ist identisch mit dem, was Sie erhalten würden, wenn Prompt-Caching nicht verwendet würde.

1-Stunden-Cache-Dauer

Falls 5 Minuten zu kurz sind, bietet Anthropic auch eine Cache-Dauer von 1 Stunde gegen zusätzliche Kosten. Um den erweiterten Cache zu verwenden, fügen Sie ttl in die cache_control-Definition wie folgt ein:
"cache_control": {
    "type": "ephemeral",
    "ttl": "5m" | "1h"
}
Die Antwort enthält detaillierte Cache-Informationen wie die folgende:
{
    "usage": {
        "input_tokens": ...,
        "cache_read_input_tokens": ...,
        "cache_creation_input_tokens": ...,
        "output_tokens": ...,

        "cache_creation": {
            "ephemeral_5m_input_tokens": 456,
            "ephemeral_1h_input_tokens": 100,
        }
    }
}
Beachten Sie, dass das aktuelle cache_creation_input_tokens-Feld der Summe der Werte im cache_creation-Objekt entspricht.

Wann der 1-Stunden-Cache verwendet werden sollte

Wenn Sie Prompts haben, die regelmäßig verwendet werden (d. h. System-Prompts, die häufiger als alle 5 Minuten verwendet werden), verwenden Sie weiterhin den 5-Minuten-Cache, da dieser weiterhin ohne zusätzliche Kosten aktualisiert wird. Der 1-Stunden-Cache wird am besten in den folgenden Szenarien verwendet:
  • Wenn Sie Prompts haben, die wahrscheinlich weniger häufig als alle 5 Minuten, aber häufiger als jede Stunde verwendet werden. Zum Beispiel, wenn ein Agentic-Side-Agent länger als 5 Minuten dauert, oder wenn Sie ein langes Chat-Gespräch mit einem Benutzer speichern und Sie im Allgemeinen erwarten, dass dieser Benutzer möglicherweise nicht in den nächsten 5 Minuten antwortet.
  • Wenn Latenz wichtig ist und Ihre nachfolgenden Prompts möglicherweise über 5 Minuten hinaus gesendet werden.
  • Wenn Sie Ihre Rate-Limit-Auslastung verbessern möchten, da Cache-Treffer nicht gegen Ihr Rate-Limit abgezogen werden.
Der 5-Minuten- und 1-Stunden-Cache verhalten sich gleich in Bezug auf Latenz. Sie werden im Allgemeinen eine verbesserte Zeit bis zum ersten Token für lange Dokumente sehen.

Mischen verschiedener TTLs

Sie können sowohl 1-Stunden- als auch 5-Minuten-Cache-Kontrollen in der gleichen Anfrage verwenden, aber mit einer wichtigen Einschränkung: Cache-Einträge mit längerer TTL müssen vor kürzeren TTLs erscheinen (d. h. ein 1-Stunden-Cache-Eintrag muss vor allen 5-Minuten-Cache-Einträgen erscheinen). Beim Mischen von TTLs bestimmen wir drei Abrechnungspositionen in Ihrem Prompt:
  1. Position A: Die Token-Anzahl beim höchsten Cache-Treffer (oder 0, wenn keine Treffer).
  2. Position B: Die Token-Anzahl beim höchsten 1-Stunden-cache_control-Block nach A (oder gleich A, wenn keine existieren).
  3. Position C: Die Token-Anzahl beim letzten cache_control-Block.
Wenn B und/oder C größer als A sind, sind sie notwendigerweise Cache-Fehlschläge, da A der höchste Cache-Treffer ist.
Sie werden berechnet für:
  1. Cache-Lese-Token für A.
  2. 1-Stunden-Cache-Schreib-Token für (B - A).
  3. 5-Minuten-Cache-Schreib-Token für (C - B).
Hier sind 3 Beispiele. Dies zeigt die Eingabe-Token von 3 Anfragen, von denen jede unterschiedliche Cache-Treffer und Cache-Fehlschläge hat. Jede hat eine andere berechnete Preisgestaltung, die in den farbigen Feldern angezeigt wird. Mixing TTLs Diagram

Prompt-Caching-Beispiele

Um Ihnen den Einstieg in Prompt-Caching zu erleichtern, haben wir ein Prompt-Caching-Kochbuch mit detaillierten Beispielen und Best Practices vorbereitet. Unten haben wir mehrere Code-Snippets eingefügt, die verschiedene Prompt-Caching-Muster zeigen. Diese Beispiele demonstrieren, wie man Caching in verschiedenen Szenarien implementiert und helfen Ihnen, die praktischen Anwendungen dieser Funktion zu verstehen:
curl https://api.anthropic.com/v1/messages \
     --header "x-api-key: $ANTHROPIC_API_KEY" \
     --header "anthropic-version: 2023-06-01" \
     --header "content-type: application/json" \
     --data \
'{
    "model": "claude-sonnet-4-5",
    "max_tokens": 1024,
    "system": [
        {
            "type": "text",
            "text": "You are an AI assistant tasked with analyzing legal documents."
        },
        {
            "type": "text",
            "text": "Here is the full text of a complex legal agreement: [Insert full text of a 50-page legal agreement here]",
            "cache_control": {"type": "ephemeral"}
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": "What are the key terms and conditions in this agreement?"
        }
    ]
}'
Dieses Beispiel demonstriert die grundlegende Verwendung von Prompt-Caching und speichert den vollständigen Text der Rechtsvereinbarung als Präfix zwischen, während die Benutzeranweisung nicht zwischengespeichert wird.Für die erste Anfrage:
  • input_tokens: Anzahl der Token nur in der Benutzermeldung
  • cache_creation_input_tokens: Anzahl der Token in der gesamten Systemmeldung, einschließlich des Rechtsdokuments
  • cache_read_input_tokens: 0 (kein Cache-Treffer bei der ersten Anfrage)
Für nachfolgende Anfragen innerhalb der Cache-Lebensdauer:
  • input_tokens: Anzahl der Token nur in der Benutzermeldung
  • cache_creation_input_tokens: 0 (keine neue Cache-Erstellung)
  • cache_read_input_tokens: Anzahl der Token in der gesamten zwischengespeicherten Systemmeldung
curl https://api.anthropic.com/v1/messages \
     --header "x-api-key: $ANTHROPIC_API_KEY" \
     --header "anthropic-version: 2023-06-01" \
     --header "content-type: application/json" \
     --data \
'{
    "model": "claude-sonnet-4-5",
    "max_tokens": 1024,
    "tools": [
        {
            "name": "get_weather",
            "description": "Get the current weather in a given location",
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "The unit of temperature, either celsius or fahrenheit"
                    }
                },
                "required": ["location"]
            }
        },
        # many more tools
        {
            "name": "get_time",
            "description": "Get the current time in a given time zone",
            "input_schema": {
                "type": "object",
                "properties": {
                    "timezone": {
                        "type": "string",
                        "description": "The IANA time zone name, e.g. America/Los_Angeles"
                    }
                },
                "required": ["timezone"]
            },
            "cache_control": {"type": "ephemeral"}
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": "What is the weather and time in New York?"
        }
    ]
}'
In diesem Beispiel demonstrieren wir das Zwischenspeichern von Tool-Definitionen.Der cache_control-Parameter wird auf das letzte Tool (get_time) platziert, um alle Tools als Teil des statischen Präfixes zu kennzeichnen.Dies bedeutet, dass alle Tool-Definitionen, einschließlich get_weather und aller anderen Tools, die vor get_time definiert sind, als ein einzelnes Präfix zwischengespeichert werden.Dieser Ansatz ist nützlich, wenn Sie einen konsistenten Satz von Tools haben, die Sie über mehrere Anfragen hinweg wiederverwenden möchten, ohne sie jedes Mal neu zu verarbeiten.Für die erste Anfrage:
  • input_tokens: Anzahl der Token in der Benutzermeldung
  • cache_creation_input_tokens: Anzahl der Token in allen Tool-Definitionen und System-Prompt
  • cache_read_input_tokens: 0 (kein Cache-Treffer bei der ersten Anfrage)
Für nachfolgende Anfragen innerhalb der Cache-Lebensdauer:
  • input_tokens: Anzahl der Token in der Benutzermeldung
  • cache_creation_input_tokens: 0 (keine neue Cache-Erstellung)
  • cache_read_input_tokens: Anzahl der Token in allen zwischengespeicherten Tool-Definitionen und System-Prompt
curl https://api.anthropic.com/v1/messages \
     --header "x-api-key: $ANTHROPIC_API_KEY" \
     --header "anthropic-version: 2023-06-01" \
     --header "content-type: application/json" \
     --data \
'{
    "model": "claude-sonnet-4-5",
    "max_tokens": 1024,
    "system": [
        {
            "type": "text",
            "text": "...long system prompt",
            "cache_control": {"type": "ephemeral"}
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Hello, can you tell me more about the solar system?",
                }
            ]
        },
        {
            "role": "assistant",
            "content": "Certainly! The solar system is the collection of celestial bodies that orbit our Sun. It consists of eight planets, numerous moons, asteroids, comets, and other objects. The planets, in order from closest to farthest from the Sun, are: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. Each planet has its own unique characteristics and features. Is there a specific aspect of the solar system you would like to know more about?"
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Good to know."
                },
                {
                    "type": "text",
                    "text": "Tell me more about Mars.",
                    "cache_control": {"type": "ephemeral"}
                }
            ]
        }
    ]
}'
In diesem Beispiel demonstrieren wir, wie man Prompt-Caching in einem Multi-Turn-Gespräch verwendet.Während jedes Turns markieren wir den letzten Block der letzten Meldung mit cache_control, damit das Gespräch inkrementell zwischengespeichert werden kann. Das System sucht automatisch nach dem längsten zuvor zwischengespeicherten Präfix für Folgemeldungen. Das heißt, Blöcke, die zuvor mit einem cache_control-Block gekennzeichnet wurden, werden später nicht gekennzeichnet, aber sie werden trotzdem als Cache-Treffer betrachtet (und auch als Cache-Aktualisierung!), wenn sie innerhalb von 5 Minuten getroffen werden.Beachten Sie auch, dass der cache_control-Parameter auf der Systemmeldung platziert wird. Dies soll sicherstellen, dass dieser, falls er aus dem Cache entfernt wird (nachdem er mehr als 5 Minuten lang nicht verwendet wurde), bei der nächsten Anfrage wieder zum Cache hinzugefügt wird.Dieser Ansatz ist nützlich, um den Kontext in laufenden Gesprächen zu bewahren, ohne die gleichen Informationen wiederholt zu verarbeiten.Wenn dies richtig eingerichtet ist, sollten Sie Folgendes in der Nutzungsantwort jeder Anfrage sehen:
  • input_tokens: Anzahl der Token in der neuen Benutzermeldung (wird minimal sein)
  • cache_creation_input_tokens: Anzahl der Token in den neuen Assistent- und Benutzer-Turns
  • cache_read_input_tokens: Anzahl der Token im Gespräch bis zum vorherigen Turn
curl https://api.anthropic.com/v1/messages \
     --header "x-api-key: $ANTHROPIC_API_KEY" \
     --header "anthropic-version: 2023-06-01" \
     --header "content-type: application/json" \
     --data \
'{
    "model": "claude-sonnet-4-5",
    "max_tokens": 1024,
    "tools": [
        {
            "name": "search_documents",
            "description": "Search through the knowledge base",
            "input_schema": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "Search query"
                    }
                },
                "required": ["query"]
            }
        },
        {
            "name": "get_document",
            "description": "Retrieve a specific document by ID",
            "input_schema": {
                "type": "object",
                "properties": {
                    "doc_id": {
                        "type": "string",
                        "description": "Document ID"
                    }
                },
                "required": ["doc_id"]
            },
            "cache_control": {"type": "ephemeral"}
        }
    ],
    "system": [
        {
            "type": "text",
            "text": "You are a helpful research assistant with access to a document knowledge base.\n\n# Instructions\n- Always search for relevant documents before answering\n- Provide citations for your sources\n- Be objective and accurate in your responses\n- If multiple documents contain relevant information, synthesize them\n- Acknowledge when information is not available in the knowledge base",
            "cache_control": {"type": "ephemeral"}
        },
        {
            "type": "text",
            "text": "# Knowledge Base Context\n\nHere are the relevant documents for this conversation:\n\n## Document 1: Solar System Overview\nThe solar system consists of the Sun and all objects that orbit it...\n\n## Document 2: Planetary Characteristics\nEach planet has unique features. Mercury is the smallest planet...\n\n## Document 3: Mars Exploration\nMars has been a target of exploration for decades...\n\n[Additional documents...]",
            "cache_control": {"type": "ephemeral"}
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": "Can you search for information about Mars rovers?"
        },
        {
            "role": "assistant",
            "content": [
                {
                    "type": "tool_use",
                    "id": "tool_1",
                    "name": "search_documents",
                    "input": {"query": "Mars rovers"}
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "tool_result",
                    "tool_use_id": "tool_1",
                    "content": "Found 3 relevant documents: Document 3 (Mars Exploration), Document 7 (Rover Technology), Document 9 (Mission History)"
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "type": "text",
                    "text": "I found 3 relevant documents about Mars rovers. Let me get more details from the Mars Exploration document."
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Yes, please tell me about the Perseverance rover specifically.",
                    "cache_control": {"type": "ephemeral"}
                }
            ]
        }
    ]
}'
Dieses umfassende Beispiel demonstriert, wie man alle 4 verfügbaren Cache-Haltepunkte verwendet, um verschiedene Teile Ihres Prompts zu optimieren:
  1. Tools-Cache (Cache-Haltepunkt 1): Der cache_control-Parameter auf der letzten Tool-Definition speichert alle Tool-Definitionen zwischen.
  2. Wiederverwendbare Anweisungen-Cache (Cache-Haltepunkt 2): Die statischen Anweisungen im System-Prompt werden separat zwischengespeichert. Diese Anweisungen ändern sich selten zwischen Anfragen.
  3. RAG-Kontext-Cache (Cache-Haltepunkt 3): Die Wissensdatenbank-Dokumente werden unabhängig zwischengespeichert, sodass Sie die RAG-Dokumente aktualisieren können, ohne den Tools- oder Anweisungs-Cache ungültig zu machen.
  4. Gesprächsverlauf-Cache (Cache-Haltepunkt 4): Die Assistent-Antwort wird mit cache_control gekennzeichnet, um inkrementelles Caching des Gesprächs zu ermöglichen, während es fortschreitet.
Dieser Ansatz bietet maximale Flexibilität:
  • Wenn Sie nur die letzte Benutzermeldung aktualisieren, werden alle vier Cache-Segmente wiederverwendet
  • Wenn Sie die RAG-Dokumente aktualisieren, aber die gleichen Tools und Anweisungen behalten, werden die ersten zwei Cache-Segmente wiederverwendet
  • Wenn Sie das Gespräch ändern, aber die gleichen Tools, Anweisungen und Dokumente behalten, werden die ersten drei Segmente wiederverwendet
  • Jeder Cache-Haltepunkt kann unabhängig basierend auf dem, was sich in Ihrer Anwendung ändert, ungültig gemacht werden
Für die erste Anfrage:
  • input_tokens: Token in der letzten Benutzermeldung
  • cache_creation_input_tokens: Token in allen zwischengespeicherten Segmenten (Tools + Anweisungen + RAG-Dokumente + Gesprächsverlauf)
  • cache_read_input_tokens: 0 (keine Cache-Treffer)
Für nachfolgende Anfragen mit nur einer neuen Benutzermeldung:
  • input_tokens: Token nur in der neuen Benutzermeldung
  • cache_creation_input_tokens: Alle neuen Token, die zum Gesprächsverlauf hinzugefügt werden
  • cache_read_input_tokens: Alle zuvor zwischengespeicherten Token (Tools + Anweisungen + RAG-Dokumente + vorheriger Gesprächsverlauf)
Dieses Muster ist besonders leistungsstark für:
  • RAG-Anwendungen mit großen Dokumentkontexten
  • Agent-Systeme, die mehrere Tools verwenden
  • Lange laufende Gespräche, die Kontext bewahren müssen
  • Anwendungen, die verschiedene Teile des Prompts unabhängig optimieren müssen

Häufig gestellte Fragen

In den meisten Fällen ist ein einzelner Cache-Haltepunkt am Ende Ihres statischen Inhalts ausreichend. Das System prüft automatisch auf Cache-Treffer an allen vorherigen Inhaltsblock-Grenzen (bis zu 20 Blöcke vor Ihrem Haltepunkt) und verwendet das längste übereinstimmende Präfix.Sie benötigen mehrere Haltepunkte nur, wenn:
  • Sie mehr als 20 Inhaltsblöcke vor Ihrem gewünschten Cache-Punkt haben
  • Sie Abschnitte zwischenspeichern möchten, die sich mit unterschiedlichen Häufigkeiten ändern, unabhängig
  • Sie explizite Kontrolle über das, was zwischengespeichert wird, für Kostenoptimierung benötigen
Beispiel: Wenn Sie Systemanweisungen (ändern sich selten) und RAG-Kontext (ändert sich täglich) haben, könnten Sie zwei Haltepunkte verwenden, um sie separat zwischenzuspeichern.
Nein, Cache-Haltepunkte selbst sind kostenlos. Sie zahlen nur für:
  • Schreiben von Inhalten in den Cache (25% mehr als Basis-Eingabe-Token für 5-Minuten-TTL)
  • Lesen aus dem Cache (10% des Basis-Eingabe-Token-Preises)
  • Reguläre Eingabe-Token für nicht zwischengespeicherten Inhalt
Die Anzahl der Haltepunkte beeinflusst die Preisgestaltung nicht - nur die Menge des zwischengespeicherten und gelesenen Inhalts ist relevant.
Die Standard-Mindestlebensdauer (TTL) des Cache beträgt 5 Minuten. Diese Lebensdauer wird jedes Mal aktualisiert, wenn der zwischengespeicherte Inhalt verwendet wird.Falls 5 Minuten zu kurz sind, bietet Anthropic auch eine 1-Stunden-Cache-TTL.
Sie können bis zu 4 Cache-Haltepunkte (mit cache_control-Parametern) in Ihrem Prompt definieren.
Nein, Prompt-Caching ist derzeit nur für Claude Opus 4.1, Claude Opus 4, Claude Sonnet 4.5, Claude Sonnet 4, Claude Sonnet 3.7, Claude Haiku 4.5, Claude Haiku 3.5, Claude Haiku 3 und Claude Opus 3 (veraltet) verfügbar.
Zwischengespeicherte System-Prompts und Tools werden wiederverwendet, wenn sich Thinking-Parameter ändern. Allerdings machen Thinking-Änderungen (Aktivieren/Deaktivieren oder Budget-Änderungen) zuvor zwischengespeicherte Prompt-Präfixe mit Messages-Inhalt ungültig.Weitere Details zur Cache-Ungültigmachung finden Sie unter Was den Cache ungültig macht.Weitere Informationen zu Extended Thinking, einschließlich seiner Interaktion mit Tool-Nutzung und Prompt-Caching, finden Sie in der Extended-Thinking-Dokumentation.
Um Prompt-Caching zu aktivieren, fügen Sie mindestens einen cache_control-Haltepunkt in Ihre API-Anfrage ein.
Ja, Prompt-Caching kann zusammen mit anderen API-Funktionen wie Tool-Nutzung und Vision-Funktionen verwendet werden. Allerdings wird der Cache unterbrochen, wenn Sie ändern, ob Bilder in einem Prompt vorhanden sind, oder wenn Sie Tool-Nutzungseinstellungen ändern.Weitere Details zur Cache-Ungültigmachung finden Sie unter Was den Cache ungültig macht.
Prompt-Caching führt eine neue Preisstruktur ein, bei der Cache-Schreibvorgänge 25% mehr als Basis-Eingabe-Token kosten, während Cache-Treffer nur 10% des Basis-Eingabe-Token-Preises kosten.
Derzeit gibt es keine Möglichkeit, den Cache manuell zu löschen. Zwischengespeicherte Präfixe verfallen automatisch nach mindestens 5 Minuten Inaktivität.
Sie können die Cache-Leistung mit den Feldern cache_creation_input_tokens und cache_read_input_tokens in der API-Antwort überwachen.
Weitere Details zur Cache-Ungültigmachung finden Sie unter Was den Cache ungültig macht, einschließlich einer Liste von Änderungen, die die Erstellung eines neuen Cache-Eintrags erfordern.
Prompt-Caching ist mit starken Datenschutz- und Datentrennung-Maßnahmen konzipiert:
  1. Cache-Schlüssel werden mit einem kryptografischen Hash der Prompts bis zum Cache-Kontrollpunkt generiert. Dies bedeutet, dass nur Anfragen mit identischen Prompts auf einen bestimmten Cache zugreifen können.
  2. Caches sind organisationsspezifisch. Benutzer innerhalb der gleichen Organisation können auf den gleichen Cache zugreifen, wenn sie identische Prompts verwenden, aber Caches werden nicht über verschiedene Organisationen hinweg geteilt, auch nicht für identische Prompts.
  3. Der Caching-Mechanismus ist so konzipiert, dass die Integrität und der Datenschutz jedes eindeutigen Gesprächs oder Kontexts gewahrt bleibt.
  4. Es ist sicher, cache_control überall in Ihren Prompts zu verwenden. Für Kosteneffizienz ist es besser, hochvariable Teile (z. B. beliebige Benutzereingaben) vom Caching auszuschließen.
Diese Maßnahmen stellen sicher, dass Prompt-Caching Datenschutz und Sicherheit bewahrt, während es Leistungsvorteile bietet.
Ja, es ist möglich, Prompt-Caching mit Ihren Batches API-Anfragen zu verwenden. Allerdings können asynchrone Batch-Anfragen gleichzeitig und in beliebiger Reihenfolge verarbeitet werden, daher werden Cache-Treffer auf Best-Effort-Basis bereitgestellt.Der 1-Stunden-Cache kann helfen, Ihre Cache-Treffer zu verbessern. Die kostengünstigste Methode ist die folgende:
  • Sammeln Sie eine Reihe von Message-Anfragen, die ein gemeinsames Präfix haben.
  • Senden Sie eine Batch-Anfrage mit nur einer Anfrage, die dieses gemeinsame Präfix und einen 1-Stunden-Cache-Block hat. Dies wird in den 1-Stunden-Cache geschrieben.
  • Sobald dies abgeschlossen ist, senden Sie die restlichen Anfragen. Sie müssen den Job überwachen, um zu wissen, wann er abgeschlossen ist.
Dies ist normalerweise besser als die Verwendung des 5-Minuten-Cache, einfach weil es üblich ist, dass Batch-Anfragen zwischen 5 Minuten und 1 Stunde dauern. Wir erwägen Möglichkeiten, diese Cache-Hit-Raten zu verbessern und diesen Prozess unkomplizierter zu gestalten.
Dieser Fehler tritt normalerweise auf, wenn Sie Ihr SDK aktualisiert haben oder veraltete Code-Beispiele verwenden. Prompt-Caching ist jetzt allgemein verfügbar, daher benötigen Sie das Beta-Präfix nicht mehr. Statt:
python client.beta.prompt_caching.messages.create(...)
Verwenden Sie einfach:
python client.messages.create(...)
Dieser Fehler tritt normalerweise auf, wenn Sie Ihr SDK aktualisiert haben oder veraltete Code-Beispiele verwenden. Prompt-Caching ist jetzt allgemein verfügbar, daher benötigen Sie das Beta-Präfix nicht mehr. Statt:
TypeScript
client.beta.promptCaching.messages.create(...)
Verwenden Sie einfach:
client.messages.create(...)