cache_control
-Blocks implementieren:
cache_control
-Parameter 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 Benutzernachricht ändern, können Sie verschiedene Fragen zum Buch stellen, während Sie den zwischengespeicherten Inhalt nutzen, was zu schnelleren Antworten und verbesserter Effizienz führt.
tools
, system
und messages
(in dieser Reihenfolge) bis einschließlich des mit cache_control
bezeichneten Blocks.Model | Base Input Tokens | 5m Cache Writes | 1h Cache Writes | Cache Hits & Refreshes | Output 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 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
Claude Sonnet 3.7 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
Claude Sonnet 3.5 (deprecated) | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / 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 |
cache_control
-Parameter.
Cache-Präfixe werden in der folgenden Reihenfolge erstellt: tools
, system
, dann messages
. Diese Reihenfolge bildet eine Hierarchie, in der jede Ebene auf den vorherigen aufbaut.
cache_control
-Breakpoint hinzufügen, überprüft das System automatisch Cache-Treffer an allen vorherigen Inhaltsblock-Grenzen (bis zu etwa 20 Blöcke vor Ihrem expliziten Breakpoint)cache_control
markiert 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-Nutzungs-Felder.
Für gleichzeitige Anfragen beachten Sie, 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 5-Minuten-Lebensdauer hat.
cache_control
-Breakpoints erhöht Ihre Kosten nicht - Sie zahlen immer noch den gleichen Betrag basierend darauf, welcher Inhalt tatsächlich zwischengespeichert und gelesen wird. Die Breakpoints geben Ihnen einfach Kontrolle darüber, welche Abschnitte unabhängig zwischengespeichert werden können.
cache_control
für das Caching bestimmt werden. Dies umfasst:
tools
-Arraysystem
-Arraymessages.content
-Array, sowohl für Benutzer- als auch Assistenten-Turnsmessages.content
-Array, in Benutzer-Turnsmessages.content
-Array, sowohl in Benutzer- als auch Assistenten-Turnscache_control
markiert werden, um Caching für diesen Teil der Anfrage zu ermöglichen.
cache_control
zwischengespeichert werden. Thinking-Blöcke KÖNNEN jedoch zusammen mit anderem Inhalt zwischengespeichert werden, wenn sie in vorherigen Assistenten-Turns erscheinen. Wenn sie auf diese Weise zwischengespeichert werden, zählen sie als Eingabetoken, wenn sie aus dem Cache gelesen werden.
tools
→ system
→ messages
. Änderungen auf jeder Ebene machen diese Ebene und alle nachfolgenden Ebenen ungültig.
Die folgende Tabelle zeigt, welche Teile des Caches 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 ändert | Tools-Cache | System-Cache | Messages-Cache | Auswirkung |
---|---|---|---|---|
Tool-Definitionen | ✘ | ✘ | ✘ | Das Ändern von Tool-Definitionen (Namen, Beschreibungen, Parameter) macht den gesamten Cache ungültig |
Web-Suche-Umschalter | ✓ | ✘ | ✘ | Das Aktivieren/Deaktivieren der Web-Suche ändert den System-Prompt |
Zitate-Umschalter | ✓ | ✘ | ✘ | Das Aktivieren/Deaktivieren von Zitaten ändert den System-Prompt |
Tool-Auswahl | ✓ | ✓ | ✘ | Änderungen am tool_choice -Parameter betreffen nur Message-Blöcke |
Bilder | ✓ | ✓ | ✘ | Das Hinzufügen/Entfernen von Bildern irgendwo im Prompt betrifft Message-Blöcke |
Thinking-Parameter | ✓ | ✓ | ✘ | Änderungen an erweiterten Thinking-Einstellungen (aktivieren/deaktivieren, Budget) betreffen Message-Blöcke |
Nicht-Tool-Ergebnisse, die an erweiterte Thinking-Anfragen übergeben werden | ✓ | ✓ | ✘ | Wenn Nicht-Tool-Ergebnisse in Anfragen übergeben werden, während erweitertes Thinking aktiviert ist, werden alle zuvor zwischengespeicherten Thinking-Blöcke aus dem Kontext entfernt, und alle Nachrichten im Kontext, die diesen Thinking-Blöcken folgen, werden aus dem Cache entfernt. Für weitere Details siehe Caching mit Thinking-Blöcken. |
usage
in der Antwort (oder message_start
-Event bei Streaming):
cache_creation_input_tokens
: Anzahl der Token, die in den Cache geschrieben wurden, als ein neuer Eintrag erstellt wurde.cache_read_input_tokens
: Anzahl der Token, die aus dem Cache für diese Anfrage abgerufen wurden.input_tokens
: Anzahl der Eingabetoken, die nicht aus dem Cache gelesen oder zum Erstellen eines Caches verwendet wurden.tool_choice
und Bildverwendung zwischen Aufrufen konsistent bleibencache_control
-Parameter früher im Prompt, um sicherzustellen, dass der gesamte Inhalt zwischengespeichert werden kanntool_choice
oder das Vorhandensein/Fehlen von Bildern irgendwo im Prompt machen den Cache ungültig und erfordern die Erstellung eines neuen Cache-Eintrags. Für weitere Details zur Cache-Invalidierung siehe Was den Cache ungültig macht.cache_control
markiert werden können, werden sie als Teil des Anfrageinhalts zwischengespeichert, wenn Sie nachfolgende API-Aufrufe mit Tool-Ergebnissen machen. Dies geschieht häufig während der Tool-Verwendung, wenn Sie Thinking-Blöcke zurückgeben, um das Gespräch fortzusetzen.
Eingabetoken-Zählung: Wenn Thinking-Blöcke aus dem Cache gelesen werden, zählen sie als Eingabetoken in Ihren Nutzungsmetriken. Dies ist wichtig für Kostenberechnung und Token-Budgetierung.
Cache-Invalidierungsmuster:
cache_control
-Markierungen aufttl
in die cache_control
-Definition wie folgt ein:
cache_creation_input_tokens
-Feld der Summe der Werte im cache_creation
-Objekt entspricht.
A
: Die Token-Anzahl beim höchsten Cache-Treffer (oder 0, wenn keine Treffer).B
: Die Token-Anzahl beim höchsten 1-Stunden-cache_control
-Block nach A
(oder gleich A
, wenn keine existieren).C
: Die Token-Anzahl beim letzten cache_control
-Block.B
und/oder C
größer als A
sind, werden sie notwendigerweise Cache-Fehlschläge sein, weil A
der höchste Cache-Treffer ist.A
.(B - A)
.(C - B)
.Beispiel für großen Kontext-Cache
input_tokens
: Anzahl der Token nur in der Benutzernachrichtcache_creation_input_tokens
: Anzahl der Token in der gesamten Systemnachricht, einschließlich des Rechtsdokumentscache_read_input_tokens
: 0 (kein Cache-Treffer bei der ersten Anfrage)input_tokens
: Anzahl der Token nur in der Benutzernachrichtcache_creation_input_tokens
: 0 (keine neue Cache-Erstellung)cache_read_input_tokens
: Anzahl der Token in der gesamten zwischengespeicherten SystemnachrichtZwischenspeichern von Tool-Definitionen
cache_control
-Parameter wird auf das finale Tool (get_time
) platziert, um alle Tools als Teil des statischen Präfixes zu bezeichnen.Das bedeutet, dass alle Tool-Definitionen, einschließlich get_weather
und aller anderen vor get_time
definierten Tools, als ein einziger 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 Benutzernachrichtcache_creation_input_tokens
: Anzahl der Token in allen Tool-Definitionen und System-Promptcache_read_input_tokens
: 0 (kein Cache-Treffer bei der ersten Anfrage)input_tokens
: Anzahl der Token in der Benutzernachrichtcache_creation_input_tokens
: 0 (keine neue Cache-Erstellung)cache_read_input_tokens
: Anzahl der Token in allen zwischengespeicherten Tool-Definitionen und System-PromptFortsetzen eines mehrteiligen Gesprächs
cache_control
, damit das Gespräch inkrementell zwischengespeichert werden kann. Das System wird automatisch den längsten zuvor zwischengespeicherten Präfix für Folgenachrichten nachschlagen und verwenden. Das heißt, Blöcke, die zuvor mit einem cache_control
-Block markiert waren, werden später nicht mit diesem markiert, aber sie werden immer noch als Cache-Treffer (und auch als Cache-Aktualisierung!) betrachtet, wenn sie innerhalb von 5 Minuten getroffen werden.Zusätzlich beachten Sie, dass der cache_control
-Parameter auf die Systemnachricht platziert wird. Dies soll sicherstellen, dass wenn dies aus dem Cache entfernt wird (nachdem es mehr als 5 Minuten nicht verwendet wurde), es bei der nächsten Anfrage wieder zum Cache hinzugefügt wird.Dieser Ansatz ist nützlich für die Aufrechterhaltung des Kontexts in laufenden Gesprächen, ohne wiederholt dieselben Informationen zu verarbeiten.Wenn dies richtig eingerichtet ist, sollten Sie das Folgende in der Nutzungsantwort jeder Anfrage sehen:input_tokens
: Anzahl der Token in der neuen Benutzernachricht (wird minimal sein)cache_creation_input_tokens
: Anzahl der Token in den neuen Assistenten- und Benutzer-Turnscache_read_input_tokens
: Anzahl der Token im Gespräch bis zum vorherigen TurnAlles zusammenfügen: Mehrere Cache-Breakpoints
cache_control
-Parameter auf der letzten Tool-Definition speichert alle Tool-Definitionen zwischen.
cache_control
markiert, um inkrementelles Caching des Gesprächs während seines Fortschreitens zu ermöglichen.
input_tokens
: Token in der finalen Benutzernachrichtcache_creation_input_tokens
: Token in allen zwischengespeicherten Segmenten (Tools + Anweisungen + RAG-Dokumente + Gesprächsverlauf)cache_read_input_tokens
: 0 (keine Cache-Treffer)input_tokens
: Token nur in der neuen Benutzernachrichtcache_creation_input_tokens
: Alle neuen Token, die zum Gesprächsverlauf hinzugefügt wurdencache_read_input_tokens
: Alle zuvor zwischengespeicherten Token (Tools + Anweisungen + RAG-Dokumente + vorheriges Gespräch)Benötige ich mehrere Cache-Breakpoints oder ist einer am Ende ausreichend?
Fügen Cache-Breakpoints zusätzliche Kosten hinzu?
Was ist die Cache-Lebensdauer?
Wie viele Cache-Breakpoints kann ich verwenden?
cache_control
-Parametern) in Ihrem Prompt definieren.Ist Prompt-Caching für alle Modelle verfügbar?
Wie funktioniert Prompt-Caching mit erweitertem Thinking?
Wie aktiviere ich Prompt-Caching?
cache_control
-Breakpoint in Ihre API-Anfrage ein.Kann ich Prompt-Caching mit anderen API-Funktionen verwenden?
Wie beeinflusst Prompt-Caching die Preisgestaltung?
Kann ich den Cache manuell löschen?
Wie kann ich die Effektivität meiner Caching-Strategie verfolgen?
cache_creation_input_tokens
und cache_read_input_tokens
in der API-Antwort überwachen.Was kann den Cache brechen?
Wie handhabt Prompt-Caching Datenschutz und Datentrennung?
cache_control
überall in Ihren Prompts zu verwenden. Für Kosteneffizienz ist es besser, hochvariable Teile (z.B. beliebige Benutzereingaben) vom Caching auszuschließen.
Kann ich Prompt-Caching mit der Batches API verwenden?
Warum sehe ich den Fehler `AttributeError: 'Beta' object has no attribute 'prompt_caching'` in Python?
Warum sehe ich 'TypeError: Cannot read properties of undefined (reading 'messages')'?