Zum Hauptinhalt springen
Lektion 3 von 20 · Produktion, Evaluierung und Optimierung

Prompt-Caching: Berechnungen wiederverwenden

Lektion 3 von 20 Aktualisiert am 28. Juli 2026 Fortgeschritten
Auf dieser Seite
  1. Was ist Prompt-Caching?
  2. Funktionsweise
  3. Strukturierung zur Maximierung des Caches
  4. Kernaussagen

Was ist Prompt-Caching?

Wenn Sie wiederholt denselben Prompt-Vorfix senden – einen langen System-Prompt, detaillierte Anweisungen oder ein Referenzdokument –, kann OpenAI diesen Vorfix automatisch zwischenspeichern. Nachfolgende Aufrufe, die diesen Vorfix teilen, profitieren von einer verkürzten Zeit bis zum ersten Token (TTFT) und geringeren Kosten für Eingabetokens. Mit anderen Worten: Die Arbeit zur Aufnahme des stabilen Kontexts wird für jede Anfrage nicht wiederholt.

Prompt-Caching war seit 2025 automatisch: Sie müssen nichts aktivieren. OpenAI erkennt identische Vorfixe und speichert diese zwischendurch. Ihr Hebel liegt daher nicht darin, das Feature einzuschalten oder auszuschalten, sondern darin, Ihre Prompts so zu schreiben, dass der Mechanismus angewendet werden kann. Dies ist eine Frage der Struktur, nicht der Konfiguration, und hier lassen die meisten Teams Geld auf dem Tisch.

Funktionsweise

Das Cache gilt für Prompt-Vorfixe: Die ersten Tokens müssen von einem Aufruf zum nächsten strikt identisch sein, und die Übereinstimmung endet beim ersten abweichenden Zeichen. Eine Mindestgröße von 1.024 Tokens ist erforderlich, um das Caching auszulösen, was kurze System-Prompts sofort ausschließt. Das Cache ist innerhalb einer einzelnen Organisation geteilt, sodass mehrere Dienste in Ihrem Unternehmen, die denselben Vorfix aufrufen, sich gegenseitig unterstützen. Die Lebensdauer reicht von wenigen Minuten bis zu wenigen Stunden, ohne feste Garantie, und die erreichte Reduktion beträgt etwa 50 % bei den Kosten für zwischengespeicherte Eingabetokens.

Die praktische Konsequenz der Vorfix-Regel besteht darin, dass Sie stabile Elemente am Anfang des Prompts und variable Elemente am Ende platzieren müssen. Ein Dienst, der das heutige Datum oder eine Sitzungs-ID am Kopf seines System-Prompts einfügt, ungültigt sein Cache bei jedem Aufruf, ohne es zu merken.

import openai

client = openai.OpenAI()

# ✅ Gute Struktur: Stabile Elemente zuerst
SYSTEM_PROMPT = """Sie sind eine Rechtsassistentin, die sich auf das französische
Vertragsrecht spezialisiert hat. Sie analysieren Vertragsklauseln gemäß dem
Bürgerlichen Gesetzbuch und der jüngeren Rechtsprechung. Sie antworten
immer, indem Sie Ihre Analyse strukturieren: 1) Klauselidentifikation,
2) Rechtliche Analyse, 3) Potenzielle Risiken, 4) Empfehlungen.

Hier ist das Referenzvertragsdokument zur Analyse:
[Fügen Sie hier ein Dokument mit 2.000+ Tokens ein, das zwischen den Aufrufen nicht ändert]
"""

def analyze_clause(clause: str) -> str:
    """Jeder Aufruf nutzt den System-Prompt-Cache erneut."""
    response = client.responses.create(
        model="gpt-5.6-terra",
        instructions=SYSTEM_PROMPT,  # Stabiler Vorfix = zwischengespeichert
        input=f"Analysieren Sie diese Klausel: {clause}",  # Variabler Teil
    )
    return response.output_text

In diesem Beispiel stellen das Referenzvertragsdokument und das Analyse-Rahmenwerk den invarianten Block dar, während die zu untersuchende Klausel bei jedem Aufruf wechselt. Analysieren Sie vierzig Klauseln aus demselben Vertrag, und Sie zahlen für den Kontext nur einmal zum vollen Preis.

Überprüfung des Caches

Eine Optimierung, die Sie nicht messen, ist eine Optimierung, die Sie nur glauben zu haben. Die API gibt Informationen zur Cache-Nutzung in der Antwort zurück:

response = client.responses.create(
    model="gpt-5.6-terra",
    instructions=SYSTEM_PROMPT,
    input="Analysieren Sie die Nichtwettbewerbsklausel.",
)

