guides

LLM Prompt-Caching: API-Kosten um 90 % senken (Alle 3 Anbieter)

Geschrieben von Mert Batur
Mar 25, 2026
14 Lesezeit
LLM Prompt-Caching: API-Kosten um 90 % senken (Alle 3 Anbieter)

LLM Prompt-Caching: API-Kosten um 90 % senken (Alle 3 Anbieter)

LLM Prompt-Caching ermöglicht die Wiederverwendung bereits verarbeiteter Tokens über API-Aufrufe hinweg -- und senkt die Eingabekosten um bis zu 90 % sowie die Zeit bis zum ersten Token um bis zu 85 %. Wenn Sie bei jeder Anfrage denselben System-Prompt, dieselben Tool-Definitionen oder dieselben Few-Shot-Beispiele senden, zahlen Sie den vollen Preis für Arbeit, die die GPU bereits erledigt hat.

Dieser Leitfaden behandelt OpenAI, Anthropic und Gemini mit demselben Chatbot in allen drei SDKs implementiert -- etwas, das kein anderer Leitfaden bietet. Wir decken außerdem das automatische Caching-Update von Anthropic vom Februar 2026, Produktionskostenszenarien mit realen Dollarbeträgen und die Anti-Patterns ab, die Ihre Cache-Trefferquote unbemerkt zerstören.

<!-- IMAGE: KV cache reuse flow diagram showing prompt prefix matching, cache hit path (fast, cheap), and cache miss path (standard processing) -->

Kurzübersicht -- Alle drei Anbieter auf einen Blick

Bevor wir in die Implementierungsdetails eintauchen, hier der vollständige Vergleich. Wenn Sie bereits wissen, welchen Anbieter Sie verwenden, springen Sie direkt zu dessen Abschnitt. Wenn Sie noch evaluieren, verrät Ihnen diese Tabelle alles in 10 Sekunden.

MerkmalOpenAIAnthropicGemini
Caching-TypAutomatischAutomatisch + ExplizitImplizit + Explizit
Mindest-Tokens1.0241.024 (die meisten Modelle)1.024 (Flash) / 4.096 (Pro)
TTL5–10 Min. (bis zu 24 Std. verlängerbar)5 Min. oder 1 StundeKonfigurierbar (Standard 1 Stunde)
Cache-Schreibkosten1x (kein Aufpreis)1,25x (5-Min.) / 2x (1-Std.)1x (kein Aufpreis)
Rabatt auf Cache-Lesezugriffe50 % Rabatt auf Eingabe90 % Rabatt auf Eingabe~90 % Rabatt auf Eingabe
Cache-IsolationOrganisationArbeitsbereichProjekt
Streaming-UnterstützungJaJaJa
Cache-Trefferantwortfeldcached_tokenscache_read_input_tokenscachedContentTokenCount
Explizite SteuerungNeinJa (cache_control)Ja (benannte Cache-Objekte)
Letztes großes UpdateOkt. 2024Feb. 2026 (automatisches Caching)2026 (implizites Caching)

Fazit: OpenAI ist am einfachsten (keine Konfiguration, 50 % Rabatt). Anthropic bietet den tiefsten Rabatt (90 %) mit der größten Kontrolle. Gemini bietet konfigurierbares TTL und implizites Caching bei Modellen der Version 2.5+ mit vergleichbaren Rabatten wie Anthropic.

Wie funktioniert LLM Prompt-Caching?

Um Prompt-Caching effektiv einzusetzen, müssen Sie keine Transformer-Interna verstehen. Aber Sie müssen ein Konzept kennen: Präfixabgleich.

Der KV-Cache in 60 Sekunden

Wenn ein LLM Ihren Prompt verarbeitet, berechnet es Aufmerksamkeitszustände (Key-Value-Paare) für jedes Token. Diese KV-Cache-Einträge sind der teure Teil -- sie verbrauchen GPU-Speicher und Rechenzeit. Prompt-Caching speichert diese berechneten Zustände, sodass die nächste Anfrage mit demselben Präfix die Neuberechnung komplett überspringt.

Das entscheidende Wort ist Präfix. Der Cache vergleicht vom Anfang Ihres Prompts vorwärts. Wenn die ersten 2.000 Tokens mit einem gecachten Eintrag übereinstimmen, Token 2.001 aber abweicht, werden diese ersten 2.000 Tokens aus dem Cache bedient. Alles nach dem Divergenzpunkt wird frisch berechnet.

Deshalb ist die Reihenfolge im Prompt wichtig. Strukturieren Sie Ihre Prompts so:

  1. Tool-Definitionen (am statischsten)
  2. System-Prompt
  3. Statische Few-Shot-Beispiele
  4. Abgerufener Kontext (halbdynamisch)
  5. Gesprächsverlauf (wächst pro Runde)
  6. Benutzeranfrage (immer unterschiedlich)

Statischer Inhalt zuerst, dynamischer Inhalt zuletzt. Je mehr Tokens dem gecachten Präfix entsprechen, desto größer die Ersparnis.

Prompt-Caching vs. Semantisches Caching vs. Antwort-Caching

