Host Europe Blog

ChatGPT für Entwickler – Teil 3: ChatGPT Prompts und Beispiele

Titelmotiv des Blogartikels zum Thema: ChatGPT für Entwickler – Teil 3: ChatGPT Prompts und Beispiele

Heutzutage kann jeder einfach eine mehr oder minder gezielte Frage an ChatGPT stellen und bekommt in den meisten Fällen auch eine sinnvolle Antwort. Selbst, wenn Sie nur ein einziges Wort eingeben, bekommen Sie eine Antwort. Denn ChatGPT ist so konzipiert, dass der Nutzer immer eine Antwort erhält. Oft ist dies ein Einstieg in einen interessanten Dialog. Doch wenn Sie mehr aus ChatGPT herausholen möchten, kommen Sie nicht darum herum, ein wenig mehr Mühe und Gehirnschmalz in Ihre Prompts zu stecken.

In diesem dritten und letzten Artikel unserer Serie zum Einsatz von ChatGPT für Entwickler (zum Teil 1 der Serie: Mythen und Missverständnissezum Teil 2 der Serie: Best Practices und Richtlinien) geht es um die Prompts und Beispiele für den praktischen Gebrauch in der Entwicklung. Und niemand muss ein hochspezialisierter Prompt Engineer sein, um überwiegend gute Ergebnisse auf die eigenen Anfragen an ChatGPT zu erhalten. Nach einigen grundlegenden Tipps zum Aufbau von Prompts gehen wir direkt in die Praxis und schauen, wie Entwickler, Product Owner oder Softwaretester ChatGPT sinnvoll in der täglichen Arbeit einsetzen können.

Grundlegende Tipps

Der wichtigste Tipp zuerst: Bei jedem Prompt zählt die Qualität. Ein guter Prompt ist wie der Schlüssel zu einer Tür, denn er öffnet das Potenzial von ChatGPT. Klarheit, Präzision und ausreichender Kontext in Ihrem Prompt führen zu besseren und präziseren Antworten.

Ein Beispiel: Stellen wir uns vor, jemand schickt den folgenden Prompt an ChatGPT:

Wie kann ich mit PHP einen Chat programmieren?

Die Antwort wird zwar irgendwie die Frage beantworten und gibt sicher auch genug Gelegenheiten, um hier oder da anzuknüpfen oder Detailfragen zu klären. Wahrscheinlich wird bei intensiver Nachfrage am Ende sogar ein irgendwie lauffähiges Programm herauskommen. Einen Schönheitspreis gewinnen Sie damit aber nicht. Wahrscheinlich strotzt der generierte Code vor Sicherheitslücken und nutzt veraltete Programmierpraxis. Bei diesem Prompt fehlt Klarheit, Präzision und Kontext.

Viel unkonkreter kann ein Prompt kaum sein.

Wie wäre es also hiermit:

Wie kann ich in PHP 8.3 einen Chat mit dem Laravel Framework programmieren? Der Fokus soll hierbei vor allem auf Sicherheit und Performance liegen. Wir möchten den Chat mit MariaDB oder einer für Chats optimierten Datenbank implementieren. Wichtig ist, dass die Anwendung sauber zwischen Frontend und Backend getrennt ist. Im Frontend soll ein leistungsstarkes JavaScript Framework eingesetzt werden, während PHP und Laravel lediglich Antworten im JSON Format zurückgeben und empfangen können. Gebe einen Überblick über die Architektur und die Implementierung und lass uns den Chat gemeinsam Schritt für Schritt verbessern. Solltest du weitere Fragen zu den technischen Vorgaben und dem Funktionsumfang haben, und sollten sich die Antworten auf die Architektur und die Implementierung auswirken, stelle diese zuerst.

Der Prompt ist sicher noch nicht optimal und lässt sich bestimmt noch viel mehr verfeinern und ausbauen. Die Antwort wird aber deutlich hilfreicher sein und die folgende Interaktion mit ChatGPT wird ein viel besseres Ergebnis bringen, als der erste sehr platte Versuch. Natürlich wird auch hier die erste Antwort nicht perfekt sein. Aber die Basis für eine Chat Software ist hier viel solider als vorher.

Eine erprobte Vorgehensweise zum Schreiben eines Prompts ist die folgende:

