Prompt Engineering

Grundlagen: der Prompt als Spezifikation

Ein Extraktions-Prompt liest Vertragsende aus Dokumenten. Bei unbefristeten Verträgen steht dort kein Datum — und im Feld erscheint trotzdem eines: plausibel, erfunden, syntaktisch gültig. Kein Fehler wird protokolliert, weil kein Fehler auftrat. Wer den Grenzfall nicht spezifiziert, hat die Entscheidung an die Wahrscheinlichkeitsverteilung delegiert, ohne es zu merken.

Lehrtext · 12 Abschnitte · zuletzt geprüft: 2026-09-04

Der Prompt ist eine Spezifikation, kein Wunsch

Die meisten schlechten Prompts sind nicht falsch formuliert — sie sind unvollständig. Sie beschreiben, was jemand sich wünscht, und lassen offen, woran man erkennen würde, dass der Wunsch erfüllt ist. Ein Modell kann eine Lücke in der Spezifikation nicht als Lücke behandeln; es füllt sie mit dem, was in vergleichbaren Texten am wahrscheinlichsten dastand. Das Ergebnis wirkt wie Unzuverlässigkeit des Modells, ist aber die getreue Ausführung einer unvollständigen Angabe.

Der nützliche Perspektivwechsel: Behandle den Prompt wie eine Schnittstellen-Spezifikation — was hineingeht, was herauskommt, welche Constraints gelten, was in Fällen passiert, die keine Normalfälle sind. Anthropic formuliert dieselbe Haltung als Faustregel: Zeige deinen Prompt einer Kollegin mit minimalem Kontext zur Aufgabe und lass sie ihn ausführen — wenn sie ins Stocken kommt, kommt das Modell es auch.

System-PromptDie Instruktions-Ebene, die vor dem Gespräch gesetzt wird und für alle Turns gilt — Rolle, Regeln, Format, Grenzen. Technisch ein eigenes Feld (system) neben der Nachrichtenliste, nicht bloß der erste Satz der Nutzereingabe.

Aufgabefachliches ZielKontextrelevant + begrenztAusgabeformklarer VertragValidierungSystemgrenzePROMPT-QUALITÄT = AUFGABE, KONTEXT, VERTRAG UND EMPIRISCHE PRÜFUNGAnweisung senkt Varianz; die Anwendung bleibt für Prüfung, Rechte und Seiteneffekte verantwortlich.
Vier Bestandteile, die eine vollständige Prompt-Spezifikation hat: Aufgabe und Constraints, abgegrenzte Eingabedaten, Beispiele für die gewünschte Form, und ein benanntes Ausgabeformat samt Verhalten im Grenzfall.
MerksatzWas der Prompt nicht festlegt, legt das Modell fest — nach Wahrscheinlichkeit, nicht nach deinem Bedarf. Jede offene Stelle ist eine Entscheidung, die du delegiert hast, ohne es zu merken.

Spezifizität: Constraints statt Adjektive

„Schreibe eine gute Zusammenfassung“ ist keine Anforderung, sondern eine Bewertung. Adjektive wie gut, prägnant, professionell oder ausführlich verschieben die Entscheidung nur ins Modell: Es muss raten, was du unter dem Wort verstehst, und es rät bei jedem Aufruf neu. Genau daraus entsteht die typische Beschwerde „mal zwei Sätze, mal eine halbe Seite“.

Ein Adjektiv wird zur Anforderung, sobald du es durch etwas ersetzt, das jemand nachprüfen kann. Für Textausgaben sind das fast immer die gleichen vier Achsen — und es lohnt, sie stumpf abzuarbeiten, statt auf eine gelungene Formulierung zu hoffen:

Achse
Statt Adjektiv: prüfbare Angabe
Umfang
„3 bis 5 Sätze, höchstens 80 Wörter“ statt „prägnant“
Adressat
„für einen Bereitschaftsdienst, der das Ticket nicht kennt“ statt „verständlich“
Pflichtinhalte
„nennt Auslöser, betroffenen Dienst und aktuellen Stand“ statt „vollständig“
Form
„Fließtext ohne Aufzählung, kein Vorspann“ statt „professionell“