Diese drei Begriffe werden ständig verwechselt. Prompt-Caching (Thema dieses Leitfadens) verwendet berechnete KV-Zustände auf GPU-Ebene für identische Token-Präfixe wieder -- kein Genauigkeitsverlust, gleiche Ausgabe wie ohne Cache. Semantisches Caching nutzt Ähnlichkeit von Einbettungen, um früher generierte Antworten auf "ähnliche" Anfragen zurückzugeben -- schneller, kann aber falsche Antworten liefern. Antwort-Caching speichert exakte Eingabe-Ausgabe-Paare und gibt die gecachte Antwort wortgetreu zurück -- funktioniert nur bei wirklich identischen Anfragen.

Prompt-Caching ist die einzige "kostenlose Optimierung" -- es reduziert Kosten und Latenz ohne Genauigkeitsverlust. Die ausführliche Transformer-Mathematik hinter dem KV-Caching erläutert der technische Artikel von Hugging Face, der eine ~5,21-fache Beschleunigung auf T4-GPUs gemessen hat.

Wie handhabt OpenAI Prompt-Caching?

OpenAIs Prompt-Caching ist vollständig automatisch. Seit Oktober 2024 profitiert jeder API-Aufruf mit 1.024 oder mehr Eingabe-Tokens automatisch vom Caching. Kein Opt-in, keine Header, keine Codeänderungen.

Wie OpenAIs automatisches Caching funktioniert

Wenn Sie eine Anfrage mit mindestens 1.024 Tokens senden, prüft OpenAI, ob das Präfix zu einer kürzlichen Anfrage aus Ihrer Organisation passt. Cache-Treffer kosten 50 % des normalen Eingabe-Token-Preises. Nach dem anfänglichen 1.024-Token-Schwellenwert wird der Cache in 128-Token-Schritten abgeglichen.

Der Cache ist 5–10 Minuten lang gültig und kann in Nebenzeiten bis zu 24 Stunden bestehen bleiben. Er ist pro Organisation begrenzt, sodass verschiedene Projekte innerhalb derselben Organisation von gemeinsamen Caches profitieren.

Unterstützte Modelle sind GPT-4o, GPT-4o-mini, GPT-4.1, o1, o3-mini und alle neueren Modelle.

OpenAI Python SDK Beispiel

python
from openai import OpenAI

client = OpenAI()

# Dieser System-Prompt hat ~2.000 Tokens -- weit über dem 1.024-Token-Minimum
SYSTEM_PROMPT = """You are a senior Python developer specializing in async programming.
You follow PEP 8, use type hints, and write comprehensive docstrings.
When reviewing code, check for: race conditions, resource leaks, error handling,
and performance bottlenecks. Always suggest specific fixes with code examples.
[... imagine 1,800 more tokens of coding guidelines, examples, and rules ...]"""

def chat(user_message: str) -> str:
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": SYSTEM_PROMPT},
            {"role": "user", "content": user_message},
        ],
    )

    # Prüfen, ob Caching aktiv wurde
    usage = response.usage
    cached = usage.prompt_tokens_details.cached_tokens
    total_input = usage.prompt_tokens
    print(f"Cached: {cached}/{total_input} tokens ({cached/total_input*100:.0f}%)")

    return response.choices[0].message.content

# Erster Aufruf: Cache-Miss (voller Preis)
chat("Review this async function for race conditions...")

# Zweiter Aufruf innerhalb von 5–10 Min.: Cache-Treffer (50 % Rabatt auf gecachte Tokens)
chat("Now optimize the same function for throughput...")

Der erste Aufruf verarbeitet alles zum vollen Preis und füllt den Cache. Der zweite Aufruf verwendet die gecachten System-Prompt-Tokens zum halben Preis. Die Ausgabe zeigt dann etwa Cached: 1920/2048 tokens (94%).

Fazit: OpenAI ist der einfachste Einstieg -- keine Konfiguration, Caching passiert einfach. Der 50-%-Rabatt ist der niedrigste der drei Anbieter, aber an die Einfachheit kommt nichts heran.

Wie handhabt Anthropic/Claude Prompt-Caching?

Anthropic bietet zwei Modi: automatisches Caching (seit Februar 2026 standardmäßig aktiviert) und explizites Caching mit cache_control-Breakpoints. Die Headline-Zahl ist schwer zu ignorieren -- gecachte Lesezugriffe kosten nur 10 % des normalen Eingabepreises, also einen 90-%-Rabatt.

Automatisches vs. explizites Caching (Update 2026)

Ab dem 5. Februar 2026 aktiviert Anthropic automatisch das Caching für alle berechtigten Prompts. Den alten Beta-Header brauchen Sie nicht mehr. Das System ermittelt automatisch optimale Cache-Breakpoints.

Explizites Caching ist weiterhin verfügbar, wenn Sie präzise Kontrolle wünschen. Sie platzieren cache_control: {"type": "ephemeral"} auf spezifischen Inhaltsblöcken, um genau festzulegen, wo die Cache-Grenze liegen soll. Das ist nützlich, wenn Ihr Prompt eine bestimmte Struktur hat und Sie sicherstellen wollen, dass bestimmte Abschnitte gecacht werden.

