BlogKosten

Messen, was Prompt-Caching tatsächlich spart

Einsparungen durch Caching enttäuschen aus drei Gründen. Die Schlagzeilenwerte gelten nur für Eingabetoken, die aus dem Cache gelesen wurden, und Ausgabetoken werden gar nicht gecacht. Das Schreiben in den Cache kostet meist mehr als gewöhnliche Eingabe. Und viele Anfragen verfehlen den Cache, weil das Präfix zu kurz, verändert, abgelaufen oder noch nicht geschrieben ist. Messen Sie die Ersparnis pro Anfrage aus den Nutzungsfeldern des Anbieters, vergleichen Sie sie mit dem, was dieselben Token ohne Cache gekostet hätten, und gleichen Sie das Ergebnis mit der Rechnung ab, bevor Sie eine Zahl berichten.

Aktualisiert am

Warum die Schlagzeile Ihre Ersparnis überzeichnet

Als Anthropic 2024 Prompt-Caching einführte, beschrieb es Kostensenkungen von bis zu 90 Prozent für lange Prompts, mit Cache-Lesezugriffen zu 10 Prozent des Basispreises für Eingaben und Cache-Schreibzugriffen zu 25 Prozent Aufschlag. Die aktuelle Dokumentation nennt für einige neuere Modelle andere Lesepreise, und OpenAI veröffentlicht eigene Sätze. So oder so gilt der Rabatt nur für gecachte Eingabetoken.

Eine hypothetische Rechnung zeigt den Effekt. Eingaben machen 60 Prozent der Kosten aus, Ausgaben 40 Prozent. Von den Eingabetoken werden 70 Prozent zum 0,1-Fachen des Basispreises aus dem Cache gelesen, 10 Prozent zum 1,25-Fachen geschrieben, und 20 Prozent bleiben ungecacht. Die Eingaben kosten nun das 0,395-Fache, also 60 Prozent weniger. Die Gesamtrechnung sinkt um etwa 36 Prozent, weit entfernt von 90.

Sieben häufige Gründe, warum Anfragen den Cache verfehlen

Die folgenden Details stammen aus der Caching-Dokumentation von Anthropic und OpenAI zum Zeitpunkt des Schreibens. Prüfen Sie die aktuellen Seiten für Ihre Modelle, denn Mindestlängen und Lebensdauern unterscheiden sich je Modell.

  • Das Präfix liegt unter der Mindestlänge für Caching. Anthropic verarbeitet solche Anfragen ohne Cache und meldet keinen Fehler, beide Cache-Felder stehen dann auf null.
  • Vor dem Breakpoint ändert sich etwas: ein Zeitstempel, ein Nutzername, umsortierte oder geänderte Tool-Definitionen. Der Cache von Anthropic folgt der Reihenfolge Tools, System, Nachrichten, und eine Änderung auf einer Ebene macht alles danach ungültig.
  • Der Breakpoint liegt auf Inhalt, der sich bei jeder Anfrage ändert. Jede Anfrage bezahlt dann einen Schreibvorgang, und keine liest ihn je.
  • Einträge laufen zwischen Anfragen ab. Bei Anthropic beträgt die Standardlebensdauer fünf Minuten und verlängert sich bei jeder Nutzung. Bei OpenAI sind es für die neuesten Modelle standardmäßig 30 Minuten. Längere Lebensdauern kosten beim Schreiben mehr.
  • Parallele Anfragen starten gleichzeitig. Anthropic weist darauf hin, dass ein Eintrag erst verfügbar ist, wenn die erste Antwort beginnt. Eine Welle gleicher Anfragen schreibt also durchweg.
  • Der Traffic verteilt sich dort, wo Caches nicht geteilt werden. Anthropic trennt Caches auf seiner eigenen API pro Workspace. OpenAI routet nach Präfix, empfiehlt für ältere Modelle einen prompt_cache_key und warnt, dass stark genutzte Schlüssel ab etwa 15 Anfragen pro Minute auf andere Maschinen ausweichen können.
  • Ein Gespräch wächst über das Rückblickfenster hinaus. Anthropic prüft höchstens 20 Blöcke vor einem Breakpoint, lange Runden können also am letzten Cache-Eintrag vorbeilaufen, wenn Sie keinen zweiten Breakpoint setzen.

Aus den Nutzungsfeldern messen, Anfrage für Anfrage

Jede Antwort meldet, was passiert ist. Anthropic liefert cache_read_input_tokens, cache_creation_input_tokens und input_tokens, wobei input_tokens nur zählt, was nach dem letzten Breakpoint folgt. Die gesamte Eingabe ist also die Summe aller drei. OpenAI meldet cached_tokens, bei Modellen vor GPT-5.6 abgerundet auf ein Vielfaches von 128, bei neueren Modellen bis zur exakten getroffenen Grenze, und bei neueren Modellen zusätzlich cache_write_tokens. Protokollieren Sie diese Felder für jede Anfrage zusammen mit Funktion, Modell und Mandant, und berechnen Sie dann pro Funktion drei Werte:

  1. 1

    Leseanteil

    Gecachte Eingabetoken geteilt durch alle Eingabetoken. Das ist die Trefferquote, die zählt, weil sie nach Token gewichtet ist und nicht nach Anfragen.

  2. 2

    Schreibanteil

    Cache-Schreibtoken geteilt durch alle Eingabetoken. Ein hoher Schreib- bei niedrigem Leseanteil bedeutet, dass Sie einen Aufschlag für Einträge zahlen, die niemand wiederverwendet.

  3. 3

    Nettoersparnis

    Was alle Eingabetoken zum Basispreis gekostet hätten, abzüglich dessen, was sie zu den tatsächlich angewandten Lese-, Schreib- und Basispreisen gekostet haben, geteilt durch die Gesamtkosten einschließlich Ausgabe.

