ChatGPT und KI in der Softwareentwicklung (Best Practices)

ilgmyzin-agFmImWyPso-unsplash-scaled

Die Integration von Künstlicher Intelligenz (KI) in die Softwareentwicklung hat in den letzten Jahren an Bedeutung gewonnen. ChatGPT ist ein herausragendes Beispiel für diese Technologie. In diesem Artikel stelle ich dir wertvolle Tipps und Best Practices vor, wie du ChatGPT und KI effektiv in Softwareentwicklungsprojekte einbinden kannst.

Was ist ChatGPT?

Was ist ChatGPT? Gute Frage. Ist es ein Chatbot? Ein Tool zur Textgenerierung? Oder einfach nur ein weiteres KI-Modell, das uns Entwickler bald überflüssig macht? Fragen wir es doch einfach selber.

What is ChatGPT in 3 sentences?

Nun, bevor du in Panik gerätst, lass mich erklären: ChatGPT ist tatsächlich ein KI-Modell zur Textgenerierung, aber es ist so viel mehr als das. Es ist ein Allzweck-Tool, das dir als Entwickler dabei helfen kann, deine Arbeit schneller, effektiver und sogar kreativer zu erledigen.

Aber was ist das Geheimnis von ChatGPT? Nun, es basiert auf einem sogenannten Generative Pre-trained Transformer, oder kurz GPT. Klingt wie eine Science-Fiction-Waffe, aber eigentlich ist es nur ein Algorithmus, der darauf trainiert wurde, natürlichsprachliche Texte zu erzeugen, die von Menschen geschrieben wurden.

Und mit ChatGPT kannst du dieses mächtige Werkzeug in deinem Entwicklungsprozess nutzen. Aber Vorsicht! ChatGPT ist kein Allheilmittel und sollte mit Bedacht eingesetzt werden. Auf was du achten musst, erfährst du jetzt.

Neugierig geworden? Jeder kann ChatGPT aktuell kostenlos nutzen. Dazu musst du dir nur ein Konto mit deiner E-Mail Adresse erstellen.

Wie kann ChatGPT in der Softwareentwicklung genutzt werden?

1. Entwickeln von Code, Skripts und Snippets

ChatGPT kann Entwicklern dabei helfen, Code, Skripte und Snippets automatisch zu generieren, indem man kurze Prompts eingibt. Dadurch lässt sich Zeit und Arbeit sparen. Es ist jedoch wichtig sicherzustellen, dass der generierte Code den Anforderungen entspricht und gründlich getestet wird, bevor man ihn einsetzt. ChatGPT kann auch als „Code-Checker“ fungieren und Verbesserungsvorschläge machen.

Darüber hinaus kann ChatGPT beim Schreiben von automatisierten CI/CD Pipelines helfen. Insgesamt bietet ChatGPT eine enorme Unterstützung für die Code-Entwicklung, aber es ist wichtig, dass man immer noch über die nötigen Fähigkeiten und Kenntnisse verfügt, um Code von Grund auf zu schreiben und zu optimieren.

Am liebsten nutze ich es bei der Generierung von config Dateien. Dort werden viele Parameter benötigt, die nur selten verwendet werden und man sie deshalb nicht im Kopf hat. Vor kurzem wollte ich eine bestehende CI/CD Umgebung um eine Test-Phase erweitern. Das bestehende Skript sah so aus:

name: Node.js CI/CD Workflow with frontend

on:
  push:
    branches: [ "master" ]

jobs:
  test-and-build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [16.x]

    steps:
    - uses: actions/checkout@v3
    
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v3
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
        
    - name: Build Frontend
      run: npm i --prefix client && npm run build --prefix client
      env:
       CI: false
    
    - name: Push to build branch
      uses: s0/git-publish-subdir-action@develop
      env:
        REPO: self
        BRANCH: build # The branch name where you want to push the assets
        FOLDER: ./public # The directory where your assets are generated
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # GitHub will automatically add this - you don't need to bother getting a token
        MESSAGE: "Build: ({sha}) {msg}" # The commit message

ChatGPT hat mir dann den fehlenden Schritt reingeniert. Dazu habe ich das vorhanden Config File einfach in der Prompt mit übergeben.

[...]
    - name: Install dependencies and run tests
      run: |
        npm install
        npm run test
      env:
        CI: true # set environment variable to run tests in CI mode
[...]

2. Schreiben von Dokumentation

Indem man ChatGPT einfach nach der gewünschten Dokumentation fragt, kann man eine strukturierte Dokumentation generieren lassen, die alle wichtigen Aspekte des Codes oder des Projekts abdeckt. Dabei können auch Erweiterungen für deine IDE helfen. Darauf werde ich später nochmal genauer eingehen.