Es gibt zwei TTL-Optionen:

  • 5-Minuten-Cache (Standard): Schreibkosten 1,25x des Basis-Eingabepreises, Lesekosten 0,1x. Amortisiert sich nach 1 Cache-Treffer.
  • 1-Stunden-Cache: Schreibkosten 2x des Basis-Eingabepreises, Lesekosten 0,1x. Amortisiert sich nach 2 Cache-Treffern. Verfügbar bei Claude 4.5+ Modellen.

Die Cache-Isolation wechselte am 5. Februar 2026 von der Organisations- zur Arbeitsbereichsebene. Das bedeutet, dass verschiedene Arbeitsbereiche innerhalb derselben Organisation separate Caches führen.

Wenn Sie mit Anthropics Caching arbeiten, hilft es, Ihren Prompt für optimales Caching zu strukturieren -- statischen Inhalt vor dynamischem zu platzieren ist hier noch wichtiger, da Sie einen Schreib-Aufpreis zahlen.

Anthropic Python SDK Beispiel

python
import anthropic

client = anthropic.Anthropic()

SYSTEM_PROMPT = """You are a senior Python developer specializing in async programming.
You follow PEP 8, use type hints, and write comprehensive docstrings.
When reviewing code, check for: race conditions, resource leaks, error handling,
and performance bottlenecks. Always suggest specific fixes with code examples.
[... imagine 1,800 more tokens of coding guidelines, examples, and rules ...]"""

def chat(user_message: str) -> str:
    response = client.messages.create(
        model="claude-sonnet-4-5-20250514",
        max_tokens=1024,
        system=[
            {
                "type": "text",
                "text": SYSTEM_PROMPT,
                "cache_control": {"type": "ephemeral"},  # Expliziter Breakpoint
            }
        ],
        messages=[
            {"role": "user", "content": user_message},
        ],
    )

    # Cache-Metriken aus der Antwort lesen
    usage = response.usage
    created = usage.cache_creation_input_tokens
    read = usage.cache_read_input_tokens
    standard = usage.input_tokens
    print(f"Cache write: {created}, Cache read: {read}, Standard: {standard}")

    return response.content[0].text

# Erster Aufruf: cache_creation_input_tokens = ~1920 (Schreiben bei 1,25x)
chat("Review this async function for race conditions...")

# Zweiter Aufruf: cache_read_input_tokens = ~1920 (Lesen bei 0,1x -- 90 % Rabatt!)
chat("Now optimize the same function for throughput...")

Preisgestaltung: Cache-Schreiben vs. Cache-Lesen

Hier wird Anthropics Preisgestaltung interessant. Am Beispiel von Claude Sonnet 4.5 (3 $/MTok Basis-Eingabe):

  • Normale Eingabe: 3,00 $ pro Million Tokens
  • Cache-Schreiben (5 Min.): 3,75 $ pro Million Tokens (1,25x) -- Sie zahlen beim ersten Mal mehr
  • Cache-Lesen: 0,30 $ pro Million Tokens (0,1x) -- 90 % günstiger bei jedem weiteren Treffer

Der 5-Minuten-Cache amortisiert sich nach nur 1 Lesezugriff. Der 1-Stunden-Cache (6,00 $/MTok Schreiben) amortisiert sich nach 2 Lesezugriffen. Wenn Sie mehr als ein paar Anfragen pro Minute mit demselben Präfix stellen, ist die Rechnung klar zu Ihren Gunsten.

Fazit: Anthropic bietet den tiefsten Rabatt (90 %) und die größte Kontrolle. Ideal für volumenstarke, kostensensitive Workloads.

Wie handhabt Google Gemini Prompt-Caching?

Gemini verfolgt einen anderen Ansatz mit zwei unterschiedlichen Caching-Mechanismen: explizites Kontext-Caching (benannte Cache-Objekte, die Sie erstellen und referenzieren) und implizites Caching (automatisch, ohne Konfiguration, eingeführt 2026 für Gemini-2.5+-Modelle).

Explizites Kontext-Caching (benannte Caches)

Im Gegensatz zu OpenAI und Anthropic, wo Caching transparent ist, erfordert Geminis explizites Caching, dass Sie zuerst ein benanntes Cache-Objekt erstellen und es dann in nachfolgenden Anfragen referenzieren. Der Mindest-Token-Schwellenwert beträgt 1.024 Tokens für Gemini-Flash-Modelle und 4.096 Tokens für Pro-Modelle. Das TTL ist konfigurierbar -- Standard ist 1 Stunde, aber Sie können es nach Bedarf einstellen.

Gecachte Tokens bei Gemini 2.5 Pro kosten 0,125 $/MTok gegenüber dem normalen Eingabepreis von 1,25 $/MTok -- ein 90-%-Rabatt. Zusätzlich fallen Speicherkosten von 4,50 $ pro Million Tokens pro Stunde für Pro und 1,00 $ für Flash an.

Implizites Caching in Gemini 2.5 (2026)