Mit dem Bericht des Anbieters abgleichen

Ihre eigenen Logs können Anfragen übersehen, und Ihre Preistabelle kann veraltet sein. Die Usage and Cost API von Anthropic schlüsselt die Tokennutzung in ungecachte Eingabe, gecachte Eingabe, Cache-Erstellung und Ausgabe auf, gruppierbar nach Modell, Workspace und API-Schlüssel, und ihr Kostenbericht nennt Beträge in US-Dollar. OpenAI bietet ein Dashboard für Prompt-Caching mit Trefferquoten. Vergleichen Sie die Monatssummen aus Ihren Logs mit diesen Berichten. Eine Abweichung deutet auf nicht protokollierten Traffic, einen falschen Preis oder eine falsch benannte Funktion hin.

Auf Ihren eigenen vLLM-Servern gibt es keinen Rabatt pro Token. Automatic Prefix Caching spart die erneute Berechnung eines gemeinsamen Präfixes, verkürzt damit den Prefill und macht GPU-Zeit frei, und vLLM zählt Abfragen und Treffer des Präfix-Cache. Zu Geld wird die Ersparnis erst, wenn Sie dank der frei gewordenen Kapazität weniger GPUs betreiben.

Maßnahmen, die den Leseanteil meist erhöhen

  • Stabile Inhalte nach vorn: Tool-Definitionen, Anweisungen und Referenzmaterial, alles Nutzer- oder Anfragespezifische hinter den Breakpoint
  • Reihenfolge und Serialisierung der Tools einfrieren, damit dieselben Tools byteidentische Präfixe erzeugen
  • Vor einer parallelen Welle mit gemeinsamem Präfix eine Aufwärmanfrage senden
  • Eine längere Lebensdauer nur wählen, wo der Abstand zwischen Anfragen die Standardzeit übersteigt und sich der Schreibaufschlag rechnet

Fragen

Lohnt es sich, für eine längere Cache-Lebensdauer zu bezahlen?

Rechnen Sie es pro Präfix aus. Hypothetisch läuft ein Präfix, das dreimal pro Stunde im Abstand von 20 Minuten genutzt wird, bei der Standardzeit von fünf Minuten bei Anthropic jedes Mal ab und kostet drei Schreibvorgänge zum 1,25-Fachen des Basispreises, also 3,75. Mit der Option für eine Stunde kosten ein Schreibvorgang zum 2-Fachen und zwei Lesevorgänge zum 0,1-Fachen zusammen 2,2. Prüfen Sie die aktuellen Sätze für Ihr Modell, bevor Sie sich auf die Rechnung verlassen.

Kann Caching Daten eines Kunden für einen anderen sichtbar machen?

Beide Anbieter geben an, dass Caches nicht zwischen Organisationen geteilt werden. Innerhalb Ihrer eigenen Organisation empfiehlt OpenAI getrennte prompt_cache_key-Werte pro Kunde. Das hält die Cache-Abrechnung auseinander und verhindert, dass jemand über Cache-Treffer nach Inhalten anderer Nutzer sondiert. Anthropic trennt Caches auf seiner eigenen API pro Workspace.

Wer sollte für die Caching-Zahlen verantwortlich sein?

Das Team, dem der Prompt der jeweiligen Funktion gehört, denn die meisten Misses entstehen durch die Struktur des Prompts. Ein Plattform- oder Kostenverantwortlicher sollte Leseanteil und Nettoersparnis je Funktion neben der Rechnung veröffentlichen. Cloudsail kann dieses Reporting gemeinsam mit Ihrem Plattformteam aufsetzen. Bei Coding-Agenten, die Anweisungsdateien und Repository-Kontext mit vielen Anfragen erneut senden, gehören dieselben Messungen zu Cloudsails Kostenarbeit für Coding-Agenten.

Mit einem Engineer sprechen

Bringen Sie eine Aufgabe mit, die Sie verbessern möchten. Das Gespräch dauert 30 Minuten und braucht keinen Zugriff auf Ihre Systeme oder Ihre Daten.

Die Buchung läuft über Google Kalender.

Lieber zuerst schreiben? Hinterlassen Sie Ihre E-Mail-Adresse und ein paar Zeilen, dann antworten wir mit Terminvorschlägen.

Die Schaltfläche bereitet in Ihrem eigenen E-Mail-Programm eine E-Mail vor, die Sie selbst senden. Datenschutzerklärung (Entwurf)