​​Ergänzend dazu kann es hilfreich sein, wenn der Prompt einer gewissen Struktur auf Situation, Kontext und Frage oder Aufgabe folgt. In diesem gekürzten Beispiel wird zuerst die Situation beschrieben, dann der Kontext hinzugefügt, und zum Schluss folgt eine ganz konkrete Frage.

Unser Webentwicklungsteam bemerkt eine sinkende Code-Qualität in unserem PHP-Projekt.

Wir nutzen PHP 7.4 und möchten auf PHP 8.3 umsteigen. Unsere Anwendung hat verschiedene Legacy-Komponenten und nutzt das Symfony-Framework in Version 4.4.

Wie können wir die Code-Qualität bei der Migration verbessern und welche Best Practices gibt es für PHP 8.3 in Bezug auf Symfony 7.1? Was sollten wir ggf. für das bald erscheinende PHP 8.4 schon jetzt beachten?

Die erste Antwort wird einige interessante Informationen und Tipps enthalten, die dann mit weiteren gezielten Fragen verfeinert werden können. Sollten Sie merken, dass Sie nach den ersten Interaktionen wichtige Detailinformationen vergessen haben, ist das kein Problem. Diese können auch nachgereicht werden mit der Bitte, die Situation auf der Basis der neuen Informationen nochmals zu bewerten.

Je konkreter und spezifischer der Prompt, desto besser die Antwort.

ChatGPT für Entwickler

In der Regel implementiert ein Entwickler neue Features, behebt Fehler oder optimiert den Code für eine bessere Leistung und Sicherheit. Auch bauen Entwickler neue Projekte auf und müssen sich regelmäßig in neue Technologien einarbeiten. Gerade für Entwickler ist das Thema »Lebenslanges Lernen« ein stetiger Begleiter.

In den Anfangsjahren der professionellen Webentwicklung waren gedruckte Bücher noch eine gute Quelle, um sich z. B. in eine neue Programmiersprache einzuarbeiten. Später kamen Tutorials im Web dazu. Heutzutage sind vor allem Videoschulungen oder die Suche im Internet eine wichtige Quelle beim Lernen oder konkreten Lösen von Problemen. Auch das bekannte »Stack Overflow Driven Development« war in den vergangenen Jahren sehr beliebt. Dabei sucht der Entwickler bei Stack Overflow nach einer Lösung für sein Problem und kopiert den Code des ersten Treffers in seine Anwendung. Anschließendes »Stack Overflow Driven Debugging« inklusive.

Seit dem Aufkommen von ChatGPT besteht natürlich die große Gefahr, dass Anfänger und bequeme Entwickler mit »ChatGPT Driven Development« auf den nächsten Zug aufspringen. Wer bisher ahnungslos Codeschnipsel aus Stack Overflow übernommen hat, wird dies sicher auch mit ChatGPT praktizieren. Dies wird dauerhaft jedoch nicht zu einer erfolgreichen und fehlerfreien Software führen. Denn bei dem Mythos 3, »der perfekte Programmierer«, im ersten Artikel dieser Serie und bei dem ersten Best Practice Tipp »Vertraue den Ergebnissen von ChatGPT nicht blind!« im zweiten Artikel haben wir gelernt, dass wir den Antworten von ChatGPT nicht trauen dürfen und diese oft nicht zum Ziel führen, wenn wir uns nicht einmischen.

Dennoch eignet sich ChatGPT für viele Fragen und Aufgaben bei der täglichen Arbeit eines Entwicklers. Hier ein paar beispielhafte Prompts, mit denen Entwickler sich Unterstützung bei konkreten Problemen holen können. Diese sind bewusst kurz gehalten und sollten in der Regel, wie oben erwähnt, möglichst viel Kontext und viele Details enthalten. Sie wurden hier stark gekürzt, um die unterschiedlichen Problemstellungen zu zeigen.

Wir haben hier also Fragen zu einer konkreten Implementierung, zum Debugging, zum Refactoring und zum Erlernen neuer Konzepte. Wenn wir einmal den ersten Prompt etwas besser aufbauen und Situation, Kontext und Frage konkretisieren, könnte dieser so aussehen:

Als Entwickler bekomme ich eine Elasticsearch Suche mit zwei Parametern, die mit AND verknüpft werden, nicht gelöst.

