Prompt-Engineering-Muster für die Softwareentwicklung
Nicht alle Prompts liefern guten Code. Diese erprobten Muster helfen dir, jedes Mal bessere Ergebnisse von KI-Assistenten zu bekommen, wenn du einen Chat öffnest.
Prompt-Engineering ist zu einer der wertvollsten Fähigkeiten in der modernen Softwareentwicklung geworden. Der Unterschied zwischen einem Prompt, der funktionierenden, wartbaren Code produziert, und einem, der ein kaputtes Durcheinander erzeugt, ist oft subtil – ein paar Worte Kontext, eine früh genannte Einschränkung oder ein Beispiel, das das Problem richtig einrahmt. Dieser Artikel sammelt die Muster, die konsistent gute Ergebnisse liefern, geordnet nach der Art der Aufgabe, die du löst.
Diese Muster sind nicht theoretisch. Sie wurden aus Tausenden von echten Interaktionen mit KI-Coding-Assistenten in Produktionscodebasen destilliert. Jedes Muster enthält ein konkretes Beispiel und eine Erklärung, warum es funktioniert, damit du es an deine eigenen Werkzeuge und Arbeitsabläufe anpassen kannst.
Muster 1: Das Kontext-Sandwich
Der häufigste Fehler, den Entwickler beim Prompten von KI machen, ist, zu wenig Kontext zu liefern. Sie fragen nach einer Funktion, ohne das umgebende System, die Einschränkungen oder die erwarteten Konventionen zu beschreiben. Die KI trifft dann vernünftige Annahmen, die für ihre spezifische Codebasis falsch sind, und das Ergebnis muss stark nachbearbeitet werden.
Das Kontext-Sandwich behebt dies, indem es jeden Prompt in drei Schichten strukturiert: was du baust, welche Einschränkungen gelten und wie Erfolg aussieht.
- Obere Schicht – Das Ziel: Beschreibe in einem klaren Satz, was du willst. Das ist der einzige Teil, den die meisten Entwickler angeben.
- Mittlere Schicht – Die Einschränkungen: Liste die nicht verhandelbaren Dinge auf. Bibliotheksversionen, Stilkonventionen, Leistungsanforderungen, Grenzfälle, die behandelt werden müssen.
- Untere Schicht – Die Verifikation: Beschreibe, wie du erkennen wirst, dass das Ergebnis korrekt ist. Ein Testfall, ein erwartetes Ausgabeformat oder ein bestimmtes Verhalten, das bestätigt werden soll.
// Schwacher Prompt
const result = await ai.generate("Write a function that sorts an array of users by name");
// Kontext-Sandwich-Prompt
const result = await ai.generate([
"Create a compare function for sorting an array of user objects by lastName, then firstName.",
"Constraints: case-insensitive, handles missing names, TypeScript, no external libraries.",
"Verify: users.sort(compare).map(u => u.lastName) should return ['Adams', 'adams', 'Brown'].",
].join("\n\n"));Das Kontext-Sandwich funktioniert, weil es Mehrdeutigkeit auf jeder Ebene reduziert. Die KI weiß, was du willst, was du nicht akzeptieren wirst und wie du das Ergebnis bewerten wirst. Dieses eine Muster eliminiert den Großteil des Hin und Her, das bei der KI-gestützten Entwicklung Zeit verschwendet.
Muster 2: Die negative Einschränkung
KI-Modelle sind im Allgemeinen gut darin zu verstehen, was du willst. Schwieriger haben sie sich mit dem, was du nicht willst. Ein Prompt wie schreibe ein Anmeldeformular wird etwas Vernünftiges produzieren, aber es könnte Passwort-Komplexitätsregeln enthalten, die dein Design nicht verwendet, oder eine Erinner-mich-Checkbox, die dein Produktmanager im letzten Sprint entfernt hat.
Das Muster der negativen Einschränkung gibt explizit an, was die KI vermeiden soll. Es ist effektiver, als zu hoffen, dass das Modell deine Ausschlüsse richtig errät.
// Ohne negative Einschränkungen
"Build a user settings page with tabs for profile, security, and notifications."
// Mit negativen Einschränkungen
"Build a user settings page with tabs for profile, security, and notifications.
DO NOT include: email verification flows, password strength meters, or social login buttons."Negative Einschränkungen funktionieren am besten, wenn sie am Ende des Prompts platziert werden, nach der positiven Beschreibung. Dies spiegelt wider, wie Menschen Anweisungen verarbeiten – wir müssen verstehen, worum gebeten wird, bevor wir verstehen können, was ausgeschlossen ist. Die KI folgt dem gleichen Muster: Sie baut das mentale Modell aus der positiven Beschreibung auf und wendet dann die Ausschlüsse als Filter oben drauf an.
Muster 3: Die Beispiel-Vorlage
Wenn du konsistente Ausgaben über mehrere KI-Interaktionen hinweg benötigst – Dokumentation generieren, Testfälle schreiben oder API-Antworten formatieren – ist es weniger effektiv, der KI zu sagen, was sie tun soll, als es ihr zu zeigen. Das Muster der Beispiel-Vorlage liefert ein oder zwei vollständige Beispiele der gewünschten Ausgabe und bittet dann um mehr im gleichen Format.
Das ist das, was über Chat-Oberflächen dem Few-Shot-Learning am nächsten kommt. Ein gut gewähltes Beispiel vermittelt Format, Ton, Detailtiefe und implizite Konventionen, die in Worten Absätze erfordern würden.
// Beispiel-Vorlage zum Generieren von Fehlermeldungen
const example = {
code: "ERR_AUTH_TOKEN_EXPIRED",
message: "Your session has expired. Please log in again.",
severity: "warning",
action: "redirect:/login",
};
const result = await ai.generate([
"Generate 5 more error objects in the same format as this example:",
JSON.stringify(example, null, 2),
"Cover: rate limiting, permission denied, not found, validation error, server error.",
].join("\n\n"));Der Schlüssel zu diesem Muster ist die Wahl des richtigen Beispiels. Es sollte repräsentativ sein, aber nicht zu sehr auf Grenzfälle fokussiert – du willst, dass die KI von deinem Beispiel verallgemeinert, nicht seine Eigenheiten kopiert. Zwei Beispiele sind besser als eines, wenn das Ausgabeformat mehrere Variationen hat, aber mehr als drei Beispiele bringen selten Mehrwert und beginnen, dein Kontextfenster zu verbrauchen.
Muster 4: Die iterative Verfeinerungsschleife
Eine KI in einem einzigen Prompt um ein endgültiges, perfektes Ergebnis zu bitten, ist wie einen Junior-Entwickler zu bitten, Produktionscode ohne jede Iteration auszuliefern. Es funktioniert manchmal, aber meist produziert es etwas, das erheblich nachbearbeitet werden muss. Die iterative Verfeinerungsschleife behandelt die KI-Interaktion als Gespräch, beginnt breit und wird enger.
- Runde 1 – Erzeuge eine breite Lösung oder ein Gerüst. Frage noch nicht nach Details.
- Runde 2 – Überprüfe die Ausgabe und gib gezielte Richtung vor. Dieser Teil ist gut, ändere jenen Teil, füge diesen Fall hinzu.
- Runde 3 – Feinschliff. Fehlerbehandlung, Grenzfälle, Benennung, Dokumentation.
Jede Runde gibt der KI mehr Kontext darüber, was du eigentlich willst, weil dein Feedback sich auf den Code bezieht, den sie gerade produziert hat. Das ist weitaus effizienter, als zu versuchen, jedes Detail im ersten Prompt vorherzusehen. Die KI profitiert auch, weil sie sich jeweils auf eine Ebene des Problems konzentrieren kann – zuerst die Struktur, dann die Details, dann den Feinschliff.
Muster 5: Das Rollen-Präfix
KI-Modelle sind auf Text aus vielen Bereichen trainiert und können verschiedene Rollen annehmen, wenn man sie dazu auffordert. Das Muster des Rollen-Präfix weist der KI explizit eine Rolle und Perspektive zu, bevor du nach Code fragst, und versetzt sie so in die Lage, für diesen Kontext passende Ergebnisse zu liefern.
// Allgemein
"Review this function for security issues."
// Mit Rollen-Präfix
"You are a security engineer reviewing a pull request. Focus on:
- Injection vulnerabilities in the SQL query construction
- Missing input validation on the user ID parameter
- Hardcoded credentials or secrets
Review this function:"Das Rollen-Präfix ist besonders wirkungsvoll für Review-Aufgaben, Refactoring und die Generierung von Dokumentation. Wenn du Code benötigst, der Barrierefreiheitsstandards einhält, beginne mit Du bist ein Experte für Barrierefreiheit. Wenn du für Leistung optimierst, beginne mit Du bist ein Performance-Ingenieur. Die KI passt ihre Argumentation und Ausgabe an die Perspektive an, die du anforderst.
Muster 6: Der Ausgabe-Vertrag
Eine der frustrierendsten Erfahrungen mit KI-Coding ist eine Antwort, die richtig aussieht, aber subtil das Ausgabeformat ändert, erklärenden Text hinzufügt, den du nicht verlangt hast, oder kritische Teile auslässt. Das Muster des Ausgabe-Vertrags verhindert dies, indem es genau festlegt, was die Antwort enthalten soll und – genauso wichtig – was sie nicht enthalten soll.
"Generate a React component for a file upload button.
Output contract:
- Return ONLY the component code in a single code block
- No explanation text before or after
- Include TypeScript props interface
- Include CSS module import
- Do NOT include usage examples or test files
- File name: FileUpload.tsx"Der Ausgabe-Vertrag ist besonders wertvoll, wenn du die KI-Ausgabe in ein anderes Tool oder einen anderen Arbeitsablauf einleitest. Wenn die Antwort immer der gleichen Struktur folgt, kannst du sie zuverlässig parsen. Dieses Muster ist die Grundlage für den Aufbau automatisierter KI-gestützter Pipelines, die eine konsistente Formatierung erfordern.
Muster 7: Das Kontextfenster-Budget
Jedes KI-Modell hat ein begrenztes Kontextfenster. Wenn du zu viel Code, Dokumentation oder Gesprächsverlauf einfügst, beginnt das Modell zu vergessen oder zu halluzinieren. Das Muster des Kontextfenster-Budgets behandelt das Kontextfenster als knappe Ressource und teilt es gezielt ein.
- Verteile 60 % deines Budgets auf den relevantesten Code und die Aufgabenbeschreibung.
- Verteile 20 % auf Beispiele und Einschränkungen, die die Aufgabe klären.
- Halte 20 % für den Antwortraum der KI frei – wenn das Fenster voll ist, wird die Ausgabe abgeschnitten.
Wenn du mehr Kontext hast, als ins Fenster passt, priorisiere die spezifischsten und relevantesten Teile. Ein fokussierter Prompt mit einer sorgfältig ausgewählten Datei ist effektiver als ein breiter Prompt mit fünf lose verwandten Dateien. Die KI kann jederzeit um mehr Kontext bitten, wenn sie ihn braucht – gib ihr früh im Gespräch die Erlaubnis dazu.
Ein fokussierter Prompt mit einer sorgfältig ausgewählten Datei schlägt konstant einen verstreuten Prompt mit fünf Dateien, die die KI kaum sehen kann.
Muster 8: Die Gerüst-dann-Detail-Sequenz
Komplexe Funktionen haben viele bewegliche Teile. Eine KI zu bitten, sie alle auf einmal zu generieren, produziert ein verworrenes Ergebnis, bei dem State-Management, API-Aufrufe und UI-Rendering schwer zu trennen sind. Die Gerüst-dann-Detail-Sequenz zerlegt das Problem in zwei Phasen.
Bitte die KI zunächst, ein Gerüst zu erstellen: die Typdefinitionen, Schnittstellen und die hochrangige Struktur der Funktion ohne Implementierungsdetails. Überprüfe dieses Gerüst und bestätige, dass es deinem mentalen Modell entspricht. Erst dann bitte die KI, die Details auszufüllen – Implementierung, Fehlerbehandlung, Grenzfälle – eine Ebene nach der anderen.
// Phase 1 — Gerüst
"Design the type structure for a multi-step checkout flow. List the interfaces, enums, and state machine transitions. Do not write implementation yet."
// Phase 2 — Detail (nach Überprüfung des Gerüsts)
"Implement the checkout state machine from the types we agreed on. Include transition validation and error states."Dieses Muster verhindert die teuerste Art von Nacharbeit: die Struktur zu ändern, nachdem die Implementierung abgeschlossen ist. Indem du dich zuerst auf das Gerüst einigst, stellst du sicher, dass die KI auf einem Fundament aufbaut, das zu deiner Architektur passt, nicht zu einer erdachten.
Die Muster kombinieren
Diese acht Muster funktionieren am besten in Kombination. Eine typische Sitzung könnte mit dem Kontext-Sandwich beginnen, um die Anfrage zu rahmen, negative Einschränkungen verwenden, um unerwünschte Ansätze auszuschließen, der iterativen Verfeinerungsschleife folgen, um zur richtigen Lösung zu gelangen, und mit einem Ausgabe-Vertrag enden, um ein sauberes, parsierbares Ergebnis zu erhalten.
Je mehr du diese Muster übst, desto natürlicher werden sie. Innerhalb weniger Tage wirst du dich dabei ertappen, Prompts instinktiv als Kontext-Sandwiches zu strukturieren und negative Einschränkungen hinzuzufügen, ohne darüber nachzudenken. Das ist der Punkt, an dem KI-gestützte Entwicklung von einem manchmal nützlichen Werkzeug zu einem konsequent zuverlässigen Teil deines Arbeitsablaufs wird.
Jede Interaktion mit einem KI-Assistenten ist eine Investition. Ein gut strukturierter Prompt braucht dreißig zusätzliche Sekunden zum Schreiben, spart aber Stunden an Hin und Her. Über hundert Interaktionen hinweg summieren sich diese dreißig Sekunden zu Tagen gesparter Zeit – und machen den Unterschied zwischen Frustration und Flow.
