Prompt-Caching
Prompt-Caching ist eine leistungsstarke Funktion, die Ihre API-Nutzung optimiert, indem sie das Fortsetzen von bestimmten Präfixen in Ihren Prompts ermöglicht. Dieser Ansatz reduziert die Verarbeitungszeit und Kosten für sich wiederholende Aufgaben oder Prompts mit konsistenten Elementen erheblich.
Hier ist ein Beispiel, wie man Prompt-Caching mit der Messages API unter Verwendung eines cache_control
Blocks implementiert:
In diesem Beispiel wird der gesamte Text von “Stolz und Vorurteil” mithilfe des cache_control
Parameters zwischengespeichert. Dies ermöglicht die Wiederverwendung dieses umfangreichen Textes über mehrere API-Aufrufe hinweg, ohne ihn jedes Mal neu verarbeiten zu müssen. Durch Änderung nur der Benutzernachricht können Sie verschiedene Fragen über das 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:
- Das System prüft, ob ein Prompt-Präfix bis zu einem bestimmten Cache-Breakpoint bereits aus einer kürzlichen Abfrage zwischengespeichert ist.
- Falls gefunden, wird die zwischengespeicherte Version verwendet, was die Verarbeitungszeit und Kosten reduziert.
- Andernfalls wird der vollständige Prompt verarbeitet und der Präfix für zukünftige Verwendung zwischengespeichert.
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 Mehrfach-Konversationen
Der Cache hat eine Lebensdauer von 5 Minuten, die bei jeder Verwendung des zwischengespeicherten Inhalts erneuert wird.
Prompt-Caching speichert den vollständigen Präfix zwischen
Prompt-Caching bezieht sich auf den gesamten Prompt - tools
, system
und messages
(in dieser Reihenfolge) bis 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 Token für jedes unterstützte Modell:
Modell | Basis-Eingabe-Token | Cache-Schreibvorgänge | Cache-Treffer | Ausgabe-Token |
---|---|---|---|---|
Claude 3.5 Sonnet | $3 / MTok | $3,75 / MTok | $0,30 / MTok | $15 / MTok |
Claude 3.5 Haiku | $1 / MTok | $1,25 / MTok | $0,10 / MTok | $5 / MTok |
Claude 3 Haiku | $0,25 / MTok | $0,30 / MTok | $0,03 / MTok | $1,25 / MTok |
Claude 3 Opus | $15 / MTok | $18,75 / MTok | $1,50 / MTok | $75 / MTok |
Hinweis:
- Cache-Schreib-Token sind 25% teurer als Basis-Eingabe-Token
- Cache-Lese-Token sind 90% günstiger als Basis-Eingabe-Token
- Reguläre Ein- und Ausgabe-Token werden zu Standardpreisen berechnet
Wie man Prompt-Caching implementiert
Unterstützte Modelle
Prompt-Caching wird derzeit unterstützt von:
- Claude 3.5 Sonnet
- Claude 3.5 Haiku
- Claude 3 Haiku
- Claude 3 Opus
Strukturierung Ihres Prompts
Platzieren Sie statische Inhalte (Tool-Definitionen, System-Anweisungen, Kontext, Beispiele) am Anfang Ihres Prompts. Markieren Sie das Ende des wiederverwendbaren Inhalts für das Caching mit dem cache_control
Parameter.
Cache-Präfixe werden in folgender Reihenfolge erstellt: tools
, system
, dann messages
.
Mit dem cache_control
Parameter können Sie bis zu 4 Cache-Breakpoints definieren, wodurch Sie verschiedene wiederverwendbare Abschnitte separat zwischenspeichern können.
Cache-Einschränkungen
Die minimale zwischenspeicherbare Prompt-Länge beträgt:
- 1024 Token für Claude 3.5 Sonnet und Claude 3 Opus
- 2048 Token für Claude 3.5 Haiku und Claude 3 Haiku
Kürzere Prompts können nicht zwischengespeichert werden, auch wenn sie mit 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-Nutzungsfelder.
Der Cache hat eine Lebensdauer (TTL) von 5 Minuten. Derzeit ist “ephemeral” der einzige unterstützte Cache-Typ, der dieser 5-Minuten-Lebensdauer entspricht.
Was zwischengespeichert werden kann
Jeder Block in der Anfrage kann mit cache_control
für das Caching gekennzeichnet werden. Dies umfasst:
- Tools: Tool-Definitionen im
tools
Array - System-Nachrichten: Inhaltsblöcke im
system
Array - Nachrichten: Inhaltsblöcke im
messages.content
Array, sowohl für Benutzer- als auch Assistenten-Turns - Bilder: Inhaltsblöcke im
messages.content
Array, in Benutzer-Turns - Tool-Verwendung und Tool-Ergebnisse: Inhaltsblöcke im
messages.content
Array, sowohl in Benutzer- als auch Assistenten-Turns
Jedes dieser Elemente kann mit cache_control
markiert werden, um das Caching für diesen Teil der Anfrage zu aktivieren.
Überwachung der Cache-Leistung
Überwachen Sie die Cache-Leistung mit diesen API-Antwortfeldern, innerhalb von usage
in der Antwort (oder message_start
Event beim Streaming):
cache_creation_input_tokens
: Anzahl der Token, die beim Erstellen eines neuen Eintrags in den Cache geschrieben wurden.cache_read_input_tokens
: Anzahl der Token, die für diese Anfrage aus dem Cache abgerufen wurden.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 Prompt-Caching-Leistung zu optimieren:
- Zwischenspeichern Sie stabile, wiederverwendbare Inhalte wie System-Anweisungen, Hintergrundinformationen, große Kontexte oder häufige Tool-Definitionen.
- Platzieren Sie zwischengespeicherte Inhalte am Anfang des Prompts für beste Leistung.
- Nutzen Sie Cache-Breakpoints strategisch, um verschiedene zwischenspeicherbare Präfix-Abschnitte zu trennen.
- Analysieren Sie regelmäßig Cache-Trefferquoten und passen Sie Ihre Strategie bei Bedarf an.
Optimierung für verschiedene Anwendungsfälle
Passen Sie Ihre Prompt-Caching-Strategie an Ihr Szenario an:
- Konversationsagenten: Reduzieren Sie Kosten und Latenz für längere Gespräche, besonders solche mit langen Anweisungen oder hochgeladenen Dokumenten.
- Coding-Assistenten: Verbessern Sie Autovervollständigung 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 Erhöhung der Antwortlatenz.
- Detaillierte Anweisungssätze: Teilen Sie umfangreiche Listen von Anweisungen, Prozeduren und Beispielen, um Claudes Antworten zu verfeinern. Entwickler fügen oft ein oder zwei Beispiele im Prompt ein, aber mit Prompt-Caching können Sie noch bessere Leistung erzielen, indem Sie 20+ verschiedene Beispiele hochwertiger Antworten einbinden.
- Agentische Werkzeugnutzung: Verbessern Sie die Leistung für Szenarien mit mehreren Werkzeugaufrufen und iterativen Codeänderungen, bei denen jeder Schritt typischerweise einen neuen API-Aufruf erfordert.
- Sprechen Sie mit Büchern, Papieren, Dokumentationen, Podcast-Transkripten und anderen Langform-Inhalten: Erwecken Sie jede Wissensbasis zum Leben, indem Sie das gesamte Dokument/die Dokumente in den Prompt einbetten und Benutzer Fragen dazu stellen lassen.
Fehlerbehebung häufiger Probleme
Bei unerwartetem Verhalten:
- Stellen Sie sicher, dass zwischengespeicherte Abschnitte identisch sind und mit cache_control an denselben Stellen über Aufrufe hinweg markiert sind
- Prüfen Sie, ob Aufrufe innerhalb der 5-Minuten-Cache-Lebensdauer erfolgen
- Überprüfen Sie, dass
tool_choice
und Bildverwendung zwischen Aufrufen konsistent bleiben - Validieren Sie, dass Sie mindestens die Mindestanzahl an Token zwischenspeichern
Beachten Sie, dass Änderungen an tool_choice
oder das Vorhandensein/Fehlen von Bildern irgendwo im Prompt den Cache ungültig machen und die Erstellung eines neuen Cache-Eintrags erfordern.
Cache-Speicherung und -Freigabe
-
Organisations-Isolation: Caches sind zwischen Organisationen isoliert. Verschiedene Organisationen teilen niemals Caches, auch wenn sie identische Prompts verwenden.
-
Exakte Übereinstimmung: Cache-Treffer erfordern 100% identische Prompt-Segmente, einschließlich aller Texte und Bilder bis einschließlich des mit cache control markierten Blocks. Derselbe Block muss während Cache-Lesevorgängen und -Erstellung mit cache_control markiert sein.
-
Ausgabe-Token-Generierung: Prompt-Caching hat keinen Einfluss auf die Ausgabe-Token-Generierung. Die Antwort, die Sie erhalten, wird identisch sein mit der, die Sie ohne Prompt-Caching erhalten würden.
Prompt-Caching-Beispiele
Um Ihnen den Einstieg in das Prompt-Caching zu erleichtern, haben wir ein Prompt-Caching-Kochbuch mit detaillierten Beispielen und Best Practices vorbereitet.
Nachfolgend haben wir mehrere Code-Snippets aufgenommen, die verschiedene Prompt-Caching-Muster demonstrieren. Diese Beispiele zeigen, wie man Caching in verschiedenen Szenarien implementiert und helfen Ihnen, die praktischen Anwendungen dieser Funktion zu verstehen:
FAQ
Was this page helpful?