Ihre Konversation mit Claude erreicht 80.000 Tokens. Das Modell beginnt, sich zu wiederholen. GPT-4o vergisst plötzlich den Kontext von fünf Nachrichten zurück. Mistral 7B auf Ihrem lokalen Rechner beginnt, Details zu halluzinieren, die zuvor erwähnt wurden.
Das sind keine zufälligen Fehler. Sie sind symptomatisch für ein schlechtes Management des Kontextfensters – die Lücke zwischen dem, was ein Modell theoretisch speichern kann, und dem, was es tatsächlich effektiv nutzt.
Das Kontextfenster verstehen (und was es wirklich bedeutet)
Ein Kontextfenster ist die Textmenge – gemessen in Tokens –, die ein Modell bei der Generierung einer Antwort berücksichtigen kann. Claude 3.5 Sonnet unterstützt 200.000 Tokens. GPT-4o unterstützt 128.000. Llama 3 70B unterstützt in seiner Basisversion 8.000.
Aber ein 200.000-Token-Fenster bedeutet nicht, dass Sie alle 200.000 Tokens für Ihre Konversation verwenden sollten.
Modelle schneiden bei Aufgaben schlechter ab, wenn sich das Fenster füllt – insbesondere bei Abruaufgaben, bei denen sie spezifische Informationen finden müssen, die im früheren Kontext vergraben sind. Interne Tests von Anthropic zeigen, dass die Genauigkeit von Claude bei „Nadel im Heuhaufen“-Abruaufgaben (Finden einer spezifischen Tatsache in einem langen Dokument) für jeden 25%igen Anstieg der Füllung des Fensters um etwa 5-7 % sinkt. Bei 80 % Kapazität ist mit einer verschlechterten Leistung beim Information-Recall zu rechnen, obwohl die Tokens noch passen.
Das praktische Fenster – in dem das Modell zuverlässig funktioniert – beträgt normalerweise 60-70 % des theoretischen Maximums. Darüber hinaus nimmt die Genauigkeit merklich ab.
Die drei Strategien, die wirklich funktionieren
1. Zusammenfassung vor Komprimierung
Beschneiden Sie alte Nachrichten nicht einfach. Fassen Sie sie zusammen.
Wenn eine Konversation 40.000 Tokens (für Claude Sonnet) oder 30.000 Tokens (für GPT-4o) überschreitet, stoppen Sie und erstellen Sie eine Zusammenfassung von allem, was bisher besprochen wurde. Dies dient zwei Zwecken: Es bewahrt die semantische Bedeutung ohne den Token-Aufblähung, und es zwingt das Modell, sein eigenes Verständnis zu konsolidieren.
# Schlechter Ansatz: einfach Nachrichten hinzufügen
Nutzer: [Nachricht 1]
Assistent: [Antwort 1]
Nutzer: [Nachricht 2]
Assistent: [Antwort 2]
... 50 Mal wiederholen ...
Nutzer: [Nachricht 51 - Kontextfenster ist voll]
# Besserer Ansatz: Zusammenfassung an Checkpoints
Nutzer: [Nachricht 1-10]
Assistent: [Antwort]
Nutzer: Bitte fasse unsere bisherige Konversation zusammen
Assistent: [Zusammenfassung der Diskussion, wichtige Entscheidungen, Kontext]
# Nun neue Nachrichten an die Zusammenfassung anhängen, nicht die vollständige Historie
Kontext: [Zusammenfassung von oben]
Nutzer: [Nachricht 11]
Assistent: [Antwort unter Verwendung von Zusammenfassung und neuer Nachricht]
Die Zusammenfassung wird zur neuen „Kontextbasis“ für nachfolgende Nachrichten. Sie haben 10 Nachrichten auf 200-400 Tokens komprimiert und dabei 95 %+ des semantischen Werts beibehalten.
2. Gleitendes Fenster mit expliziter Kontextinjektion
Für Anwendungen, bei denen Sie nicht pausieren und zusammenfassen können – wie ein Chatbot, der in Echtzeit antworten muss –, verwenden Sie einen gleitenden Fensteransatz. Behalten Sie nur die letzten N Nachrichten im aktiven Kontext, plus eine feste Systemanweisung, die den Interaktionsstil definiert.
# Systemanweisung (immer enthalten, zählt als Kontext)
Sie sind ein technischer Berater. Wenn der Nutzer nach der Bereitstellung fragt,
denken Sie daran: Wir verwenden AWS. Wenn Sie über Tests sprechen, beziehen Sie sich auf
die vorhandene Test-Suite im Code.
# Gleitendes Fenster: nur die letzten 5 Nachrichten behalten
[Vorherige Nachrichten gelöscht]
Nutzer: [Nachricht N-4]
Assistent: [Antwort]
Nutzer: [Nachricht N-3]
Assistent: [Antwort]
Nutzer: [Nachricht N-2]
Assistent: [Antwort]
Nutzer: [Nachricht N-1]
Assistent: [Antwort]
Nutzer: [Nachricht N] <- eingehend
# Token-Nutzung: Systemanweisung + letzte 5 Nachrichten
# Ergebnis: ~4.000-6.000 Tokens je nach Nachrichtenlänge
Der Kompromiss ist klar: Sie verlieren den historischen Kontext jenseits der letzten 5 Nachrichten, aber Sie erhalten eine konsistente Leistung. Für Anwendungsfälle, bei denen Nutzer nicht auf Dinge von vor 20 Nachrichten zurückgreifen – Kundensupport, Code-Review, iteratives Design – funktioniert dies gut.
3. Retrieval-Augmented Context (RAG-Muster)
Wenn Sie Zugriff auf alten Kontext benötigen, ohne ihn vollständig in der Konversation zu halten, betten und indizieren Sie frühere Nachrichten oder Dokumente und rufen dann nur die relevanten ab.
Anstatt die vollständige 40.000-Token-Konversation an das Modell zu übergeben, tun Sie Folgendes:
- Konvertieren Sie jede Nachricht oder jeden Abschnitt in eine Einbettung (Embedding).
- Speichern Sie die Einbettungen in einer Vektordatenbank (Pinecone, Weaviate, sogar SQLite mit Vektorerweiterung).
- Wenn der Nutzer eine neue Nachricht sendet, rufen Sie die 3-5 ähnlichsten vorherigen Nachrichten ab.
- Fügen Sie diese zusammen mit der aktuellen Nachricht in den Kontext ein.
Dies hält Ihr aktives Kontextfenster bei 5.000-8.000 Tokens und ermöglicht gleichzeitig den Zugriff auf eine effektiv unbegrenzte Konversationshistorie. Das Modell sieht nur das, was für die aktuelle Anfrage relevant ist.
# Pseudocode für RAG-basiertes Kontextmanagement
import anthropic
from embedding_service import embed_and_store, retrieve_similar
def chat_with_rag_context(user_message, conversation_id):
# Ähnliche vergangene Nachrichten abrufen
similar_messages = retrieve_similar(
query=user_message,
conversation_id=conversation_id,
limit=4
)
# Kontextfenster aufbauen
context =