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:

  1. Das System prüft, ob der Prompt-Präfix 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 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:

ModellBasis-Eingabe-TokenCache-SchreibvorgängeCache-TrefferAusgabe-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:


FAQ