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.

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

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

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

AnbieterVerfügbarTypMindestgrößeErsparnis
Anthropic✅ JaExplizit1024 TokensBis zu 90%
OpenAI✅ JaAutomatischVariabelNicht spezifiziert
Google✅ JaExplizit32K TokensBis 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