Ab Gemini 2.5 Pro und Flash hat Google implizites Caching eingeführt -- automatisches Caching, das wie OpenAIs Ansatz funktioniert. Keine Konfiguration nötig. Platzieren Sie große, gemeinsame Inhalte am Anfang Ihres Prompts und senden Sie Anfragen mit ähnlichen Präfixen in schneller Folge. Das System erkennt automatisch Cache-fähige Inhalte und gibt die Einsparungen weiter.

Gemini Python SDK Beispiel

python
from google import genai
from google.genai import types

client = genai.Client()

SYSTEM_PROMPT = """You are a senior Python developer specializing in async programming.
You follow PEP 8, use type hints, and write comprehensive docstrings.
When reviewing code, check for: race conditions, resource leaks, error handling,
and performance bottlenecks. Always suggest specific fixes with code examples.
[... imagine 1,800 more tokens of coding guidelines, examples, and rules ...]"""

# Schritt 1: Benanntes Cache-Objekt erstellen
cache = client.caches.create(
    model="gemini-2.5-flash",
    config=types.CreateCachedContentConfig(
        display_name="python-review-guidelines",
        system_instruction=SYSTEM_PROMPT,
        ttl="3600s",  # 1 Stunde
    ),
)

print(f"Cache created: {cache.name}, expires: {cache.expire_time}")

# Schritt 2: Cache in Anfragen verwenden
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="Review this async function for race conditions...",
    config=types.GenerateContentConfig(
        cached_content=cache.name,
    ),
)

# Cache-Nutzung in der Antwort prüfen
metadata = response.usage_metadata
print(f"Cached tokens: {metadata.cached_content_token_count}")
print(f"Total input tokens: {metadata.prompt_token_count}")

Der explizite Ansatz hat einen großen Vorteil: Sie steuern das TTL präzise. Wenn Ihr Batch-Job 4 Stunden läuft, setzen Sie ein 4-stündiges TTL und vermeiden Cache-Ablauf mitten in der Verarbeitung.

Fazit: Geminis konfigurierbares TTL und die zwei Caching-Modi (explizit + implizit) machen es vielseitig. Der Mindest-Schwellenwert ist jetzt mit anderen Anbietern vergleichbar, und der 90-%-Rabatt auf gecachte Lesezugriffe entspricht Anthropic.

Code-Vergleich -- Gleicher Use Case, Alle 3 Anbieter

Hier ist derselbe Chatbot mit gecachtem System-Prompt, in allen drei SDKs implementiert. Vergleichen Sie die Entwicklererfahrung direkt.

python
# --- OpenAI: Keine Konfiguration, einfach die API aufrufen ---
from openai import OpenAI
client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": SYSTEM_PROMPT},  # Automatisch gecacht
        {"role": "user", "content": user_message},
    ],
)
cached = response.usage.prompt_tokens_details.cached_tokens
python
# --- Anthropic: Expliziter cache_control Breakpoint ---
import anthropic
client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": SYSTEM_PROMPT,
        "cache_control": {"type": "ephemeral"},  # Cache-Grenze markieren
    }],
    messages=[{"role": "user", "content": user_message}],
)
cached = response.usage.cache_read_input_tokens
python
# --- Gemini: Benanntes Cache-Objekt ---
from google import genai
from google.genai import types

client = genai.Client()
cache = client.caches.create(
    model="gemini-2.5-flash",
    config=types.CreateCachedContentConfig(
        system_instruction=SYSTEM_PROMPT,
        ttl="3600s",
    ),
)
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=user_message,
    config=types.GenerateContentConfig(cached_content=cache.name),
)
cached = response.usage_metadata.cached_content_token_count
AspektOpenAIAnthropicGemini
Setup-KomplexitätKeinecache_control-Block hinzufügenZuerst Cache-Objekt erstellen
Cache-SteuerungNur automatischAutomatisch oder explizitImplizit oder explizit
Rabatt auf gecachte Lesezugriffe50 %90 %~90 %
Mindest-Tokens1.0241.0241.024 (Flash) / 4.096 (Pro)
EntwicklererfahrungAm einfachstenMeiste KontrolleFlexibelstes TTL

Wenn Sie mühelos sparen möchten, wählen Sie OpenAI. Wenn Sie den tiefsten Rabatt und detaillierte Kontrolle wollen, entscheiden Sie sich für Anthropic. Wenn Sie konfigurierbare Cache-Laufzeiten benötigen oder bereits Google Cloud nutzen, ist Gemini die Wahl.

Produktionskostenrechner -- Reale Einsparungen in großem Maßstab

Abstrakte Prozentzahlen treiben keine Entscheidungen. Dollar-Beträge schon. Hier sind drei Produktionsszenarien mit realen Kostenschätzungen unter Verwendung von Claude Sonnet 4.5 (3 $/MTok Eingabe), GPT-4o (2,50 $/MTok Eingabe) und Gemini 2.5 Pro (1,25 $/MTok Eingabe).

Preise geprüft März 2026. Aktuelle Preise bei Anthropic, OpenAI und Gemini einsehen.

