News
Richtlinien zur Optimierung von Prompts für die Codegenerierung mit großen Sprachmodellen
Das Wichtigste in Kürze
- Große Sprachmodelle (LLMs) sind entscheidend für die Codegenerierung, doch optimale Prompt-Strategien sind oft unklar.
- Eine Studie identifizierte zehn spezifische Richtlinien zur Prompt-Optimierung, die sich auf Aspekte wie I/O-Format, Vor-/Nachbedingungen und algorithmische Details konzentrieren.
- Die Richtlinien wurden durch einen iterativen, testgetriebenen Ansatz entwickelt und anschließend von 50 Softwareentwicklern validiert.
- Besonders nützlich werden Richtlinien empfunden, die sich auf I/O-Spezifikationen und Bedingungen beziehen, während sprachliche Verbesserungen seltener angewendet, aber als wertvoll erachtet werden.
- Diese Forschung liefert praktische Anleitungen für Entwickler, Lehrende und Tool-Entwickler zur Verbesserung der LLM-gestützten Codegenerierung.
Die rapide Entwicklung von Künstlicher Intelligenz hat Große Sprachmodelle (LLMs) zu einem unverzichtbaren Werkzeug in zahlreichen Anwendungsbereichen gemacht, wobei die Codegenerierung eine herausragende Rolle spielt. Während LLMs bereits beeindruckende Fähigkeiten in der Erstellung von Software demonstrieren, bleibt die Frage nach den effektivsten Strategien zur Optimierung von Prompts für diese spezifische Aufgabe oft unbeantwortet. Eine aktuelle empirische Studie hat sich dieser Herausforderung angenommen und zehn konkrete Richtlinien für die Prompt-Optimierung in der Codegenerierung erarbeitet und validiert. Diese Arbeit bietet wertvolle Einblicke für Praktiker und Entwickler, die die Leistungsfähigkeit von LLMs in ihren Entwicklungsprozessen maximieren möchten.
Die Herausforderung der Prompt-Optimierung in der Codegenerierung
Die Qualität des von LLMs generierten Codes hängt maßgeblich von der Präzision und Klarheit der bereitgestellten Prompts ab. Allgemeine Prompt-Engineering-Ansätze existieren zwar, doch spezifische Anleitungen für softwaretechnische Aufgaben, insbesondere die Codegenerierung, waren bisher Mangelware. Dies liegt daran, dass Prompts für die Softwareentwicklung sehr detaillierte, technologiespezifische oder lösungsorientierte Elemente erfordern können, die über generische Optimierungen hinausgehen. Ohne klare Richtlinien kann die Generierung von Code durch LLMs zu unzureichenden oder fehlerhaften Ergebnissen führen, was den Entwicklungsprozess verlangsamt und die Effizienz mindert.
Methodisches Vorgehen zur Richtlinienentwicklung
Die in der Studie angewandte Methodik zur Ableitung und Bewertung von Prompt-Optimierungsrichtlinien war mehrstufig und iterativ. Sie umfasste folgende Hauptphasen:
1. Codegenerierung durch LLMs
Für die Studie wurden vier moderne LLMs – GPT-4o mini, Llama 3.3 70B Instruct, Qwen2.5 72B Instruct und DeepSeek Coder V2 Instruct – verwendet, um Python-Code basierend auf Aufgaben aus drei Benchmarks (BigCodeBench, HumanEval+, MBPP+) zu generieren. Die Modelle wurden jeweils zehnmal mit einem ursprünglichen Prompt (Methodensignatur und Docstring) aufgefordert, Code zu erzeugen. Bei Aufgaben, bei denen die LLMs durchweg keinen testkonformen Code produzierten, wurde der nächste Schritt eingeleitet.
2. Code-Optimierungsprozess
Für die zuvor identifizierten, fehlgeschlagenen Fälle wurde ein iterativer Code-Optimierungsprozess gestartet. Die LLMs erhielten einen "Code-Optimierungs-Prompt", der die aktuelle Iterationsrunde, den ursprünglichen Prompt, den zuvor generierten, fehlerhaften Code und die Fehlermeldungen der Testfälle enthielt. Die LLMs wurden aufgefordert, einen neuen Code-Snippet zu liefern. Dieser Prozess wurde maximal fünf Runden lang fortgesetzt. Wenn ein LLM innerhalb dieser Runden testkonformen Code erzeugte, wurden der ursprüngliche Prompt, alle Fehlermeldungen und der erfolgreiche Code gespeichert.
3. Prompt-Optimierung und Validierung
Anschließend wurden die LLMs angewiesen, aus den gesammelten Informationen einen neuen, optimierten Null-Schuss-Prompt zu erstellen. Dieser "Prompt-Optimierungs-Prompt" umfasste den ursprünglichen Prompt, eine Liste der gesammelten Fehler (als Paare von Code und Fehlern) und den schließlich erfolgreichen Code. Der neu generierte optimierte Prompt wurde dann zehnmal den LLMs als Eingabe vorgelegt, um seine Wirksamkeit zu überprüfen. Wenn der daraus resultierende Code mindestens einmal die Tests bestand, galt der Prompt als erfolgreich optimiert und wurde mit dem ursprünglichen Prompt gepaart.
4. Identifizierung der Richtlinien
Die Paare aus ursprünglichen und optimierten Prompts wurden manuell von zwei Autorenteams analysiert. Sie identifizierten textuelle Unterschiede und die Elemente, die hinzugefügt oder präzisiert wurden, um die Codegenerierung erfolgreich zu machen. Dabei wurden Modifikationen ausgeschlossen, die implementierte Code-Snippets enthielten oder Anforderungen, die nur durch das Lesen der Tests bekannt sein konnten. Nach der Konfliktlösung und Konsolidierung entstand ein Katalog von zehn Prompt-Optimierungsrichtlinien.
5. Bewertung der Richtlinien
Zur Validierung der Richtlinien wurde eine Umfrage unter 50 Softwareentwicklern durchgeführt. Die Teilnehmer wurden befragt, inwieweit sie die identifizierten Optimierungsstrategien bereits in ihrer Praxis anwenden und wie nützlich sie diese empfinden. Auch wurden sie gebeten, weitere nicht berücksichtigte Strategien zu nennen.
Die 10 Richtlinien für effektive Codegenerierungs-Prompts
Die Studie identifizierte zehn spezifische Richtlinien, die wesentlich zur Verbesserung der Qualität von LLM-generiertem Code beitragen:
1. Anforderungen explizit machen
Formulieren Sie alle benötigten Pakete und Bibliotheken klar und erläutern Sie deren Verwendungszweck. Beispiel: "Verwenden Sie collections.defaultdict, um Buchstabenhäufigkeiten zu zählen" anstatt nur "Anforderungen: collections.defaultdict". Diese Richtlinie wurde in 19% der optimierten Prompts angewendet.
2. Vorbedingungen spezifizieren
Definieren Sie Bedingungen, die vor der Codeausführung erfüllt sein müssen, z. B. "Die Eingabeliste darf nicht leer sein" oder "Die Matrix muss quadratisch sein". Dies hilft, ungültige Annahmen zu vermeiden und eine robuste Fehlerbehandlung sicherzustellen. Anwendung in 7% der optimierten Prompts.
3. Nachbedingungen festlegen
Geben Sie Bedingungen an, die nach der Codeausführung gelten sollen, z. B. "Die Funktion gibt eine aufsteigend sortierte Liste zurück" oder "Das Ergebnis muss im Bereich [0, 1] liegen". Dies unterstützt das Modell bei der Überprüfung der Ausgabelogik. Anwendung in 23% der optimierten Prompts.
4. I/O-Format klären
Spezifizieren Sie Datentypen, Formen und Strukturen von Ein- und Ausgaben, einschließlich Sonderfällen. Dies ist entscheidend bei komplexen I/O-Strukturen und die zweithäufigst angewendete Richtlinie (44%).
5. Ausnahmen und Fehlerbehandlung definieren
Beschreiben Sie explizit, welche Ausnahmen unter welchen Bedingungen ausgelöst oder welche Fehlermeldungen wo ausgegeben werden sollen. Vermeiden Sie vage Formulierungen. Anwendung in 12% der optimierten Prompts.
6. Algorithmusdetails bereitstellen
Geben Sie wesentliche algorithmische Details für komplexe Logik an, einschließlich unterstützender Definitionen, Formeln oder theoretischer Hinweise. Dies ist die am häufigsten angewendete Richtlinie (57%), um sicherzustellen, dass der Code der beabsichtigten Methode folgt.
7. Konsistente Variablennennung
Verwenden Sie eine konsistente Terminologie für Variablen, vermeiden Sie generische oder austauschbare Begriffe. Dies minimiert Verwirrung und gewährleistet Kohärenz. Obwohl nur in 3% der Fälle angewendet, zeigten einfache sprachliche Anpassungen hier große Wirkung.
8. Klarheit bei Bedingungen
Vermeiden Sie mehrdeutige Formulierungen wie "andernfalls" bei der Beschreibung von bedingter Logik. Beschreiben Sie stattdessen beide Bedingungen explizit. Diese Optimierung wurde in 1% der Fälle festgestellt.
9. Mehr Beispiele hinzufügen
Liefern Sie konkrete Beispiele oder DocTests, die das erwartete Verhalten demonstrieren. Beispiele verdeutlichen die Funktionalität und dienen als informeller Test. Anwendung in 24% der optimierten Prompts.
10. Durchsetzungsstarke Sprache verwenden
Nutzen Sie präzise, durchsetzungsstarke Sprache für Anforderungen und Einschränkungen (z. B. "muss" statt "sollte"). Dies reduziert die Unsicherheit und erhöht die Wahrscheinlichkeit, dass der generierte Code die Spezifikation strikt einhält. Anwendung in 9% der optimierten Prompts.
Wahrnehmung und Nutzung in der Praxis
Die Umfrage unter 50 Softwareentwicklern ergab ein differenziertes Bild der Nutzung und wahrgenommenen Nützlichkeit der Richtlinien. Die Teilnehmer gaben an, Prompt-Verbesserungen in 25% bis über 75% ihrer Prompts vorzunehmen.
Die am häufigsten angewendeten Muster waren die Spezifikation des I/O-Formats sowie der Vor- und Nachbedingungen. Dies deutet darauf hin, dass Entwickler die Bedeutung klarer Schnittstellen und Zustände für die Codegenerierung erkennen. Weniger häufig wurden Muster zur sprachlichen Verbesserung oder zur Spezifikation von Ausnahmen verwendet, was möglicherweise auf die Annahme zurückzuführen ist, dass das LLM diese Aspekte selbstständig handhaben sollte oder dass die Fehlerbehandlung erst in späteren Phasen Priorität hat.
Interessanterweise zeigte sich eine Diskrepanz zwischen der tatsächlichen Nutzung und der wahrgenommenen Nützlichkeit bei einigen Richtlinien. Obwohl das Hinzufügen weiterer Beispiele seltener praktiziert wurde, stuften die Befragten es als sehr nützlich ein. Dies könnte auf ein mangelndes Bewusstsein für den vollen Nutzen oder eine fehlende Gewohnheit hindeuten. Ähnliches galt für die Spezifikation von Abhängigkeitsanforderungen und die Klärung von Mehrdeutigkeiten, die ebenfalls als nützlicher empfunden wurden, als sie tatsächlich angewendet wurden.
Zusätzlich zu den identifizierten Richtlinien nannten die Praktiker weitere Strategien zur Prompt-Verbesserung, darunter:
- Mehr Kontextinformationen (z. B. Signaturen anderer Methoden/Funktionen im System).
- Kodierungsstandards.
- Anforderungen an die Testbarkeit.
- Nicht-funktionale Aspekte zur Optimierung.
Implikationen für die Zukunft
Diese Forschung hat weitreichende Implikationen für verschiedene Stakeholder:
- Softwareentwickler: Die Richtlinien dienen als wertvoller Referenzpunkt, um die Interaktion mit LLMs bei der Codegenerierung zu verbessern. Durch gezielte Anwendung können Entwickler die Effizienz und Qualität des generierten Codes steigern.
- Lehrende und Ausbilder: Prompt Engineering wird zunehmend Teil von Lehrplänen. Die erarbeiteten Richtlinien können als Kernkomponente in der Ausbildung von Softwareingenieuren eingesetzt werden, um fundiertes Wissen über codespezifisches Prompt Engineering zu vermitteln.
- Tool-Entwickler und Forscher: Die Ergebnisse legen den Grundstein für die Entwicklung besserer Tools. Zukünftige Systeme könnten Prompts und deren Kontext automatisch analysieren, Entwicklern Vorschläge unterbreiten und Prompts automatisch verbessern, wenn fehlende oder unklare Elemente erkannt werden.
Die Studie unterstreicht die Notwendigkeit, über generische Prompt-Engineering-Ansätze hinauszugehen und domänenspezifische Richtlinien für die Codegenerierung zu entwickeln. Durch einen systematischen und empirisch fundierten Ansatz konnten zehn wertvolle Richtlinien identifiziert werden, die sowohl Praktikern als auch Forschern als Grundlage für die Weiterentwicklung der LLM-gestützten Softwareentwicklung dienen können.
Schlussfolgerung
Die systematische Erforschung und Validierung von Prompt-Optimierungsrichtlinien für die Codegenerierung durch Große Sprachmodelle stellt einen bedeutenden Fortschritt dar. Die zehn identifizierten Richtlinien bieten eine konkrete Handlungsanleitung, um die Effektivität und Zuverlässigkeit von LLM-generiertem Code zu erhöhen. Die Diskrepanz zwischen der wahrgenommenen Nützlichkeit und der tatsächlichen Anwendung einiger Richtlinien deutet auf ein Potenzial zur weiteren Sensibilisierung und Integration dieser Praktiken in den Entwicklungsalltag hin. Die kontinuierliche Weiterentwicklung und Anpassung dieser Richtlinien, auch unter Berücksichtigung weiterer Programmiersprachen und Aufgaben, wird entscheidend sein, um das volle Potenzial von LLMs in der Softwareentwicklung auszuschöpfen.
Bibliographie
Alessandro Midolo, Alessandro Giagnorio, Fiorella Zampetti, Rosalia Tufano, Gabriele Bavota, Massimiliano Di Penta. Guidelines to Prompt Large Language Models for Code Generation: An Empirical Characterization. arXiv:2601.13118v1 [cs.SE], 2026. The Moonlight. [Literature Review] Guidelines to Prompt Large Language Models for Code Generation: An Empirical Characterization. Rohail T. Guidelines Advance Large Language Models for Superior Code Generation. Quantum Zeitgeist, 2026. Prompt Engineering Guide. Papers. https://www.promptingguide.ai/papers.KI, die in Deutschland zu Hause ist.
Testen Sie Mindverse Studio oder sprechen Sie mit unserem Team über Ihren Anwendungsfall.