In einem PHP Projekt arbeiten wir noch mit dem veralteten Elasticsearch 5.6.16. Wir möchten folgende Suche erstellen: Suche alle Bewerbungen mit dem Status „Approved“, die eine der IDs 1001, 1003, 1005 oder 1007 haben. Die Parameter sollen per AND verknüpft werden.

Wie baue ich so eine Suche mit Elasticsearch 5.6.16 auf?

Diese Frage und vor allem die Antwort hat uns vor einigen Monaten in einem Legacy-Projekt viel Zeit gespart, da wir in der offiziellen Dokumentation und bei einer Suche in Google kaum verwertbare Informationen erhalten haben. Übrigens hat hier ausnahmsweise sogar die erste Antwort zu 100 Prozent gepasst.

​​Praxisbeispiel Codegenerierung mit ChatGPT

ChatGPT kann auch zum Generieren von Code verwendet werden. Damit lassen sich Schritt für Schritt einzelne Bestandteile einer Anwendung erstellen. Ein Beispiel-Prompt wäre folgender:

Erstelle in PHP 8.3 eine Entität für einen Benutzer. Verwende dabei sinnvolle Wertobjekte. Vermeide das anämische Domänenmodell!

Dieser Prompt ist zwar recht kurz, enthält aber schon sehr konkrete Angaben. Es geht um die Erstellung einer Entität für Benutzer in PHP 8.3. Es sollen zudem Wertobjekte verwendet werden, was darauf schließen lässt, dass der Entwickler Kenntnisse im Domain-Driven Design hat. Auch der Hinweis zum anämischen Domänenmodell, lässt darauf schließen, dass der Fragesteller kein blutiger Anfänger ist. Der Prompt könnte noch durch detailliertere Angaben zu den Eigenschaften und Methoden der zu generierenden Klasse erweitert werden. Aber für das Beispiel ist dies ausreichend.

Die Code-Generierung ist teilweise nicht schlecht, dennoch sollte das Ergebnis überarbeitet werden.

Jetzt betrachten wir einmal die Antworten in ausgewählten ChatGPT-Modellen:

Allen Modellen gemein ist die Tatsache, dass das erste Ergebnis niemals ausreichend ist. Es muss immer nachgebessert werden. Dies zeigt auch, dass der Einsatz von ChatGPT in der Codegenerierung immer von einem erfahrenen Entwickler begleitet werden sollte. Nur dieser kann die Ergebnisse auch kritisch begutachten und durch seine Erfahrung ein besseres Ergebnis erzielen.

Der Traum, dass wegen ChatGPT und anderen KIs in Zukunft keine Entwickler mehr gebraucht werden, wird sich wohl bis auf Weiteres nicht erfüllen. Dennoch sollte ChatGPT als weiteres Tool in keinem Entwicklerwerkzeugkasten fehlen.

ChatGPT für Product Owner

Auch ein Product Owner kann ChatGPT in der täglichen Arbeit beim Erstellen von Tickets, EPICs oder User Stories unterstützen und helfen, die vielfältigen Anforderungen zu bündeln und zu priorisieren.

Dabei kann der Product Owner ganz unterschiedliche Fragen oder Aufgaben an ChatGPT stellen. Diese Prompts sind ebenfalls stark gekürzt, um die unterschiedlichen Einsatzzwecke zu zeigen. Selbstverständlich sollten die Prompts mit so vielen Details und so viel Kontext wie möglich ausgestattet werden.

Beispielhaft erweitern wir mal ein wenig die Aufgabe zur Erstellung von EPICs, fügen Situation und Kontext hinzu, und konkretisieren die Frage:

Als Product Owner soll ich eine moderne Kundenverwaltung verantworten, die unser veraltetes System ersetzen soll.

Die wachsenden Unternehmensanforderungen fordern eine zukunftssichere Lösung. Die Stakeholder erwarten zügig einen MVP, der die Grundfunktionen für das Anlegen und Bearbeiten von Kundendaten abdeckt.

Erstelle mir alle zentralen EPICs für den MVP für diese Kundenverwaltung! Stelle sicher, dass die EPICs aufeinander aufbauen, sodass sie sequentiell abgearbeitet werden können!