Annahmen: 80 % Cache-Trefferquote (realistisch bei gut strukturierten Prompts), Ausgabe-Tokens ausgeschlossen, da Caching nur Eingabekosten beeinflusst.

SzenarioOhne Caching (monatlich)Mit OpenAI CachingMit Anthropic CachingMit Gemini Caching
Hobby-Chatbot: 100 Anfragen/Tag, 2K System-PromptOpenAI: 15 $ / Anthropic: 18 $ / Gemini: 7,50 $12 $ (spare 3 $)5,40 $ (spare 12,60 $)2,25 $ (spare 5,25 $)
Growth-API: 10K Anfragen/Tag, 8K gecachtes PräfixOpenAI: 600 $ / Anthropic: 720 $ / Gemini: 300 $360 $ (spare 240 $)144 $ (spare 576 $)60 $ (spare 240 $)
Enterprise-Pipeline: 100K Anfragen/Tag, 10K gecachtes PräfixOpenAI: 7.500 $ / Anthropic: 9.000 $ / Gemini: 3.750 $4.500 $ (spare 3.000 $)1.800 $ (spare 7.200 $)750 $ (spare 3.000 $)

Auf Growth-Niveau spart Anthropic-Caching 576 $/Monat trotz eines höheren Basispreises als OpenAI. Im Enterprise-Maßstab reden wir von 7.200 $/Monat Einsparungen mit Anthropic -- oder 86.400 $ pro Jahr. Das entspricht dem Gehalt eines Senior-Entwicklers, das durch eine Konfigurationsänderung eingespart wird.

Das Muster ist klar: Je höher das Anfragevolumen und je länger das statische Präfix, desto mehr spart Caching. Anthropics 90-%-Rabatt dominiert im großen Maßstab, aber Geminis niedrigerer Basispreis macht es wettbewerbsfähig, wenn man die Gesamtkosten berücksichtigt.

Prompt-Caching Anti-Patterns -- Wann man NICHT cachen sollte

Caching klingt einfach, bis Ihre Cache-Trefferquote mysteriöserweise bei 0 % liegt. Hier sind die Fehler, die Prompt-Caching unbemerkt ruinieren -- und wie man sie behebt.

Cache-brechende Fehler (mit Lösungen)

Zeitstempel in System-Prompts -- Der häufigste Fehler. Wenn Ihr System-Prompt datetime.now() enthält, ändert sich der Cache-Schlüssel jede Sekunde.

python
# SCHLECHT: Cache-Misses bei jeder einzelnen Anfrage
system_prompt = f"""You are a helpful assistant.
Current time: {datetime.now().isoformat()}
Always be helpful and accurate."""

# GUT: Zeitstempel in die Benutzernachricht verschieben
system_prompt = """You are a helpful assistant.
Always be helpful and accurate."""

user_message = f"[Current time: {datetime.now().isoformat()}]\n{user_query}"

Benutzerspezifischer Inhalt vor statischem Inhalt -- Wenn Sie session_id oder Benutzerpräferenzen am Anfang platzieren, erhält jeder Benutzer ein einzigartiges Präfix.

python
# SCHLECHT: Einzigartiges Präfix pro Benutzer = keine Cache-Wiederverwendung
messages = [
    {"role": "system", "content": f"User ID: {user_id}\nPreferences: {prefs}\n{GUIDELINES}"},
    {"role": "user", "content": query},
]

# GUT: Statischer Inhalt zuerst, Benutzerkontext am Ende
messages = [
    {"role": "system", "content": GUIDELINES},  # Gleich für alle Benutzer -> gecacht
    {"role": "user", "content": f"Context: User {user_id}, prefs: {prefs}\n{query}"},
]
Anti-PatternWarum der Cache brichtLösung
Zeitstempel in System-PromptPräfix ändert sich jede SekundeZeitstempel in Benutzernachricht verschieben
Session-/Benutzer-IDs im PräfixEinzigartiges Präfix pro BenutzerBenutzerkontext nach statischem Inhalt verschieben
Rotierende Few-Shot-BeispieleVerschiedene Beispiele = unterschiedliches PräfixFesten Beispielsatz verwenden
Dynamische Tool-DefinitionenÄndernde Tools = Präfix-DiskrepanzTool-Schemas statisch halten
Kurze Prompts (unter Minimum)Caching wird einfach nicht ausgelöstKontext zusammenfassen, um 1.024 Tokens zu überschreiten
Personalisierung pro Anfrage im System-PromptSystem-Prompt ändert sich bei jedem AufrufGemeinsamen System-Prompt + benutzerspezifische Nachrichten verwenden

Wann Prompt-Caching wirklich nicht hilft

Einige Szenarien profitieren auch bei perfekter Prompt-Struktur nicht vom Caching:

  • Einmalige Prompts: Wenn jede Anfrage einen völlig einzigartigen Kontext ohne gemeinsames Präfix hat, gibt es nichts zu cachen.
  • Sehr kurze Prompts: Unter 1.024 Tokens (OpenAI/Anthropic) oder 4.096 Tokens (Gemini Pro) aktiviert sich das Caching nicht.
  • Seltene Anfragen: Wenn Anfragen stundenlang auseinanderliegen, läuft der Cache ab, bevor eine zweite Anfrage eintrifft. OpenAIs 5–10-Minuten-Fenster und Anthropics 5-Minuten-Standard-TTL bedeuten, dass Sie konstanten Traffic benötigen.

