Kontextlänge und Relevanz
Umfassenden Kontext, Tokenlimits und Relevanz ausgewogen miteinander verbinden
Kontextlänge und Relevanz ist eine kostenlose AI Prompt Engineering-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Prompt Engineering-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.
Das Budget des Kontextfensters
Jedes Modell verfügt über ein maximales Kontextfenster – die Gesamtzahl der Tokens, die es in einem API-Aufruf verarbeiten kann. Dazu gehören sowohl die Eingabe (Ihr Prompt plus Verlauf) als auch die Ausgabe (die Antwort des Modells).
Dieses Budget zu verstehen ist entscheidend: Wenn Sie es überschreiten, wird Ihr Prompt gekürzt oder die Ausgabe geht verloren. Wenn Sie es für irrelevanten Kontext verschwenden, hat das Modell weniger Raum, um über das Wesentliche nachzudenken.
Größen von Kontextfenstern
Verschiedene Modelle haben unterschiedliche Kontextlimits. Stand 2025:
- GPT-4o: 128.000 Tokens
- Claude Opus 4.5: 200.000 Tokens
- Gemini 1.5 Pro: 1.000.000 Tokens
- GPT-3.5 Turbo: 16.385 Tokens
Größere Fenster ermöglichen die Aufnahme von mehr Kontext, kosten aber pro Aufruf mehr. Für die meisten Aufgaben reichen 8.000–16.000 Tokens aus. Größer ist nicht immer besser, wenn dadurch irrelevante Inhalte aufgenommen werden.
import tiktoken
def estimate_tokens(text, model='gpt-4o'):
encoding = tiktoken.encoding_for_model(model)
return len(encoding.encode(text))
# Quick token budget calculator
models = {
'GPT-3.5 Turbo': 16385,
'GPT-4o': 128000,
'Claude Opus 4.5': 200000,
}
prompt = 'Explain the concept of technical debt in 500 words for a non-technical CEO.'
prompt_tokens = estimate_tokens(prompt)
for model_name, limit in models.items():
reserved_for_output = 1024
available = limit - prompt_tokens - reserved_for_output
print(f'{model_name}: limit={limit:,} | prompt={prompt_tokens} | '
f'context budget={available:,} tokens')Was Sie aufnehmen sollten: Relevanz bewerten
Bevor Sie einen Kontextbestandteil aufnehmen, fragen Sie sich: Ändert diese Information die Antwort?
Ein einfaches gedankliches Schema – bewerten Sie jedes Kontextelement:
- Hohe Relevanz (aufnehmen): wirkt sich direkt auf die Aufgabe aus, prägt das Vokabular oder schränkt die Optionen ein
- Mittlere Relevanz (vielleicht): liefert nützliche zusätzliche Informationen, aber die Ausgabe wäre auch ohne sie in Ordnung
- Geringe Relevanz (weglassen): ist zwar wahr, beeinflusst die Antwort aber in keiner Weise
def score_context_element(element, task):
'''
Heuristic: does this context element directly constrain or shape the answer?
Returns: HIGH / MEDIUM / LOW
'''
high_signals = ['stack', 'constraint', 'deadline', 'must', 'cannot', 'budget',
'audience', 'goal', 'version', 'scale', 'limit']
low_signals = ['founded', 'headquartered', 'fun fact', 'history', 'awards',
'team building', 'company culture', 'office location']
el_lower = element.lower()
if any(s in el_lower for s in high_signals):
return 'HIGH'
if any(s in el_lower for s in low_signals):
return 'LOW'
return 'MEDIUM'
context_elements = [
'Our stack is Python FastAPI and PostgreSQL',
'We cannot use any paid third-party APIs',
'Our company was founded in Berlin in 2020',
'We need the solution to handle 1000 requests/second',
'We won a startup award last year',
]
for el in context_elements:
score = score_context_element(el, task='optimize our API')
print(f'[{score:6}] {el}')Das Lost-in-the-Middle-Problem
Forschungen haben gezeigt, dass LLMs Informationen, die in der Mitte sehr langer Prompts stehen, weniger Aufmerksamkeit schenken. Kritischer Kontext in der Mitte eines Prompts mit 50.000 Tokens wird möglicherweise teilweise ignoriert.
Bewährte Vorgehensweise: Platzieren Sie den wichtigsten Kontext am Anfang oder Ende Ihres Prompts – diesen Positionen schenkt das Modell die größte Aufmerksamkeit.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Structure: critical constraint at the TOP, then the body, then the task
well_structured_prompt = (
# Critical constraint FIRST
'CRITICAL CONSTRAINT: Output must be under 50 words and contain no code.\n\n'
# Background in the middle
'Background: we are explaining our API rate limiting policy to non-technical support agents. '
'They handle billing inquiries and need to explain errors to customers. '
'Our rate limit is 100 requests per minute per API key.\n\n'
# Task at the end
'Task: Write the explanation.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=128,
messages=[{'role': 'user', 'content': well_structured_prompt}]
)
print(response.content[0].text)Lange Dokumente in Abschnitte aufteilen
Wenn Sie mit einem Dokument arbeiten müssen, das länger als Ihr Token-Budget ist, haben Sie drei Möglichkeiten:
- Zuerst zusammenfassen: Bitten Sie das Modell, das Dokument zu komprimieren, und arbeiten Sie anschließend mit der Zusammenfassung
- In Abschnitte aufteilen und verarbeiten: Teilen Sie das Dokument in Teile auf, verarbeiten Sie jeden Teil und führen Sie anschließend die Ergebnisse zusammen
- Extrahieren und einfügen: Extrahieren Sie nur die relevanten Abschnitte, bevor Sie sie in den Prompt aufnehmen
Versuchen Sie niemals, ein Dokument zu erzwingen, das das Kontextfenster überschreitet – es wird stillschweigend gekürzt.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
def chunk_and_summarize(long_text, chunk_size=2000):
'''Split text into chunks, summarize each, combine summaries.'''
words = long_text.split()
chunks = []
for i in range(0, len(words), chunk_size):
chunk = ' '.join(words[i:i + chunk_size])
chunks.append(chunk)
summaries = []
for idx, chunk in enumerate(chunks):
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=256,
messages=[{
'role': 'user',
'content': f'Summarize this section in 3 bullet points:\n\n{chunk}'
}]
)
summaries.append(f'Section {idx+1}:\n{response.content[0].text}')
return '\n\n'.join(summaries)
# Example usage
long_doc = 'word ' * 5000 # placeholder for a real document
print('Chunks needed:', len(long_doc.split()) // 2000 + 1)Relevanzfilterung in der Praxis
Relevanzfilterung bedeutet, nur die relevanten Teile eines großen Dokuments zu extrahieren, bevor Sie sie in einen Prompt aufnehmen. Das ist besonders wichtig für:
- lange Berichte, in denen nur ein Abschnitt relevant ist
- Code-Dateien, in denen nur eine Funktion überprüft werden muss
- E-Mail-Verläufe, in denen nur die letzten 3 Nachrichten von Bedeutung sind
- Datenbankschemata, in denen nur 2 von 50 Tabellen relevant sind
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Step 1: Filter first, then ask
full_schema = (
'Table: users (id, name, email, created_at, role)\n'
'Table: products (id, name, price, stock, category_id)\n'
'Table: orders (id, user_id, total, status, created_at)\n'
'Table: order_items (id, order_id, product_id, quantity, unit_price)\n'
'Table: categories (id, name, parent_id)\n'
'Table: reviews (id, product_id, user_id, rating, body)\n'
'Table: sessions (id, user_id, token, expires_at)'
)
# Only include relevant tables for the specific question
relevant_context = (
'Relevant tables for this query:\n'
'Table: orders (id, user_id, total, status, created_at)\n'
'Table: order_items (id, order_id, product_id, quantity, unit_price)\n'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': f'{relevant_context}\nWrite SQL to find the top 5 orders by total value this month.'
}]
)
print(response.choices[0].message.content)Den Gesprächsverlauf verwalten
In Unterhaltungen mit mehreren Nachrichten wächst der Verlauf mit jeder Runde. Wenn Sie ihn sinnvoll verwalten, bleibt Ihr Token-Budget im grünen Bereich:
- Gleitendes Fenster: Behalten Sie nur die letzten N Runden
- Zusammenfassung einfügen: Fassen Sie ältere Runden regelmäßig in einer Nachricht zusammen
- Wichtige Fakten extrahieren: Erfassen Sie wichtige Entscheidungen als Aufzählung und fügen Sie sie als Systemkontext ein
- Bei Themenwechsel zurücksetzen: Starten Sie eine neue Sitzung, wenn Sie zu einem nicht verwandten Thema wechseln
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
def summarize_history(old_history):
'''Compress old conversation turns into a brief summary.'''
history_text = '\n'.join(
f'{m["role"].upper()}: {m["content"]}' for m in old_history
)
response = client.chat.completions.create(
model='gpt-4o',
max_tokens=200,
messages=[{
'role': 'user',
'content': (
'Summarize this conversation history in 3 bullet points. '
'Focus on decisions made and key information established.\n\n'
+ history_text
)
}]
)
return response.choices[0].message.content
# Example: compressing old history before continuing
old_turns = [
{'role': 'user', 'content': 'We are building a Kanban app.'},
{'role': 'assistant', 'content': 'Great, what is your stack?'},
{'role': 'user', 'content': 'React + FastAPI + PostgreSQL.'},
{'role': 'assistant', 'content': 'Good choice for a Kanban app.'}
]
summary = summarize_history(old_turns)
print('Summary of old history:', summary)Techniken zur Kontextkomprimierung
Wenn Sie viel Kontext aufnehmen müssen, Ihr Token-Budget aber knapp ist, verwenden Sie Komprimierungstechniken:
- Aufzählungen statt Fließtext: Aufzählungen benötigen 30–50 % weniger Tokens als Sätze
- Bekannte Begriffe abkürzen: „PostgreSQL 15“ → „PG15“ nach der ersten Verwendung
- Füllphrasen entfernen: „Es ist erwähnenswert, dass …“ → nennen Sie einfach die Tatsache
- Strukturierte Formate verwenden: Schlüssel-Wert-Paare sind kompakter als Sätze
import tiktoken
def count_tokens(text):
enc = tiktoken.encoding_for_model('gpt-4o')
return len(enc.encode(text))
# Same information, different token counts
prose_context = (
'Our company is a startup that was founded recently and we are building '
'a data analytics platform. It is worth noting that we use Python for our backend. '
'Additionally, we have chosen PostgreSQL as our primary database. '
'Furthermore, we deploy on AWS using ECS containers.'
)
bullet_context = (
'Company: data analytics startup\n'
'Stack: Python backend, PostgreSQL, AWS ECS'
)
print('Prose context tokens: ', count_tokens(prose_context))
print('Bullet context tokens:', count_tokens(bullet_context))
print('Tokens saved:', count_tokens(prose_context) - count_tokens(bullet_context))
print('Same information? Yes — same facts, 60% fewer tokens')Dynamische Kontextauswahl
In produktiven KI-Anwendungen wird der Kontext häufig dynamisch danach ausgewählt, was für die aktuelle Anfrage am relevantesten ist. Dies wird als Retrieval-Augmented Generation (RAG) bezeichnet.
Statt alle Dokumente aufzunehmen, rufen Sie nur die semantisch ähnlichsten Dokumente zur Frage des Benutzers ab und fügen sie in den Prompt ein. So bleibt der Kontext kompakt und hochrelevant.
# Simplified RAG pattern: retrieve relevant chunks, inject into prompt
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Simulated knowledge base (in production: vector database)
knowledge_base = [
{'id': 1, 'topic': 'billing', 'text': 'Refunds are processed within 5-7 business days.'},
{'id': 2, 'topic': 'shipping', 'text': 'Standard shipping takes 3-5 days.'},
{'id': 3, 'topic': 'returns', 'text': 'Returns accepted within 30 days with receipt.'},
{'id': 4, 'topic': 'warranty', 'text': 'All products come with a 1-year warranty.'},
]
def get_relevant_docs(user_query, kb, top_k=2):
'''Simplified relevance: keyword match. Production uses embeddings.'''
scored = [(doc, sum(w in user_query.lower() for w in doc['topic'].split())) for doc in kb]
scored.sort(key=lambda x: x[1], reverse=True)
return [doc['text'] for doc, _ in scored[:top_k]]
query = 'Can I return this and get my money back?'
relevant = get_relevant_docs(query, knowledge_base)
context = '\n'.join(relevant)
print('Injected context:', context)
response = client.chat.completions.create(
model='gpt-4o', max_tokens=80,
messages=[{'role': 'user', 'content': f'Context:\n{context}\n\nQuestion: {query}'}]
)
print('Answer:', response.choices[0].message.content.strip())Das Kontextbudget planen
Planen Sie für produktive Anwendungen Ihr Kontextbudget ausdrücklich, bevor Sie mit der Entwicklung beginnen:
- Reservieren Sie 25 % des Kontextfensters für die Ausgabe
- Planen Sie 10 % für Systemnachricht und Persona ein
- Planen Sie 30 % für den aktuellsten Gesprächsverlauf ein
- Lassen Sie 35 % für dynamischen Kontext (abgerufene Dokumente, eingefügte Daten) frei
Dokumentieren Sie diese Aufteilungen als Konstanten in Ihrem Code, damit sie sich leicht anpassen lassen, wenn sich Ihr Anwendungsfall weiterentwickelt.
# Context budget planner
MODEL_LIMIT = 128000 # GPT-4o
BUDGET = {
'output_reserve': int(MODEL_LIMIT * 0.25), # 32,000 tokens
'system_message': int(MODEL_LIMIT * 0.05), # 6,400 tokens
'recent_history': int(MODEL_LIMIT * 0.30), # 38,400 tokens
'dynamic_context': int(MODEL_LIMIT * 0.35), # 44,800 tokens
'task_prompt': int(MODEL_LIMIT * 0.05), # 6,400 tokens
}
total_input = sum(v for k, v in BUDGET.items() if k != 'output_reserve')
print('Context budget plan:')
for key, tokens in BUDGET.items():
pct = round(tokens / MODEL_LIMIT * 100)
print(f' {key:<20}: {tokens:>7,} tokens ({pct}%)')
print(f' {"total input":<20}: {total_input:>7,} tokens')
print(f' {"+ output reserve":<20}: {BUDGET["output_reserve"]:>7,} tokens')
print(f' {"= model limit":<20}: {MODEL_LIMIT:>7,} tokens')Wann Relevanz wichtiger ist als Länge
Ein hochrelevanter Kontext mit 500 Tokens liefert bessere Ergebnisse als ein lose relevanter Kontext mit 5.000 Tokens. Das Modell erzeugt bessere Ausgaben, wenn es sich durch weniger irrelevantes Material arbeiten muss.
Anzeichen dafür, dass Ihr Kontext zu lang und zu wenig fokussiert ist:
- Das Modell ignoriert einige Ihrer Einschränkungen
- Die Ausgabe wirkt trotz des langen Kontexts allgemein
- Das Modell behandelt den falschen Teil Ihrer Frage
- Latenz und Kosten sind höher als erwartet
Wenn Sie diese Anzeichen sehen: Kürzen Sie den Kontext und führen Sie den Vorgang erneut aus.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Demonstrating: lean context produces sharper output
lean_context = (
'Task: write a 50-word product tagline.\n'
'Product: CLI tool that auto-generates Git commit messages from your diff.\n'
'Audience: senior developers who hate writing commit messages.\n'
'Tone: dry, witty, technical.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=100,
messages=[{'role': 'user', 'content': lean_context}]
)
print('Lean context output:')
print(response.content[0].text.strip())Wissensüberprüfung
Ein Entwickler erstellt einen Chatbot mit einem Gesprächsverlauf von 20 Runden. Nach 20 Runden füllt sich das Kontextfenster. Was ist die BESTE Strategie, um das Gespräch fortzusetzen, ohne wichtigen Kontext zu verlieren?
Kontextlänge und Relevanz – Rückblick
Eine effektive Kontextverwaltung ist eine zentrale Prompting-Fähigkeit, die in produktiven Anwendungen entscheidend wird. Die wichtigsten Grundsätze:
- Bewerten Sie jedes Kontextelement: hohe / mittlere / geringe Relevanz – nehmen Sie nur Elemente mit hoher Relevanz auf
- Platzieren Sie kritische Einschränkungen am Anfang oder Ende, nicht in der Mitte
- Verwenden Sie Aufzählungen statt Fließtext, um 30–50 % Tokens einzusparen
- Fassen Sie Dokumente zusammen oder teilen Sie sie in Abschnitte auf, wenn sie Ihr Budget überschreiten
- Komprimieren Sie in Unterhaltungen mit mehreren Nachrichten den alten Verlauf, statt von vorn zu beginnen
- Planen Sie Ihr Kontextbudget ausdrücklich als Konstanten im Code
Lerne AI Prompt Engineering mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 53
- Lektionen
- 199
Häufig gestellte Fragen
Ist die Lektion „Kontextlänge und Relevanz“ kostenlos?
Ja — der vollständige Text von „Kontextlänge und Relevanz“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Prompt Engineering-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Kontextlänge und Relevanz“?
Umfassenden Kontext, Tokenlimits und Relevanz ausgewogen miteinander verbinden Du übst AI Prompt Engineering mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Prompt Engineering zu starten?
Keine Vorkenntnisse erforderlich. AI Prompt Engineering auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Kontextlänge und Relevanz“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Prompt Engineering-Lektion Code schreiben und ausführen?
Ja. Jede AI Prompt Engineering-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Was Kontext beim Prompting bedeutet
- Hintergrundinformationen bereitstellen
- Den Kontext wirkungsvoll setzen
- Kontextlänge und Relevanz