Auch bei der Arbeit an Dokumenten, EPICs oder User Stories kann das neue Modell »ChatGPT-4o with canvas« sehr hilfreich sein. Aber auch die anderen Modelle eignen sich dafür.

Kleiner Zusatztipp: Teilen Sie ChatGPT mit, dass Sie die Texte gerne als Code zum Kopieren im GitLab Flavored Markdown (GLFM) haben möchten. Dann können Sie die Texte in GitLab kopieren, und sie sind direkt formatiert.

ChatGPT für Softwaretester

Spannend ist auch der Einsatz von ChatGPT für Softwaretester. Diese können ChatGPT nutzen, um für vorhandene Klassen Unit-Tests erstellen zu lassen. Es ist aber auch möglich, ChatGPT im Rahmen der testgetriebenen Entwicklung zu nutzen, um geeignete Testfälle zu erstellen.

Aber aufpassen: Verwenden Sie ChatGPT immer nur für eine Seite, also entweder für den Code oder für den Test. Niemals sollten Sie beide Seiten durch eine KI generieren lassen, da Sie sonst die Kontroller aus der Hand geben.

Die Anfragen an ChatGPT für Softwaretester können ebenfalls recht abwechslungsreich sein. Auch diese Beispiele sind gekürzt, zeigen aber die Bandbreite der möglichen Fragestellungen:

Auch hier ein ausführliches Beispiel. Wir erweitern den Prompt zum Vorschlagen sinnvoller Testfälle um weitere Details, fügen Situation und Kontext hinzu, und konkretisieren die Frage:

Ich arbeite als Tester in unserem Softwareteam intensiv daran, die Qualität unserer Produkte durch systematische Tests zu gewährleisten.

Aktuell möchte ich einen neuen Authentifizierungsservice testen. Dieser Service ist

entscheidend für die Sicherheit unserer Anwendung, da er sowohl die Registrierung neuer Benutzer als auch das Einloggen bestehender Benutzer handhabt. Es ist unerlässlich, dass dieser Service fehlerfrei funktioniert.

Ich möchte mit PHPUnit einen Test für diesen Authentifizierungsservice erstellen. Welche sinnvollen Testfälle könnten Sie mir vorschlagen?

Nach dem Vorschlagen sinnvoller Testfälle kann ChatGPT auch konkrete Tests als Code erstellen. Dafür sind aber sehr viele Details zur vorhandenen oder geplanten Implementierung erforderlich. Zumindest ein Interface, welches die wesentlichen Methoden definiert, sollte übergeben werden, damit die Tests auch sinnvoll sind. Aber nochmals der Hinweis: Niemals Code und Tests zusammen von ChatGPT erstellen lassen!

In der Praxis haben aber Fragen nach zusätzlichen Testfällen unserem Team immer gute Ideen geliefert, um auch die Funktionen abseits des Happy Paths testen zu können. Dabei lassen wir uns auch oft nur die leeren Methoden inkl. Testdox erstellen und schreiben den Code des Tests meistens selber. Nur bei ganz kniffligen Tests fragen wir ChatGPT noch direkt nach Testcode.

ChatGPT Prompts – Fazit: Der Beruf des Entwicklers wird nicht aussterben

In der täglichen Praxis hat sich ChatGPT als zusätzliches Tool bei unseren Entwicklern mittlerweile etabliert. Während früher bei Problemen meistens Google bemüht wurde, kommt inzwischen meistens direkt ChatGPT zum Einsatz. Erst vor kurzem habe ich mir mit ChatGPT ein Bash-Skript erstellen lassen, das für ein komplexeres Projekt mehrere Git Repositories auf meinem Rechner aktualisiert und die Docker Container hochfährt. Das hat nur wenige Minuten gedauert.

Wer ChatGPT als zusätzliches Werkzeug für die Entwicklung versteht, sollte sich keine Sorgen um die eigene Zukunft machen. Sinnvoll lässt sich dies auf lange Sicht nur einsetzen, wenn der Anwender über entsprechende Erfahrung verfügt. Wer hofft, mit wenigen Programmierkenntnissen komplexe Projekte hochziehen zu können, wird schnell auf den Boden der Tatsachen geholt werden.

Titelmotiv: Photo by Antonio Janeski on Unsplash

Die mobile Version verlassen