Die Anbieter-Doku ergänzt einen Punkt, der oft übersehen wird: Auch Begründungen wirken. Statt der Regel NEVER use ellipses empfiehlt sie „Deine Antwort wird von einer Sprachausgabe vorgelesen, verwende deshalb keine Auslassungspunkte — die Sprachausgabe kann sie nicht aussprechen.“ Die zweite Fassung ist länger und trotzdem wirksamer, weil das Modell aus dem Grund auf verwandte Fälle verallgemeinern kann. Eine Regel ohne Grund gilt genau für den Fall, den sie nennt.

MerksatzEin Adjektiv ist eine Anforderung, die noch nicht geschrieben ist. Ersetze es durch eine Zahl, einen Adressaten, eine Pflichtliste oder eine Formangabe — und nenne den Grund, wenn du willst, dass die Regel auch für den Nachbarfall gilt.

Struktur: die Grenze zwischen Instruktion und Daten

Ein Prompt in Produktion ist fast immer eine Vorlage: fester Instruktionstext plus zur Laufzeit eingesetzte Daten — ein Dokument, ein Ticketverlauf, eine Nutzereingabe. Klebt man beides zu einem Fließtext zusammen, entsteht ein Text, in dem nichts markiert, welcher Satz Auftrag und welcher Satz Material ist. Das Modell sieht nur eine Zeichenfolge.

Deshalb: jeden Bestandteil in ein eigenes, benanntes Feld. Die Anthropic-Doku empfiehlt dafür XML-Tags — <instructions>, <context>, <input> —, weil sie die Zuordnung eindeutig machen und sich verschachteln lassen (<documents> mit je einem <document index="n">). Wichtig ist nicht das Format; wichtig ist, dass die Grenze existiert und dass die Tag-Namen über deine Prompts hinweg gleich bleiben.

Aufgabe und ConstraintsBeispieleabgegrenzte EingabedatenAusgabeformat und Grenzfälle

Wie stark solche Oberflächen-Entscheidungen wirken, ist besser belegt, als es angenehm ist. Sclar und Kollegen haben systematisch bedeutungserhaltende Formatvarianten durchprobiert — andere Trennzeichen, andere Groß-/Kleinschreibung der Feldnamen, andere Reihenfolge — und bei LLaMA-2-13B eine Spanne von bis zu 76 Genauigkeitspunkten zwischen der besten und der schlechtesten Variante gemessen. Die Empfindlichkeit verschwand nicht mit größeren Modellen, mehr Beispielen oder Instruction-Tuning.

Was daraus folgtNicht: „suche das magische Format“. Sondern: Ein einzelner Messwert für einen einzelnen Prompt ist kein belastbarer Vergleich — und wenn eine Formatänderung dein Ergebnis kippt, hast du eine Messung, kein Naturgesetz. Fixiere ein Format und ändere es bewusst, nicht beim Aufräumen.

Das Ausgabeformat ist ein Vertrag

Sobald Code die Antwort konsumiert, ist das Ausgabeformat keine Stilfrage mehr, sondern eine Schnittstelle. Der typische Produktionsfehler sieht so aus: Der Prompt bittet um JSON, ein Parser liest es, und in 2 von 100 Fällen kommt ein einleitender Satz davor, ein Codeblock-Zaun darum oder ein zusätzliches Feld dazu. Der Parser bricht, und die Fehlerrate wirkt zufällig.

Eine vollständige Format-Spezifikation hat drei Teile, und alle drei fehlen meistens:

  • Benannte Felder mit Typ — nicht „gib JSON zurück“, sondern welche Schlüssel mit welchem Wertebereich, und ob weitere Felder erlaubt sind.
  • Ein Beispiel der exakten Form — die Doku empfiehlt, Beispiele in <example>-Tags zu setzen, damit sie nicht als Teil der Instruktion gelesen werden.
  • Ein Verhalten für „Wert nicht vorhanden“ — sonst ist die einzige Alternative, die das Modell kennt, eine plausibel aussehende Erfindung.

