Prompt-Caching (Beta)
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 für die Implementierung von Prompt-Caching mit der Messages API unter Verwendung eines cache_control
Blocks:
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. Wenn Sie nur die Benutzernachricht ändern, können Sie verschiedene Fragen über das Buch stellen und dabei den zwischengespeicherten Inhalt nutzen, was zu schnelleren Antworten und verbesserter Effizienz führt.
Prompt-Caching ist in der Beta-Phase
Wir freuen uns, ankündigen zu können, dass Prompt-Caching jetzt in der öffentlichen Beta-Phase ist! Um auf diese Funktion zugreifen zu können, müssen Sie den Header anthropic-beta: prompt-caching-2024-07-31
in Ihren API-Anfragen einschließen.
Wir werden diese offene Beta in den kommenden Wochen weiterentwickeln und schätzen daher Ihr Feedback. Bitte teilen Sie Ihre Ideen und Vorschläge über dieses Formular mit.
Wie Prompt-Caching funktioniert
Wenn Sie eine Anfrage mit aktiviertem Prompt-Caching senden:
- Das System prüft, ob der Prompt-Präfix 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 zwisch
en**
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-Beschränkungen
Die minimale cacheable 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 Caching 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 für 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 in 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 in den Cache geschrieben werden, wenn ein neuer Eintrag erstellt wird.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:
- Cachen Sie stabile, wiederverwendbare Inhalte wie System-Anweisungen, Hintergrundinformationen, große Kontexte oder häufige Tool-Definitionen.
- Platzieren Sie gecachte Inhalte am Anfang des Prompts für beste Leistung.
- Nutzen Sie Cache-Breakpoints strategisch, um verschiedene cacheable 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 erweiterte 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 die Antwortlatenz zu erhöhen.
- 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 für qualitativ hochwertige Antworten einschließen.
- 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: Bringen Sie jede Wissensbasis zum Leben, indem Sie das gesamte Dokument/die gesamten 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
- Überprüfen Sie, dass Aufrufe innerhalb der 5-Minuten-Cache-Lebensdauer erfolgen
- Verifizieren 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: