Wird geladen

Regeln für Prompt-Caching

Lektion 477 Min.

Prompt-Caching funktioniert bei Claude, indem die für Nachrichten geleistete Rechenarbeit gespeichert wird, sodass sie bei Folgeanfragen wiederverwendet werden kann. Dadurch werden Anfragen, die zwischengespeicherte Inhalte nutzen, sowohl günstiger als auch schneller in der Ausführung.

Claude schreibt die für den Prompt „Please summarize this" geleistete Arbeit in den Cache und liest sie anschließend bei der Folgeanfrage.

Der Ablauf folgt einem einfachen Muster: Deine erste Anfrage schreibt in den Cache, und Folgeanfragen können aus dem Cache lesen. Der Cache lebt 5 Minuten lang, daher ist diese Funktion nur dann nützlich, wenn du wiederholt denselben Inhalt sendest – was in echten Anwendungen allerdings extrem häufig vorkommt.

Cache-Breakpoints

Die für Nachrichten geleistete Arbeit wird nicht automatisch zwischengespeichert. Wir müssen manuell einen „Cache-Breakpoint" zu einem Block hinzufügen. Die Arbeit, die für alles vor dem Breakpoint geleistet wurde, wird zwischengespeichert, und der Cache wird bei Folgeanfragen nur dann verwendet, wenn der Inhalt bis einschließlich des Breakpoints identisch ist.

Ein Textblock einer Nutzernachricht mit einem langen Prompt, dessen „cache_control"-Typ „ephemeral" als Cache-Breakpoint gekennzeichnet ist.

Wenn du Cache-Breakpoints hinzufügen musst, musst du die Langform zum Schreiben von Textblöcken anstelle der Kurzform verwenden. Hier ist der Unterschied:

python
# Kurzform - Cache-Breakpoints können nicht hinzugefügt werden
user_message = {
  "role": "user",
  "content": "Hi there!"
}

# Langform - für Cache-Breakpoints erforderlich
user_message = {
  "role": "user", 
  "content": [
    {
      "type": "text",
      "text": "Hi there!",
      "cache_control": {
        "type": "ephemeral"
      }
    }
  ]
}

Wie Cache-Breakpoints funktionieren

Cache-Breakpoints erstrecken sich über Nachrichten hinweg und können auch Assistant-Nachrichten zwischenspeichern. Wenn du einen Breakpoint platzierst, wird alles bis zu diesem Punkt zwischengespeichert. Denk daran: Der Inhalt muss identisch sein, damit der Cache genutzt wird!

Die in Claude für jeden der vier Textblöcke geleistete Arbeit, mit der gepunkteten Breakpoint-Linie nach dem ersten Block und leerem Cache-Feld.

Bei einer Folgeanfrage liest Claude die zuvor verarbeitete Arbeit aus dem Cache, anstatt sie erneut zu verarbeiten:

Claude liest zwischengespeicherte Arbeit für drei Blöcke einer Folgeanfrage, deren letzter Block „Focus the summary on" den Breakpoint enthält.

Breakpoint-Position

Du bist nicht auf Textblöcke beschränkt! Du kannst Cache-Breakpoints auch zu System-Prompts und Tool-Definitionen hinzufügen. Diese bieten sich sogar am häufigsten für Caching an, da sie sich zwischen Anfragen nur selten ändern.

python
# Tool-Definitionen mit Cache-Breakpoint
tools = [
  add_duration_to_datetime_schema,
  get_current_datetime_schema,
  {
    "name": "set_reminder",
    "description": "Sets a reminder...",
    "input_schema": { ... },
    "cache_control": {"type": "ephemeral"}
  }
]

# System-Prompt mit Cache-Breakpoint  
system = [
  {
    "type": "text",
    "text": "You are a senior software...",
    "cache_control": {"type": "ephemeral"}
  }
]

Cache-Reihenfolge

Im Hintergrund werden Tools, System-Prompts und Nachrichten in genau dieser Reihenfolge zusammengefügt, wenn sie an Claude übergeben werden. Dies wirkt sich darauf aus, wie deine Cache-Breakpoints funktionieren.

In beiden Anfragen liegt der Cache-Breakpoint auf Tool 3, vor System-Prompt und Nachrichten; die Assistant-Nachricht von Anfrage 2 hat sich geändert.

Du kannst insgesamt bis zu vier Cache-Breakpoints hinzufügen. Wenn du einen Breakpoint auf dein letztes Tool setzt, wird alles bis zu diesem Tool zwischengespeichert, aber der System-Prompt und die Nachrichten nicht. Dies gibt dir feingranulare Kontrolle darüber, was basierend auf den Änderungen in deiner Anwendung zwischengespeichert wird.

Mindestlänge für Inhalte

Es gibt eine Mindestlänge für das Caching, die vom Modell abhängt. Bei Claude Haiku 4.5, dem Modell, das in diesem Kurs verwendet wird, muss der Inhalt mindestens 4.096 Tokens lang sein, um zwischengespeichert zu werden. Dies ist die Summe aller Nachrichten und Blöcke, die du zwischenspeichern möchtest, nicht einzelner Blöcke.

Eine Nachricht wie „Hi there!" ist viel zu kurz, um zwischengespeichert zu werden, aber ein wirklich langer Prompt erreicht die Mindestlänge. Inhalte unterhalb der Mindestlänge werden einfach ohne Caching verarbeitet, und es kommt keine Fehlermeldung zurück. Um das zu erkennen, schau dir im Usage-Bereich der Antwort nach: cache_creation_input_tokens und cache_read_input_tokens sind beide 0.

Der Schlüssel zu effektivem Prompt-Caching besteht darin, die Teile deiner Anfragen zu identifizieren, die konstant bleiben – meist deine System-Prompts und Tool-Definitionen – und Breakpoints strategisch so zu platzieren, dass Cache-Treffer maximiert und erneute Verarbeitung minimiert werden.