Und danach: validieren. Eine Formatangabe im Prompt ist eine Bitte, keine Durchsetzung — sie senkt die Fehlerrate, sie garantiert nichts. Wie man von der Bitte zum erzwungenen Schema kommt (Schema-Zwang beim Decoding, Validierung, Repair-Budget), ist Thema des Moduls Strukturierte Ausgabe erzwingen. Hier gilt nur der Grundsatz: spezifizieren und prüfen, nie hoffen.

MerksatzEine Formatbitte im Prompt ist eine Wahrscheinlichkeitsverschiebung, keine Zusicherung. Jeder Konsument, der ohne Validierung parst, hat den Vertrag nur einseitig unterschrieben.

Beispiele: was Few-shot wirklich überträgt

Beispiele sind der zuverlässigste Hebel für Form, Ton und Struktur — insbesondere dort, wo eine Aufgabe an euren Konventionen hängt, die das Modell nicht kennen kann: eure sechs Ticket-Kategorien, eure Grenze zwischen Zugang und Bug, euer Hausformat. Beschreibungen solcher Konventionen werden lang und bleiben mehrdeutig; drei Beispiele erledigen es. Die Anbieter-Doku nennt 3 bis 5 Beispiele als Richtwert und fordert, sie in <example>-Tags zu setzen.

Der interessante Befund betrifft aber, was dabei eigentlich übertragen wird. Min und Kollegen haben in den Demonstrationen die Labels durch zufällige Labels ersetzt — und die Leistung brach über 12 Modelle hinweg kaum ein. Was den Nutzen trägt, waren drei andere Dinge: der Label-Raum (welche Antworten überhaupt in Frage kommen), die Verteilung der Eingaben (wie die Fälle aussehen) und das Format der Sequenz.

Vorsicht bei der ÜbertragungDer Befund heißt nicht „Labels dürfen falsch sein“. Er ist an Klassifikations- und Multiple-Choice-Aufgaben gemessen, und falsche Labels bleiben ein Risiko, sobald aus dem Beispiel Inhalt übernommen wird. Er heißt: Deine Aufmerksamkeit ist besser in Abdeckung investiert als in Label-Perfektion.

Praktisch verschiebt das die Auswahl der Beispiele. Nicht die vier klarsten Fälle nehmen — die kann das Modell ohnehin —, sondern die Ränder, an denen ihr selbst diskutiert habt: den Login-Fehler, der Zugang und nicht Bug ist; die Löschanfrage, die DSGVO und nicht Abrechnung ist. Die Doku sagt dasselbe als Anforderung an Beispiele: relevant, divers (Grenzfälle abdecken), strukturiert.

Beispielwahl für sechs Kategorien

Szenario

Eure Klassifikation von Support-Nachrichten in sechs interne Kategorien trifft ~78 %. Die Fehlerauswertung zeigt: fast alle Fehler liegen auf zwei Grenzen — Zugang gegen Bug (Login-Probleme) und DSGVO-Anfrage gegen Abrechnung (Löschwünsche mit Rechnungsbezug). Der Prompt enthält aktuell vier Beispiele, alle unstrittige Fälle, alle aus derselben Woche.

Anforderungen

  • Welche Beispiele ersetzt du, und warum diese?
  • Benenne den Preis der Maßnahme, nicht nur den Gewinn.

Schritte

  1. Die vier unstrittigen Beispiele durch Grenzfälle ersetzen: je zwei von jeder verwechselten Grenze, mit dem korrekten Label. Sie tragen die Information, die den Fehlern fehlt — die Lage der Grenze, nicht die Existenz der Kategorien.
  2. Den Label-Raum vollständig zeigen: alle sechs Kategorien sollen in den Beispielen vorkommen, sonst ist eine Kategorie nur im Instruktionstext belegt und im Beispielblock unsichtbar.
  3. Die Beispiele in <example>-Tags setzen und im Instruktionsteil auf sie verweisen, damit sie nicht als zusätzliche Regeln gelesen werden.
  4. Nach der Änderung an einem festen Fallsatz messen — nicht an den vier Nachrichten, die den Anlass gaben. Sonst optimierst du auf die Anekdote.

Merksatz: Beispiele lehren den Label-Raum, die Eingabeverteilung und die Form — also gehören dort die Fälle hinein, bei denen die Grenze unklar ist, nicht die Fälle, die ohnehin gelingen. + Die Fehler sinken genau dort, wo sie auftreten. Grenzfall-Beispiele sind länger und verbrauchen Kontext bei jedem Aufruf, und sie sind schwerer zu pflegen: ändert sich eure Taxonomie, sind sie zuerst falsch.

Die Reihenfolge der Beispiele ist nicht neutral

Ein Detail, das in Reviews fast nie auffällt: Dieselben Beispiele in anderer Reihenfolge ergeben andere Ergebnisse. Zhao und Kollegen haben drei systematische Schieflagen benannt, die genau daraus entstehen — und alle drei sind Eigenschaften deines Beispielblocks, nicht des Modells im Abstrakten.

Schieflage
Was sie in deinem Prompt anrichtet
Majority-Label-Bias
Kommt ein Label in den Beispielen häufiger vor, wird es häufiger vorhergesagt — deine Beispielverteilung wird zur Vorannahme.
Recency-Bias
Labels am Ende des Beispielblocks werden bevorzugt — die letzten zwei Beispiele wirken stärker als die ersten zwei.
Common-Token-Bias
Antworten, die im Vortraining häufig waren, werden bevorzugt — ein seltener Kategoriename ist strukturell benachteiligt.

Daraus folgen zwei stumpfe, wirksame Regeln. Erstens: die Label-Verteilung im Beispielblock ausbalancieren, statt sie zufällig entstehen zu lassen — sonst baust du eine Vorannahme ein, die du nicht dokumentiert hast. Zweitens: nicht alle Beispiele einer Kategorie ans Ende stellen; die Reihenfolge ist Teil des Prompts und gehört fixiert, nicht dem Zufall der Datei überlassen.

Kurzcheck

Euer Klassifikations-Prompt hat neun Beispiele: sechs Abrechnung, drei verteilt auf die übrigen fünf Kategorien. In Produktion landet auffällig viel in Abrechnung. Was ist die naheliegendste Ursache?

  • Die Beispielverteilung selbst wirkt als Vorannahme zugunsten von Abrechnung
  • Die Kategorie Abrechnung ist inhaltlich zu weit definiert
  • Die Temperature ist zu hoch eingestellt
  • Es fehlen Beispiele für den Fall, dass keine Kategorie passt

Treffer. Genau — Majority-Label-Bias. Sechs von neun Beispielen tragen dasselbe Label; das verschiebt die Vorhersage in dessen Richtung, unabhängig davon, was der Instruktionstext sagt.

Kontext und Rolle: Register statt Beschwörung

„Du bist ein Weltklasse-Experte für …“ ist der beliebteste Prompt-Baustein ohne benennbare Wirkung. Er enthält keine Information, die das Modell nicht schon hat: Es weiß, wie Fachtexte klingen. Was es nicht wissen kann, ist die Situation — wer liest, mit welchem Vorwissen, zu welchem Zweck, unter welcher Einschränkung.

Ein Doku-Assistent, der erfahrenen Engineers Grundlagen erklärt und Neueinsteigern Kürzel hinwirft, hat kein Wissensproblem, sondern ein Register-Problem: Im Prompt steht nicht, wer fragt. Die Anbieter-Doku empfiehlt entsprechend, Kontext und Motivation der Anweisung mitzugeben.

Trägt nichts
Trägt etwas
„Du bist ein erfahrener SRE.“
„Der Leser hat Bereitschaft, kennt das System, aber nicht diesen Vorfall.“
„Antworte professionell.“
„Die Antwort geht als Kommentar in ein Kundenticket.“
„Sei gründlich.“
„Unklarheiten benennen, statt sie zu überbrücken — es wird danach gehandelt.“
Ehrlich bleibenEin Rollensatz ist nicht schädlich, er ist nur meist wirkungslos — und er verdeckt, dass die eigentliche Angabe fehlt. Wenn eine Rollenzeile in deinem Eval messbar hilft, behalte sie. Die Frage ist, ob du das je gemessen hast.

Positiv instruieren: den Zielzustand benennen

System-Prompts wachsen in eine erkennbare Form: eine Liste von Verboten, die nach jedem Vorfall um eins länger wird. „Nicht ausschweifen“, „keine internen Codenamen“, „nicht spekulieren“ — fünfzehn Regeln später ist der Prompt lang, teuer und beschreibt trotzdem nirgends, wie eine gute Antwort aussieht.

Zwei Gründe, warum Verbotslisten schwächer sind, als sie sich anfühlen. Der erste ist sprachlich: Negation ist für Sprachmodelle nachweislich schwierig. Truong und Kollegen fanden über eine Reihe von Negations-Benchmarks eine Unempfindlichkeit gegenüber der Anwesenheit einer Negation und ein Versagen beim Schließen unter Negation. Der zweite ist logischer Natur: Ein Verbot schließt einen Teil des Fehlerraums aus und lässt den Rest offen — es gibt beliebig viele Arten, „nicht ausschweifend“ zu sein, und nur wenige davon willst du.

Die Anbieter-Doku macht daraus eine explizite Regel: Sage dem Modell, was es tun soll, statt was es nicht tun soll. Ihr eigenes Beispiel: statt Do not use markdown in your response besser „Deine Antwort besteht aus flüssig geschriebenen Absätzen.“ Die zweite Fassung ist kein höflicheres Verbot, sondern eine andere Art von Angabe — sie beschreibt einen Zielzustand, den man erkennen kann.

MerksatzEin Verbot verkleinert den Fehlerraum, eine Zielbeschreibung benennt den Zielzustand. Wenn du dein Verbot nicht in eine positive Angabe übersetzen kannst, weißt du noch nicht genau, was du willst — und dann kann es das Modell auch nicht wissen.

Grenzfälle sind Teil der Spezifikation

Die teuersten Prompt-Lücken sind die, die im Normalfall nicht auffallen. Ein Extraktions-Prompt zieht Vertragsende aus Dokumenten. Bei befristeten Verträgen funktioniert er. Bei unbefristeten steht kein Datum im Dokument — und im Feld erscheint trotzdem eines, plausibel, erfunden, syntaktisch korrekt. Nichts protokolliert einen Fehler, weil kein Fehler auftrat: Das Feld war als „Datum“ spezifiziert, und ein Datum kam.

Das ist der Kern: Ein Modell hat für den unspezifizierten Fall keinen Ausgang. Es kann null nicht wählen, wenn null nicht existiert. Also braucht jede Ausgabe-Spezifikation einen benannten Weg für die Fälle, die keine Normalfälle sind:

  • Wert nicht im Dokument — was steht dann im Feld? (null, leerer String, ein Marker — aber benannt.)
  • Mehrere Kandidaten — welcher gewinnt, oder ist Mehrdeutigkeit selbst das Ergebnis?
  • Widerspruch in der Eingabe — melden oder auflösen, und wenn auflösen: nach welcher Regel?
  • Eingabe passt gar nicht zur Aufgabe — eigener Rückgabewert statt bester Versuch.

Beachte, was hier nicht hilft: temperature auf 0 senken. Das macht die Erfindung reproduzierbar, nicht wahr. Nachgelagerte Validierung fängt zwar ein ungültiges Datum, aber ein plausibles erfundenes Datum ist gültig — die Prüfung hat keinen Angriffspunkt. Die Lücke ist in der Spezifikation, und nur dort kann man sie schließen.

MerksatzEin Modell erfindet dort, wo du ihm keine Alternative gegeben hast. Der Ausgang für „nicht vorhanden“ ist kein Sonderfall der Spezifikation — er ist ihr am häufigsten fehlender Teil.

Prompting ist empirisch

Alle Hebel dieses Moduls sind Hypothesen. „Beispiele an die Ränder legen“ ist plausibel und meistens richtig; ob es bei euren Daten und eurer Taxonomie hilft, entscheidet die Messung. Zwei Engineers, die je eine Handvoll Chatverläufe als Belege vorlegen, können diesen Streit nicht entscheiden — beide haben aus fünf Fällen die ausgewählt, die ihre Position stützen.

Die Mindestausrüstung ist kleiner, als man denkt: eine feste Menge von Eingabe-Erwartung-Paaren, an derselben Menge gemessen, mit dem Ergebnis notiert. Zwanzig gut gewählte Fälle schlagen zweihundert zufällige. Wichtig ist nur, dass die Menge fix ist — wer sie mit dem Prompt zusammen anpasst, misst nichts mehr.

Auch die Anbieter-Doku setzt das voraus, bevor sie überhaupt Technik nennt: Kriterien für Erfolg und ein Weg, empirisch dagegen zu testen, kommen vor dem Prompt-Tuning. Wie so eine Menge zusammengestellt wird, welche Assertions tragen, wie man Rauschen von Signal trennt und was ein Gate taugt, ist Thema des Moduls Eval-Sets und Regressionstests.

MerksatzEine Prompt-Änderung ohne Vorher-Nachher-Messung an fixer Fallmenge ist eine Meinung mit Deployment. Das gilt auch dann — besonders dann —, wenn die Änderung eleganter aussieht.

Was diese Grundlagen nicht lösen

Die Hebel dieses Moduls machen einen Prompt spezifisch, strukturiert und prüfbar. Drei Dinge leisten sie ausdrücklich nicht — besser hier als im Betrieb gelernt.

Erwartung
Tatsächliche Grenze
Delimiter schützen vor Prompt Injection
Sie markieren die Grenze, sie erzwingen sie nicht. Ein Modell kann eine Anweisung aus dem Datenblock befolgen. Abwehr ist Systemdesign, nicht Formulierung — Modul Injection-Abwehr.
Eine Formatangabe garantiert das Format
Sie verschiebt Wahrscheinlichkeit. Garantien kommen aus Schema-Zwang und Validierung — Modul Strukturierte Ausgabe.
Mehr Kontext ist mehr Verständnis
Kontext ist knappe, ungleich wirksame Fläche mit Positionseffekten — Modul Kontext als Budget.
HaltungKeine dieser Grenzen ist ein Grund, die Grundlagen zu überspringen. Ein unspezifischer Prompt wird durch Schema-Zwang nicht richtig — er wird nur zuverlässig im falschen Format falsch.

Zusammenfassung — gleich im Check

Du kennst jetzt die acht Achsen eines belastbaren Prompts: Spezifizität statt Adjektive, Struktur mit markierter Grenze zwischen Instruktion und Daten, das Ausgabeformat als Vertrag, Beispiele an den Rändern statt in der Mitte, die nicht neutrale Reihenfolge dieser Beispiele, Kontext statt Rollen-Beschwörung, positive Instruktion statt wachsender Verbotsliste und einen benannten Ausgang für jeden Grenzfall — geprüft an einer fixen Fallmenge.

Gleich im CheckIn den nächsten Aufgaben entscheidest du diese Achsen an konkreten Fällen selbst — und siehst pro Option, warum sie trägt oder nicht. Achte darauf, welcher Hebel die Ursache trifft und welcher nur das Symptom abdeckt: Das ist der Unterschied, den die Checks messen.

Jetzt anwenden

Diesen Stoff gibt es als Modul mit bewerteten Entscheidungs-Checks — dieselbe Einführung, danach die Übungen.

Zum Modul →
Quellen & Aktualität12 Primärquellen · zuletzt geprüft:
  1. 01Anthropic — Prompt engineering overview
  2. 02Anthropic — Prompting best practices (be clear and direct, examples, XML tags, controlling output format)
  3. 03Brown et al., Language Models are Few-Shot Learners, 2020
  4. 04Min et al., Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?, EMNLP 2022
  5. 05Zhao et al., Calibrate Before Use: Improving Few-Shot Performance of Language Models, ICML 2021
  6. 06Sclar et al., Quantifying Language Models' Sensitivity to Spurious Features in Prompt Design, ICLR 2024
  7. 07Truong et al., Language models are not naysayers: an analysis of language models on negation benchmarks, StarSEM 2023
  8. 08Ouyang et al., Training language models to follow instructions with human feedback, 2022
  9. 09RFC 8259, The JavaScript Object Notation (JSON) Data Interchange Format
  10. 10OWASP Top 10 for LLM Applications 2025, LLM01: Prompt Injection
  11. 11Ji et al., Survey of Hallucination in Natural Language Generation, ACM Computing Surveys 2023
  12. 12Zheng et al., Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena, NeurIPS 2023