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.
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.
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.
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
Anthropic Claude - Prompt Caching
Preisstruktur
Operation | Kostenänderung | Beispiel (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 Tokens | Unverändert | $15 pro Million Tokens |
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?"
}
]
}]
)
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?"}
]
)
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?")
API-Verfügbarkeit
Anbieter | Verfügbar | Typ | Mindestgröße | Ersparnis |
---|---|---|---|---|
Anthropic | ✅ Ja | Explizit | 1024 Tokens | Bis zu 90% |
OpenAI | ✅ Ja | Automatisch | Variabel | Nicht spezifiziert |
✅ Ja | Explizit | 32K Tokens | Bis zu 75% | |
Mistral | ❌ Nein | - | - | - |
Cohere | ⏳ Geplant | - | - | - |
Best Practices
✅ 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
❌ 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