Zum Hauptinhalt springen

Prompt Caching

Prompt Caching ist eine Technologie, die häufig verwendete Prompts oder Kontextinformationen zwischenspeichert, um API-Kosten zu reduzieren und die Antwortzeiten zu verbessern. Anthropic (2024) war der erste große Anbieter, der diese Technologie einführte.

1. Was ist Prompt Caching?

Prompt Caching speichert Teile deiner Eingabe (wie lange Dokumente, System-Prompts oder häufig verwendete Kontexte) zwischen, sodass sie bei nachfolgenden Anfragen nicht erneut verarbeitet werden müssen. Gim et al. (2024) zeigen in ihrer Arbeit zu Prompt Cache, wie diese Technologie die Effizienz von LLM-Inferenz signifikant verbessert.

Einfach erklärt: Stell dir vor, du musst einem Kollegen immer wieder dasselbe lange Dokument vorlesen, bevor du eine neue Frage stellst. Mit Caching musst du das Dokument nur einmal vorlesen - danach kann sich dein Kollege daran erinnern.

2. Hauptvorteile

  • Kostenersparnis: Bis zu 90% Reduktion bei Cache-Treffern
  • Schnellere Antworten: Reduzierte Latenz durch vorverarbeitete Kontexte
  • Höhere Rate Limits: Cache-Lesevorgänge zählen oft nicht gegen API-Limits
  • Konsistenz: Gleicher Kontext führt zu konsistenteren Antworten

3. Anthropic Claude - Prompt Caching

3.1 Preisstruktur

OperationKostenänderungBeispiel (Claude 3.5 Sonnet)
Cache Write+25% gegenüber Base Input$3.75 pro Million Tokens
Cache Read-90% gegenüber Base Input$0.30 pro Million Tokens
Output TokensUnverändert$15 pro Million Tokens

3.2 Code-Beispiel Anthropic

import anthropic

client = anthropic.Anthropic()

# Großes Dokument mit Caching
long_document = "..." # 10,000+ Token Dokument

# Erste Anfrage - Cache wird geschrieben
response1 = client.messages.create(
    model="claude-3-5-sonnet-20240620",
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": long_document,
                "cache_control": {"type": "ephemeral"}  # Aktiviert Caching
            },
            {
                "type": "text",
                "text": "Fasse die wichtigsten Punkte zusammen."
            }
        ]
    }]
)

# Zweite Anfrage - Cache wird gelesen (90% günstiger!)
response2 = client.messages.create(
    model="claude-3-5-sonnet-20240620",
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": long_document,
                "cache_control": {"type": "ephemeral"}
            },
            {
                "type": "text",
                "text": "Welche Risiken werden erwähnt?"
            }
        ]
    }]
)

4. OpenAI - Automatisches Context Caching

OpenAI implementiert automatisches Caching ohne explizite Kontrolle:

from openai import OpenAI

client = OpenAI()

base_context = '''
Hier ist ein umfangreiches Regelwerk für die Beantwortung von Fragen:
[... 2000+ Tokens Kontext ...]
'''

# Erste Anfrage - wird automatisch gecached
response1 = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": base_context},
        {"role": "user", "content": "Frage 1: Was sind die Hauptregeln?"}
    ]
)

# Nachfolgende Anfragen nutzen automatisch den Cache
response2 = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": base_context},  # Identischer Kontext
        {"role": "user", "content": "Frage 2: Gibt es Ausnahmen?"}
    ]
)

5. Google Gemini - Context Caching

Google Gemini bietet explizites Context Caching mit erweiterten Features:

import google.generativeai as genai
from datetime import timedelta

genai.configure(api_key="YOUR_API_KEY")

# Cache erstellen
cache = genai.caching.CachedContent.create(
    model='models/gemini-1.5-pro',
    display_name='product_documentation_cache',
    contents=[large_context],
    ttl=timedelta(hours=1)  # 1 Stunde Gültigkeit
)

# Model mit Cache verwenden
model = genai.GenerativeModel.from_cached_content(cache)

# Anfragen mit gecachtem Kontext
response1 = model.generate_content("Erkläre Feature X")
response2 = model.generate_content("Wie unterscheidet sich Feature Y von X?")

6. API-Verfügbarkeit

AnbieterVerfügbarTypMindestgrößeErsparnis
Anthropic✅ JaExplizit1024 TokensBis zu 90%
OpenAI✅ JaAutomatischVariabelNicht spezifiziert
Google✅ JaExplizit32K TokensBis zu 75%
Mistral❌ Nein---
Cohere⏳ Geplant---

7. Best Practices

7.1 ✅ Do's

  • Cache große, stabile Kontexte (über 1024 Tokens)
  • Verwende Caching für häufig wiederverwendete System-Prompts
  • Partitioniere Kontexte in statische und dynamische Teile
  • Überwache Cache-Performance und Kostenersparnis
  • Nutze längere TTL für stabile Inhalte

7.2 ❌ Don'ts

  • Cache keine kleinen Kontexte (unter 1024 Tokens)
  • Verwende kein Caching für einmalige Anfragen
  • Cache keine häufig ändernden Daten
  • Ignoriere nicht die Cache-Write-Kosten
  • Verlasse dich nicht auf unbegrenzte Cache-Dauer