Prompt Engineering
Die Kunst und Technik, Anweisungen für KI-Sprachmodelle so zu formulieren, dass sie optimale und zielgerichtete Ergebnisse liefern.
Die Kunst, den richtigen Kontext für LLM-Anfragen zusammenzustellen – welche Informationen, in welcher Reihenfolge, in welchem Format.
Context Engineering ist die Kunst, dem LLM genau die richtigen Informationen zu geben – nicht zu wenig, nicht zu viel, in der richtigen Reihenfolge und im richtigen Format.
Das Problem:
Zu wenig Kontext:
"Schreib eine E-Mail an den Kunden."
→ LLM weiß nicht: Welcher Kunde? Welches Thema? Welcher Ton?
Zu viel Kontext:
[Sehr viel Dokumentation]
"Beantworte die Frage."
→ Modell kann relevante Teile schlechter finden oder falsch gewichten
Optimaler Kontext:
[Relevante Auszüge] + [Kundenhistorie] + [Tonalitäts-Guidelines]
"Schreib eine E-Mail zur Reklamation."
→ Modell hat die wichtigsten Informationen kompakt verfügbar
Die drei Dimensionen:
| Dimension | Frage | Optimierung |
|---|---|---|
| Relevanz | Was gehört rein? | Retrieval, Filterung |
| Anordnung | In welcher Reihenfolge? | Wichtiges an Anfang/Ende |
| Format | Wie strukturiert? | XML, Markdown, Sections |
LLMs können Informationen aus der Mitte langer Kontexte je nach Modell und Aufgabe schlechter nutzen:
Kontext-Position: [Anfang] ... [Mitte] ... [Ende]
Aufmerksamkeit: ████████░░░░░░░░░░░░████████
Hoch Niedrig Hoch
Implikation:
Unstrukturiert (schlecht):
Hier sind einige Informationen: Der Kunde hat kürzlich bestellt.
Er ist Bestandskunde. Seine letzte Beschwerde betraf eine
Lieferverzögerung. Es gibt eine Rückgaberichtlinie...
Strukturiert (besser):
<customer>
<name>Kunde</name>
<since>Bestandskunde</since>
<last_order>letzte Bestellung</last_order>
</customer>
<complaint>
<type>Lieferverzögerung</type>
<date>aktuelles Ticket</date>
</complaint>
<policy>
<returns>geltende Rückgaberichtlinie</returns>
</policy>
<task>
Schreibe eine Entschuldigungs-E-Mail an den Kunden.
</task>
1. Semantic Search (Basis):
relevant_chunks = vector_db.search(query, top_k=retrieval_limit)
context = "\n".join(relevant_chunks)
2. Reranking (besser):
candidates = vector_db.search(query, top_k=candidate_limit)
reranked = reranker.rerank(query, candidates, top_k=final_context_limit)
context = "\n".join(reranked)
3. Contextual Retrieval:
# Chunks mit Kontext anreichern vor dem Embedding
for chunk in chunks:
chunk.context = llm.generate(
f"Beschreibe kurz, worum es in diesem Abschnitt geht "
f"im Kontext des Gesamtdokuments: {chunk.text}"
)
chunk.embedding = embed(chunk.context + chunk.text)
Wenn Kontext zu lang:
def compress_context(documents, max_tokens):
if count_tokens(documents) <= max_tokens:
return documents
# Option 1: Zusammenfassen
summary = llm.summarize(documents)
# Option 2: Extraktiv kürzen
key_sentences = extract_key_sentences(documents)
# Option 3: Unwichtiges entfernen
filtered = filter_by_relevance(documents, query)
return filtered
RAG:
[System Prompt]
[Retrieved Documents - nach Relevanz sortiert]
[User Query]
Coding Assistant:
[System Prompt mit Coding-Guidelines]
[Aktuelle Datei]
[Relevante importierte Dateien]
[Error Message / Task]
Chatbot:
[System Prompt]
[Zusammenfassung älterer Konversation]
[Letzte N Nachrichten]
[Aktuelle Nachricht]
[System Prompt mit Tools]
[Aufgabenbeschreibung]
[Bisherige Schritte und Ergebnisse]
[Aktuelle Beobachtung]
[Nächste Aktion?]
| Prinzip | Beschreibung |
|---|---|
| Relevanz vor Vollständigkeit | Lieber weniger, aber relevanter |
| Struktur hilft | XML, Markdown, klare Sections |
| Instruktionen nahe an der Aufgabe | Gut sichtbar vor oder bei der eigentlichen Anfrage |
| Wichtiges hervorheben | Kritische Informationen klar markieren oder wiederholen |
| Testen und Messen | A/B-Tests für Kontext-Varianten |
Context Engineering ist wie das Briefing für einen Berater: Je besser du ihm erklärst, wer du bist, was du brauchst und welche Infos relevant sind, desto besser wird sein Rat – aber zu viel Info überflutet ihn.
Welche Informationen gehören in den Kontext? (Relevanz)
In welcher Reihenfolge? (Primacy/Recency-Effekte)
In welchem Format? (Struktur, Kompression)
RAG-Systeme
Relevante Dokumente auswählen und optimal anordnen
Coding-Assistenten
Welche Dateien, Funktionen und Dokumentation gehören in den Kontext?
Chatbots
Konversationshistorie managen ohne Kontextfenster zu sprengen
LLM
Aufgabenkontext, Tools, Zwischenergebnisse strukturieren
Prompt Engineering fokussiert auf die Instruktion (was soll das Modell tun). Context Engineering fokussiert auf die Informationen (womit soll es arbeiten). Beides zusammen ergibt den vollen Input.
Mehr ist nicht immer besser. Bei langen Kontexten können Modelle Informationen in ungünstigen Positionen schlechter nutzen. Relevanz, Struktur und Priorisierung sind wichtiger als reine Menge.
Wichtige Informationen sollten klar priorisiert und gut auffindbar sein. Anfang und Ende sind oft besonders wirksam, aber die optimale Anordnung hängt von Modell, Aufgabe und Kontextstruktur ab.
Ja. Große Kontextfenster bedeuten nicht, dass alles hineingehört. Kosten, Latenz, Relevanz und Auffindbarkeit bleiben zentrale Themen.