Wird geladen

Prompt-Caching in Aktion

Lektion 488 Min.

Prompt-Caching ist eine leistungsstarke Optimierungsfunktion, die Anfragen günstiger und schneller macht, wenn du wiederholt denselben Inhalt an Claude sendest. Die erste Anfrage schreibt in den Cache, und nachfolgende Anfragen können daraus lesen. Der Cache lebt 5 Minuten und ist extrem nützlich, da viele Anwendungen wiederholt identische Tool-Schemas, System-Prompts oder Nachrichtenverläufe senden.

Claude schreibt die am Prompt „Please summarize this" geleistete Arbeit in den Cache und liest sie dann bei der Folgeanfrage.

Wie Prompt-Caching funktioniert

Wenn du Inhalte zum Caching markierst, verarbeitet Claude sie einmal und speichert das Ergebnis. Nachfolgende Anfragen, die genau denselben Inhalt enthalten, können den Verarbeitungsschritt überspringen und direkt aus dem Cache lesen. Dies funktioniert nur, wenn der gecachte Inhalt identisch ist - selbst eine einzelne Zeichenänderung macht den Cache ungültig.

Du kannst mehrere Cache-Breakpoints in einer einzigen Anfrage festlegen. Die Caching-Reihenfolge folgt dieser Sequenz:

  • Tool-Schemas
  • System-Prompt
  • Nachrichtenverlauf

Einrichten des Tool-Schema-Cachings

Um Tool-Schemas zu cachen, musst du ein cache_control-Feld zum letzten Tool in deiner Liste hinzufügen. Hier ist die richtige Methode, dies zu tun, ohne deine ursprünglichen Tool-Schemas zu verändern:

python
if tools:
    tools_clone = tools.copy()
    last_tool = tools_clone[-1].copy()
    last_tool["cache_control"] = {"type": "ephemeral"}
    tools_clone[-1] = last_tool
    params["tools"] = tools_clone

Dieser Ansatz erstellt Kopien sowohl der Tool-Liste als auch des letzten Tool-Schemas, bevor das Cache-Control-Feld hinzugefügt wird. Dies verhindert, dass deine ursprünglichen Tool-Definitionen versehentlich verändert werden, was Probleme verursachen könnte, falls du die Tools später neu anordnest.

System-Prompt-Caching

Für System-Prompts musst du den system-Parameter als Liste mit einem Textblock strukturieren, der das Cache-Control-Feld enthält:

python
if system:
    params["system"] = [
        {
            "type": "text",
            "text": system,
            "cache_control": {"type": "ephemeral"}
        }
    ]

Das Cache-Verhalten verstehen

Wenn du deine erste Anfrage mit cachebarem Inhalt stellst, siehst du cache_creation_input_tokens im usage-Feld. Dies zeigt, wie viele Tokens Claude in den Cache geschrieben hat. Bei nachfolgenden Anfragen mit identischem Inhalt siehst du stattdessen cache_read_input_tokens.

Wenn du sowohl gecachten als auch neuen Inhalt in derselben Anfrage hast, könntest du sowohl Cache-Lesevorgänge als auch Cache-Schreibvorgänge sehen. Wenn du beispielsweise dieselben Tool-Schemas beibehältst, aber den System-Prompt änderst, liest du die Tools aus dem Cache, während du den neuen System-Prompt in den Cache schreibst. Du erhältst diesen teilweisen Lesevorgang nur, wenn die Tools allein die Mindestlänge erreichen, da ein Cache-Breakpoint, dessen Inhalt bis zu diesem Punkt unter dem Minimum liegt, nichts schreibt.

Cache-Invalidierung

Der Cache reagiert extrem empfindlich auf Änderungen. Das Ändern auch nur eines einzigen Zeichens in deiner Tool-Schema-Beschreibung, deinem System-Prompt oder jedem anderen gecachten Inhalt macht diesen Cache-Eintrag ungültig. Wenn dies geschieht, behandelt Claude es als vollständig neuen Inhalt und erstellt einen frischen Cache-Eintrag.

Diese Empfindlichkeit bedeutet, dass du durchdacht vorgehen solltest, was du cachst. Tool-Schemas und System-Prompts, die über viele Anfragen hinweg stabil bleiben, sind ideale Kandidaten. Dynamischer Inhalt, der sich häufig ändert, profitiert nicht vom Caching.

Praktische Umsetzung

In der Praxis wirst du Caching standardmäßig in deine Chat-Funktionen einbauen wollen. Die meisten Anwendungen verwenden dieselben Tool-Schemas und System-Prompts über mehrere Anfragen hinweg, was sie zu perfekten Kandidaten für Caching macht. Die Leistungs- und Kostenvorteile sind erheblich, wenn du viele Anfragen mit ähnlichem Inhalt stellst.

Denk daran, dass Caching am wertvollsten ist, wenn du wiederholt denselben Inhalt sendest. Da dies in realen Anwendungen extrem häufig vorkommt - besonders bei Tool-Schemas und System-Prompts - wird sich die frühzeitige Implementierung von Caching in deinem Entwicklungsprozess auszahlen, wenn deine Anwendung skaliert.