Es ist jedoch wichtig, sicherzustellen, dass die generierte Dokumentation vollständig und verständlich ist. Man sollte sich auch die Zeit nehmen, sie zu überprüfen und gegebenenfalls zu bearbeiten, bevor man sie an Kunden oder Benutzer weitergibt.

Dazu habe ich hier ein tolles Beispiel. Stell dir vor du schaust dir den Code von einem anderen Entwickler an und dieser hat nicht auf die Bennenung der Funktionen geachtet und auch keine Kommentare erstellt. Bis du den Code durchblickt hast, hat ChatGPT schon die Lösung für dich. Oder kannst du mir innerhalb von 10 Sekunden sagen was dieser Code tut?

import random

def whatDoesThisFunction(numbers):
    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
            if numbers[j] < numbers[i]:
                numbers[i], numbers[j] = numbers[j], numbers[i]
    return numbers

if __name__ == '__main__':
    numbers = [random.randint(1, 100) for _ in range(10)]
    sorted_numbers = whatDoesThisFunction(numbers)
    print(sorted_numbers)

Ich hab ChatGPT gebeten: „Write comments in the code:“. Das war das Ergebnis:

import random  # Import the random module

def whatDoesThisFunction(numbers):
    """
    This function takes in a list of numbers and sorts them using the bubble sort algorithm.
    """
    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
            if numbers[j] < numbers[i]:
                numbers[i], numbers[j] = numbers[j], numbers[i]  # Swap the values if the jth element is smaller than the ith element.
    return numbers

if __name__ == '__main__':
    numbers = [random.randint(1, 100) for _ in range(10)]  # Generate a list of 10 random integers between 1 and 100.
    sorted_numbers = whatDoesThisFunction(numbers)  # Call the function to sort the numbers.
    print(sorted_numbers)  # Print the sorted list of numbers.

Ich denke mehr brauche ich nicht dazu sagen 🙂

3. Denkanstöße geben

Es kann frustrierend sein, wenn man bei der Lösung eines Problems feststeckt und keine Ideen mehr hat. In solchen Situationen kann ChatGPT als Denkanstoß dienen, indem es alternative Lösungsansätze und Ideen vorschlägt. Mit seiner Fähigkeit, eine Vielzahl von Informationen zu analysieren und Muster zu erkennen, kann ChatGPT oft unerwartete und nützliche Vorschläge machen. Auch wenn es nicht immer die perfekte Lösung bietet, kann es dazu beitragen, den kreativen Prozess anzuregen und neue Wege zu finden, um Probleme zu lösen.

4. Schreiben von Tests

Wenn es um das Schreiben von Tests geht, kann das sehr zeitaufwendig und mühsam sein. Aber mit ChatGPT kannst du diese lästige Aufgabe automatisieren und deinen Code-Entwicklungsprozess beschleunigen.

Wie funktioniert das? Indem du einfach eine Anfrage an ChatGPT stellst, die den Testfall beschreibt, den du erstellen möchtest. Die KI-Engine generiert dann automatisch den Testfallcode für dich! Das bedeutet weniger Stress und eine schnellere Codeerstellung, so dass du dich auf andere wichtige Aufgaben konzentrieren kannst.

Ich möchte dir das ganze einmal demonstrieren. Ich habe hier Code aus einer Middleware einer bestehenden Rest API:

// Middleware to validate challenge parameters
validateChallenge: (req, res, next) => {
  // Check if request body, challengeID, done and code are present and have expected data types
  if (
    !req.body ||
    !req.body.challengeID ||
    !req.body.code ||
    !req.body.done
  ) {
    return res.status(400).send({
      msg: 'Please enter valid challenge params!', // Send error message if validation fails
    });
  }
  next(); // Call next middleware function if validation passes
},

Jetzt nehmen wir diesen Code und geben ihn mit folgender Prompt an ChatGPT: „Write tests for this code: CODE„.

Schwups, schon spuckt uns ChatGPT insgesamt 5 Test-Cases für unseren Code aus.

ChatGPT generiert JavaScript Testfälle für eine Rest API
ChatGPT generiert JavaScript Testfälle für eine Rest API

Falls du schon andere Tests in deinem Projekt hast kannst du ChatGPT natürlich sagen, dass es für ein bestimmtes Framework Unit Tests generieren soll.

Insgesamt kann ChatGPT dir dabei helfen, effizienter zu arbeiten und den Schreibprozess von Tests zu vereinfachen. Also warum nicht diese lästige Aufgabe an eine KI auslagern und deine Entwicklungszeit optimieren?

Best Practices bei der Nutzung von ChatGPT in der Softwareentwicklung