# Cache-Nutzung überprüfen
usage = response.usage
print(f"Eingabetokens: {usage.input_tokens}")
print(f"Eingabetokens (zwischengespeichert): {usage.input_tokens_details.cached_tokens}")
print(f"Ausgabetokens: {usage.output_tokens}")

# Wenn cached_tokens > 0: Der Cache wurde genutzt
cache_ratio = usage.input_tokens_details.cached_tokens / usage.input_tokens
print(f"Cache-Verhältnis: {cache_ratio:.1%}")

Protokollieren Sie dieses Verhältnis in der Produktion, anstatt es einmal in der Entwicklung zu prüfen. Ein plötzlicher Rückgang der Cache-Rate ist das zuverlässigste Symptom für eine unbeabsichtigte Änderung der Prompt-Konstruktion, und Sie werden es bemerken, bevor Ihnen die monatliche Rechnung davon berichtet.

Strukturierung zur Maximierung des Caches

Der erste Ansatz besteht darin, den System-Prompt bewusst zu bereichern. Dies wirkt kontraintuitiv, wenn Sie versuchen, Tokens zu reduzieren, aber es stimmt mit der Schwellenwert-Regel überein: Ein 900-Token-System-Prompt wird niemals zwischengespeichert, wohingegen derselbe Prompt, der um Few-Shot-Beispiele und ein Referenzdokument erweitert wurde, die Grenze überschreitet und für den zwischengespeicherten Teil auf den reduzierten Tarif umschaltet.

# Den System-Prompt bereichern, um das Cache zu maximieren
ENRICHED_PROMPT = """
[Detailierte Anweisungen - 500+ Tokens]
[Few-Shot-Beispiele - 500+ Tokens]
[Referenzdokument - 1.000+ Tokens]
---
Gesamt > 1.024 Tokens = berechtigt für Cache
"""

In einem mehrstufigen Gespräch funktioniert der Mechanismus zu Ihren Gunsten ohne zusätzlichen Aufwand: Die angesammelte Historie bildet einen natürlich stabilen Vorfix, der mit jedem Austausch wächst. Solange Sie Nachrichten immer in derselben Reihenfolge wieder einfügen, profitiert der zehnte Turn vom Cache, der durch die vorherigen neun aufgebaut wurde.

def conversation_with_cache(history: list[dict], new_message: str):
    """Wachsende Historie maximiert das Cache automatisch."""
    history.append({"role": "user", "content": new_message})

    response = client.responses.create(
        model="gpt-5.6-terra",
        instructions=SYSTEM_PROMPT,
        input=history,
    )

    history.append({
        "role": "assistant",
        "content": response.output_text,
    })
    return response.output_text

Schließlich wird die Cache-Lebensdauer in Minuten gemessen, sodass das Gruppieren von Anfragen, die denselben Vorfix teilen, eine Entscheidung bezüglich der Zeitplanung darstellt. Die Verarbeitung von vierzig Klauseln aus einem Vertrag hintereinander hält das Cache „warm”; das Verteilen über den Tag hinweg mit Zwischenschaltung anderer Dateien lässt es zwischen den Aufrufen verfallen.

import asyncio

async def batch_with_cache(clauses: list[str]) -> list[str]:
    """Sendet Anfragen schnell, um das Cache zu nutzen."""
    results = []
    for clause in clauses:
        result = analyze_clause(clause)
        results.append(result)
    return results

Drei Fehler zunichtemachen all diese Arbeit, und sie sehen ähnlich aus: Die Änderung des Anfangs des Prompts, selbst nur um ein einziges Zeichen, ungültigt den Cache für die gesamte Anfrage; die Randomisierung der Reihenfolge der Anweisungen, beispielsweise durch den Aufbau des Prompts aus einem ungeordneten Wörterbuch, erzeugt denselben Effekt intermittierend und ist daher schwer zu diagnostizieren; und die Erwartung von Gewinnen unterhalb des 1.024-Token-Schwellenwerts bedeutet, dass Sie versuchen, etwas zu optimieren, das niemals ausgelöst wird.

Kernaussagen

  • Prompt-Caching ist bei OpenAI automatisch – platzieren Sie stabile Elemente am Anfang des Prompts
  • Mindestschwellenwert: 1.024 identische Tokens im Vorfix
  • Gewinn: ~50 % bei zwischengespeicherten Eingabetokens + reduzierte TTFT
  • Prüfen Sie usage.input_tokens_details.cached_tokens, um das Caching zu bestätigen