Funktioniert Prompt-Caching mit Streaming?

Ja. Prompt-Caching und Streaming sind unabhängig -- Caching operiert auf Eingabe-Tokens, Streaming betrifft die Ausgabelieferung. Sie lösen verschiedene Probleme in verschiedenen Phasen des Anfrage-Lebenszyklus.

Der Cache behandelt die Prefill-Phase (Verarbeitung Ihres Eingabe-Prompts). Streaming behandelt die Decode-Phase (inkrementelles Generieren und Senden von Ausgabe-Tokens). Sie profitieren von beiden Vorteilen gleichzeitig: schnellerer Prefill durch den Cache-Treffer plus progressive Ausgabelieferung durch Streaming.

Hier ein Streaming-Beispiel mit aktiviertem Caching:

python
import anthropic

client = anthropic.Anthropic()

with client.messages.stream(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": SYSTEM_PROMPT,
        "cache_control": {"type": "ephemeral"},
    }],
    messages=[{"role": "user", "content": "Explain Python's GIL..."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

    # Nach Streaming-Abschluss Cache-Metriken prüfen
    usage = stream.get_final_message().usage
    print(f"\nCache read: {usage.cache_read_input_tokens} tokens")

Die TTFT-Verbesserung durch Caching ist beim Streaming tatsächlich am deutlichsten spürbar. Ohne Caching warten Sie auf das vollständige Prefill, bevor das erste Token zurückgestreamt wird. Mit Caching ist das Prefill nahezu sofort, sodass Tokens fast unmittelbar zu fließen beginnen.

Cache-Trefferquoten in der Produktion überwachen

Caching einzurichten ist die halbe Miete. Zu wissen, ob es tatsächlich funktioniert, ist die andere Hälfte. Wenn Ihre Cache-Trefferquote unter 50 % sinkt, hat sich etwas in Ihrer Prompt-Struktur geändert, und Sie lassen Geld auf dem Tisch liegen.

Anbieter-spezifische Cache-Metriken

AnbieterCache-Lese-FeldCache-Schreib-FeldGesamteingabe-Feld
OpenAIusage.prompt_tokens_details.cached_tokensN/V (automatisch)usage.prompt_tokens
Anthropicusage.cache_read_input_tokensusage.cache_creation_input_tokensusage.input_tokens
GeminiusageMetadata.cachedContentTokenCountN/V (explizites Cache-Objekt)usageMetadata.promptTokenCount

Ein einfacher Cache-Trefferquoten-Logger

Hier eine Hilfsfunktion, die Sie in jedes Projekt einbinden können, um Cache-Trefferquoten über API-Antwortfelder zu verfolgen:

python
import logging

logger = logging.getLogger("cache_monitor")

def log_cache_metrics(provider: str, usage: dict) -> float:
    """Extrahiert und protokolliert Cache-Metriken aus der Antwort eines Anbieters. Gibt Trefferquote zurück."""

    if provider == "openai":
        cached = getattr(usage.prompt_tokens_details, "cached_tokens", 0)
        total = usage.prompt_tokens
    elif provider == "anthropic":
        cached = usage.cache_read_input_tokens
        created = usage.cache_creation_input_tokens
        total = cached + created + usage.input_tokens
    elif provider == "gemini":
        cached = getattr(usage, "cached_content_token_count", 0)
        total = usage.prompt_token_count
    else:
        raise ValueError(f"Unknown provider: {provider}")

    hit_rate = (cached / total * 100) if total > 0 else 0
    logger.info(f"[{provider}] Cache hit rate: {hit_rate:.1f}% ({cached}/{total} tokens)")

    if hit_rate < 50:
        logger.warning(f"[{provider}] Low cache hit rate! Check prompt structure.")

    return hit_rate

Ein gesundes Produktionssystem sollte 70–90 % Cache-Trefferquoten aufrechterhalten. Wenn Sie unter 50 % liegen, lesen Sie den Anti-Patterns-Abschnitt erneut. Sie können dies auch mit automatisierten Evaluierungsmetriken integrieren, um Regressionen in Ihrer Prompt-Pipeline zu erkennen.

Prompt-Caching in realen Anwendungsfällen

Die Chatbot-Beispiele oben veranschaulichen die Mechanismen, aber Prompt-Caching glänzt wirklich in spezifischen Architekturmustern.

RAG-Pipelines

In einem RAG-Setup sind Ihr System-Prompt und Ihre Few-Shot-Beispiele für alle Anfragen statisch. Die abgerufenen Dokumente ändern sich jedes Mal. Strukturieren Sie Ihren Prompt, um das gecachte Präfix zu maximieren:

  1. System-Prompt (gecacht)
  2. Few-Shot-Beispiele (gecacht)
  3. Abgerufene Dokumente (dynamisch -- kommt zuletzt)
  4. Benutzeranfrage (immer einzigartig)

Mit einem 5.000-Token-System-Prompt und 3.000 Tokens Few-Shot-Beispielen sind das 8.000 gecachte Tokens bei jeder Anfrage. Bei 1.000 Anfragen pro Tag mit Anthropic sparen Sie grob 6,50 $ täglich allein durch das gecachte Präfix. Wenn Sie Kontext-Blöcke abrufen und cachen, stellen Sie sicher, dass die Abruf-Ausgabe nach dem statischen Präfix kommt.

Multi-Turn-Chatbots

Multi-Turn-Gespräche sind ein idealer Anwendungsfall für Prompt-Caching. Jede Runde fügt dem Gesprächsverlauf etwas hinzu, aber das gesamte vorherige Gespräch ist bereits aus früheren Runden gecacht. Der Cache-Vorteil wächst -- bis Runde 10 könnten Sie 15.000 gecachte Token-Verlaufs-Tokens haben mit nur 200 frischen Tokens aus der letzten Benutzernachricht.

Agentische Systeme und MCP Tool-Definitionen

Wenn Sie Agenten mit Tool-Nutzung bauen, sind Ihre Tool-Definitionen statische JSON-Schemas, die bei jedem API-Aufruf wiederholt werden. Ein typischer Agent kann 20+ Tools mit insgesamt 3.000–5.000 Tokens an Definitionen haben. Das ist ideales Caching-Material.

Das ist besonders relevant für MCP-basierte Architekturen, bei denen Server-Tool-Definitionen bei jedem Aufruf gesendet werden. Mit Anthropics explizitem cache_control können Sie das tools-Array für Caching markieren und garantieren, dass diese Tokens wiederverwendet werden.

Welchen Anbieter sollten Sie wählen?

Wenn Sie ... brauchenBeste WahlWarum
Keine Konfiguration, einfach sparenOpenAIAutomatisches Caching, keine Code-Änderungen nötig
Maximale Kostenreduzierung (90 %)Anthropic0,1x gecachter Lesepreis, tiefster Rabatt
Detaillierte Cache-KontrolleAnthropicExplizite Breakpoints + konfigurierbares TTL (5 Min. oder 1 Std.)
Langdokument-AnalyseGeminiKonfigurierbares TTL mit expliziten benannten Caches
Einfache Multi-Turn-Chat-FunktionalitätOpenAIAutomatischer Präfixabgleich auf wachsendem Gesprächsverlauf
Agentische Systeme mit Tool-DefinitionenAnthropicTool-Definitionen explizit mit cache_control cachen
Multi-Anbieter-FlexibilitätLiteLLMEinheitliche Caching-Syntax über alle Anbieter

Wenn Sie bereits einen Anbieter nutzen, fangen Sie dort an -- Prompt-Caching erfordert keinen Wechsel. LiteLLM agiert als Proxy-Schicht, die Caching-Parameter über Anbieter hinweg normalisiert, was nützlich ist, wenn Sie Anfragen an mehrere Modelle weiterleiten.

FAQ -- LLM Prompt-Caching

Was ist Prompt-Caching bei LLMs?

Prompt-Caching speichert die berechneten Aufmerksamkeitszustände (KV-Cache) aus zuvor verarbeiteten Prompt-Präfixen. Wenn eine nachfolgende Anfrage mit derselben Token-Sequenz beginnt, verwendet der Anbieter diese gespeicherten Zustände wieder, anstatt sie neu zu berechnen -- was sowohl Kosten als auch Latenz ohne Auswirkung auf die Ausgabequalität reduziert.

Wie viel spart Prompt-Caching bei API-Kosten?

Die Einsparungen liegen zwischen 50 % und 90 %, abhängig vom Anbieter. OpenAI bietet 50 % Rabatt auf gecachte Eingabe-Tokens. Anthropic bietet bis zu 90 % Rabatt (gecachte Lesezugriffe zu 0,1x Basispreis). Gemini bietet rund 90 % Rabatt auf gecachte Lesezugriffe. Die tatsächlichen Einsparungen hängen von Ihrer Cache-Trefferquote, Prompt-Länge und Anfragehäufigkeit ab.

Passiert OpenAI Prompt-Caching automatisch?

Ja, seit Oktober 2024. Jeder API-Aufruf mit 1.024 oder mehr Eingabe-Tokens profitiert automatisch vom Caching. Kein Opt-in, keine Header, keine Code-Änderungen erforderlich. Der Cache gleicht Token-Präfixe vom Anfang des Prompts ab.

Was ist der Unterschied zwischen Prompt-Caching und semantischem Caching?

Prompt-Caching gleicht exakte Token-Präfixe auf GPU-Ebene ab -- kein Genauigkeitsverlust, die Ausgaben sind identisch mit nicht gecachten Anfragen. Semantisches Caching verwendet Ähnlichkeit von Einbettungen, um "ähnliche" frühere Anfragen zu finden und gecachte Antworten zurückzugeben -- es ist schneller, kann aber falsche oder veraltete Antworten liefern. Sie lösen grundlegend unterschiedliche Probleme.

Wie lange hält der Prompt-Cache?

Das variiert je nach Anbieter. OpenAI: 5–10 Minuten (bis zu 24 Stunden mit verlängerter Aufbewahrung). Anthropic: 5 Minuten (Standard) oder 1 Stunde (verfügbar bei Claude 4.5+ Modellen, kostet 2x Schreiben). Gemini: konfigurierbar, Standard ist 1 Stunde für explizite Caches. Das implizite Caching-TTL wird automatisch von Google verwaltet.

Was ist die minimale Token-Länge für Prompt-Caching?

OpenAI: 1.024 Tokens. Anthropic: 1.024 Tokens für die meisten aktuellen Modelle. Gemini: 1.024 Tokens für Flash-Modelle, 4.096 für Pro-Modelle. Prompts unterhalb dieser Schwellenwerte aktivieren kein Caching -- das ist der häufigste "es funktioniert nicht"-Fehler.

Funktioniert Prompt-Caching mit Streaming-Antworten?

Ja. Caching und Streaming operieren in verschiedenen Phasen der Anfrage. Caching beschleunigt die Eingabe-Prefill-Phase; Streaming liefert Ausgabe-Tokens inkrementell. Beides funktioniert gleichzeitig, und Sie werden die TTFT-Verbesserung beim aktivierten Streaming tatsächlich deutlicher bemerken.

Wann sollte ich Prompt-Caching NICHT verwenden?

Verlassen Sie sich nicht auf Caching, wenn Ihre Prompts unter dem Mindest-Token-Schwellenwert liegen, wenn Sie Zeitstempel oder Session-IDs in den System-Prompt einschließen, wenn Sie Few-Shot-Beispiele zwischen Aufrufen rotieren, oder wenn Anfragen zu selten sind, um den Cache vor seinem Ablauf zu treffen (5–10-Minuten-Fenster für OpenAI/Anthropic).

Kann ich Prompt-Caching mit LangChain oder LiteLLM verwenden?

Ja. LangChain übergibt anbieterspezifische Caching-Parameter über seine API-Wrapper. LiteLLM bietet eine einheitliche Caching-Syntax, die cache_control über Anthropic, OpenAI, Gemini, Vertex AI und Bedrock normalisiert -- besonders nützlich für Multi-Anbieter-Setups.

Was ist ein Cache-Treffer vs. Cache-Miss?

Ein Cache-Treffer bedeutet, dass der Anbieter ein passendes Präfix im Speicher gefunden und die gespeicherten KV-Zustände wiederverwendet hat -- Sie zahlen den ermäßigten gecachten Token-Tarif und erhalten eine schnellere TTFT. Ein Cache-Miss bedeutet, dass keine Übereinstimmung gefunden wurde, sodass der vollständige Prompt zum Standardpreis von Grund auf verarbeitet wird. Prüfen Sie die Felder cached_tokens (OpenAI), cache_read_input_tokens (Anthropic) oder cachedContentTokenCount (Gemini) in der API-Antwort, um zu sehen, was eingetreten ist.

Abschließendes Urteil

KategorieGewinnerHauptgrund
Einfachstes SetupOpenAIAutomatisch, keine Konfiguration
Tiefster RabattAnthropic90 % Rabatt auf gecachte Lesezugriffe (0,1x Basis)
Meiste KontrolleAnthropicExplizite Breakpoints + 5-Min.- oder 1-Std.-TTL
Beste für lange DokumenteGeminiKonfigurierbares TTL mit benannten Cache-Objekten
Beste für Multi-Turn-ChatOpenAIAutomatischer Präfixabgleich auf Gesprächsverlauf
Beste für Agenten/MCPAnthropicTool-Definitionen explizit cachen

Prompt-Caching ist die aufwandsärmste, ertragreichste Optimierung im LLM-API-Stack. Sie ändern Ihr Modell nicht, Sie opfern keine Qualität, und die Implementierung reicht von "nichts tun" (OpenAI) über "ein Feld hinzufügen" (Anthropic) bis zu "ein Cache-Objekt erstellen" (Gemini).

Beginnen Sie mit dem automatischen Caching Ihres aktuellen Anbieters. Messen Sie Ihre Cache-Trefferquote mit dem obigen Logging-Hilfsprogramm. Wenn Sie unter 70 % liegen, strukturieren Sie Ihre Prompts neu (Statisches zuerst, Dynamisches zuletzt) und eliminieren Sie die Anti-Patterns. Die meisten Teams sehen 50–80 % Kosteneinsparungen innerhalb eines Tages nach der Implementierung dieser Änderungen.

Quellen

Tags

llm-prompt-cachingprompt-cachingllm-api-kostenopenaianthropicgeminikv-cacheki-entwicklung

Diesen Artikel teilen

Ihr Projekt starten

Bereit, etwas Außergewöhnliches zu bauen?

Machen wir aus Ihrer Vision ein fertiges Produkt. Unser Team baut mit Ihnen Software, die spürbar etwas bewegt.