Nachdem ich ChatGPT jetzt schon eine ganze Weile in meinem täglichen Entwickler Dasein nutze, konnte ich einige Tipps & Tricks bei der Nutzung von ChatGPT ausfindig machen.

1. Prompts richtig wählen

Um gute Ergebnisse zu erhalten muss man ChatGPT genau mitteilen, was man möchte. Schreibe lieber 1-2 Sätze mehr in die Prompt, dafür erhältst du aber meist das bessere Ergebnis.

2. Die richtigen IDE Extensions

Mittlerweile gibt es zahlreiche Erweiterungen für jegliche IDEs in der Marketplaces und Stores. Schau die Stores einfach mal durch. Da ich persönlich Visual Studio Code nutze, kann ich nur dafür eine Empfehlung für die Extension Genie aussprechen.

Visual Studio Code: Genie Extension Beispiel
Visual Studio Code: Genie Extension Beispiel

3. Achte auf sensible/geheime Daten

Entwickler haben oft mit sensiblen Daten zu tun, wie zum Beispiel Nutzerinformationen oder geheime Firmendaten. Als Entwickler ist es daher von entscheidender Bedeutung, sicherzustellen, dass diese Daten nicht versehentlich preisgegeben werden, wenn man mit ChatGPT arbeitet.

Die beste Praxis hier ist, ausschließlich Testdaten an ChatGPT weiterzugeben. Indem du sicherstellst, dass keine vertraulichen Informationen verwendet werden, verhinderst du unbeabsichtigte Datenlecks und hältst deine Daten sicher.

4. ChatGPT arbeitet besser mit Beispielen

Das Geben von Beispielen ist ein wichtiger Schritt, um die Leistung von ChatGPT zu verbessern. Wenn du ChatGPT beispielsweise darum bittest, SQL-Queries oder Code zu generieren, erhältst du bessere Ergebnisse, wenn du konkrete Beispiele mitlieferst.

Indem du ein paar Zeilen SQL-Code oder die Struktur der Tabelle bereitstellst, kann ChatGPT besser verstehen, was du benötigst und kann präzisere Ergebnisse liefern. Ähnlich gilt auch, wenn ChatGPT Code kommentieren soll. Durch das Bereitstellen von Beispielkommentaren kann ChatGPT besser verstehen, was du benötigst und kann genauere Kommentare generieren.

5. Verwende englische Sprache

Meine Muttersprache ist deutsch, deshalb ist es für mich einfacher deutsche Prompts zu erstellen. Allerdings habe ich gemerkt, dass ChatGPT englische Prompts besser versteht und somit bessere Ergebnisse liefert. So ziemlich alle Developer Ressourcen und Dokumentation sind englisch, so dass ChatGPT das natürlich besser versteht.

ChatGPT ist nicht perfekt – und macht Fehler!

Obwohl ChatGPT ein beeindruckendes Beispiel für KI-Textgenerierung ist, macht es dennoch Fehler. Eine der wichtigsten Einschränkungen von ChatGPT ist, dass es auf Daten aus dem Jahr 2021 basiert, was bedeutet, dass es möglicherweise veraltete Technologien und Frameworks verwendet. Aus diesem Grund ist es wichtig, dass Entwickler den generierten Code sorgfältig prüfen, bevor sie ihn ausführen, um sicherzustellen, dass er korrekt und sicher ist.

Ein weiterer Punkt, den man beachten sollte, ist, dass ChatGPT keine tiefgreifenden Zusammenhänge zwischen verschiedenen Programmiertechnologien und -konzepten verstehen kann. Es kann Code generieren, der syntaktisch korrekt ist, aber möglicherweise nicht die gewünschte Funktionalität oder Effizienz aufweist. In solchen Fällen ist es wichtig, dass der Entwickler die manuelle Überprüfung und sein eigenes Verständnis der zugrunde liegenden Konzepte und Zusammenhänge nutzt, um sicherzustellen, dass der generierte Code den Anforderungen entspricht.

Zusammenfassung

Zusammenfassend kann man sagen, dass die Integration von ChatGPT und Künstlicher Intelligenz in die Softwareentwicklung vielversprechende Möglichkeiten bietet. Durch Anwendung der in diesem Artikel gezeigten Tipps und Best Practices können Entwicklungsprojekte wirksamer gestaltet werden. Ohne Zweifel wird die Zukunft der Softwareentwicklung durch KI geprägt sein. Somit müssen wir diese Technologie bestmöglich einsetzen, um innovative und leistungsfähige Softwarelösungen zu entwickeln.

Ähnliche Beiträge
Beteilige dich an der Unterhaltung

3 Kommentare

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

bold italic underline strikeThrough
insertOrderedList insertUnorderedList outdent indent
removeFormat
createLink unlink
code

Das könnte dich auch interessieren