Cookies
Diese Website verwendet Cookies und ähnliche Technologien für Analyse- und Marketingzwecke. Durch Auswahl von Akzeptieren stimmen Sie der Nutzung zu, alternativ können Sie die Nutzung auch ablehnen. Details zur Verwendung Ihrer Daten finden Sie in unseren Datenschutz­hinweisen, dort können Sie Ihre Einstellungen auch jederzeit anpassen.
Engineering

KI-Tools in der Software-Entwicklung: ChatGPT und GitHub Copilot im Test

8
Minuten Lesezeit
Hannah Schiebener
Jay Schneider

ChatGPT: Anwendungsbeispiele und Techniken für effektive Prompts

ChatGPT oder Alternativen wie phind und HuggingChat basieren auf Large Language Models (LLMs), die zur generativen KI gehören. Diese computergestützten Modelle bestehen aus einem künstlichen neuronalen Netz, das mit großen Textmengen trainiert wurde und beispielsweise Texte zusammenfassen, übersetzen oder generieren kann. Diese generativen KI-Tools bieten den Nutzenden einen Chat, über den auch technische Fragen beantwortet oder Codeblöcke generiert werden können. Chat-basierte KI-Tools, die auf generativer KI basieren, eignen sich daher auch als Entwicklungsunterstützung. Wir haben ChatGPT für die folgenden Aufgaben ausprobiert:

  • Code erklären: ChatGPT kann uns Schritt für Schritt erklären, was in einem Codeblock passiert. Das ist besonders hilfreich, wenn wir mit einer unbekannten Programmiersprache oder fremden Frameworks und Libraries arbeiten.
  • Code generieren: ChatGPT kann Code erstellen, umschreiben oder vereinfachen (Refactoring).
  • Debugging: Im Chat können wir uns Fehlermeldungen erklären lassen, Hinweise auf Fehlerursachen sammeln oder den fehlerhaften Codeblock reparieren lassen.
  • Weiterbildung: Wir können theoretische Konzepte zusammenfassen und entsprechende Codebeispiele zum besseren Verständnis generieren lassen.
  • Testing: ChatGPT kann uns helfen, Ideen für Testfälle zu sammeln oder vollständige Tests zu erstellen.

Diese sehr unterschiedlichen Use Cases können helfen, Einsatzszenarien für ChatGPT während der Entwicklung zu identifizieren. Die Qualität der Ergebnisse kann jedoch trotz des gleichen Use Case sehr unterschiedlich sein, was unter anderem an der Formulierung des Prompts liegt. Der Prompt stellt die Anweisung an ChatGPT dar, die unsere Anfrage an das Modell enthält. Um die Qualität der Antworten zu verbessern, haben wir die folgenden Tipps für das Prompting:

  • Halluzinationen limitieren:  OpenAI bezeichnet eine Halluzination als eine plausible, aber falsche Antwort von ChatGPT. Halluzinationen entstehen, weil ChatGPT immer versucht, eine Antwort zu geben, die aber nicht unbedingt wahr sein muss. Solche Halluzinationen können sehr viel Zeit kosten, insbesondere weil die Anwendung oft selbst fälschlicherweise von der Richtigkeit der Aussagen überzeugt ist. Aus diesem Grund ist es sinnvoll, Halluzinationen einzuschränken. Zu diesem Zweck empfehlen wir, zunächst relevante Informationen zu einem Thema einzuholen oder die Machbarkeit unseres Prompts prüfen zu lassen, bevor die eigentliche Aufgabe ausgeführt wird.
  • Erfolgreiches Beispiel integrieren (few-shot prompting): Durch die Integration eines erfolgreichen Beispiels in den Prompt kann ChatGPT z.B. den Inhalt oder das Format lernen und in der Antwort reproduziere
Bsp.: In diesem Prompt wird das Format der künstlichen Testdaten spezifiziert und als Beispiel integriert.
  • Zeit zum “Nachdenken” geben: Bei der Verarbeitung des Prompts durch ChatGPT ist es von Vorteil, der Anwendung eine längere “Bedenkzeit” einzuräumen. Dies bedeutet eine längere Rechenzeit und damit ein besseres Ergebnis. Um diese Zeit zu erhöhen, empfehlen wir, die einzelnen Schritte, die zur Beantwortung eines Prompts notwendig sind, im Prompt zu spezifizieren.
  • Variablen verwenden: Sonderzeichen können als Indikatoren für Variablen in einer Eingabeaufforderung verwendet werden. Zum Beispiel könnte eine Variable, die verschiedene Eingaben repräsentieren soll, wie folgt aussehen: {input}. Im Prompt sollten die Sonderzeichen nur für Variablen verwendet werden. Variablen teilen ChatGPT mit, dass die Werte bei jedem Prompt angepasst werden können. Dies führt zu einem hohen Grad an Individualisierung, da mit minimalem Aufwand für jeden Prompt eine individuelle Antwort generiert werden kann.
Bsp.: In diesem Prompt beschreiben wir die einzelnen Schritte zur Durchführung der Aufgabe und verwenden Variablen für den zu übersetzenden Text und die Sprachen.

GitHub Copilot: Best Practices für den intelligenten Code-Assistenten

Das KI-Tool GitHub Copilot nutzt KI, um automatisch Code direkt im Editor zu generieren und auch größere Codeblöcke vorzuschlagen. GitHub Copilot basiert auf OpenAI Codex, einem auf Code spezialisierten LLM. Wir haben GitHub Copilot für die folgenden Szenarien getestet:

  • Automatische Code-Vervollständigung: GitHub Copilot leitet Kontext aus Kommentaren und bestehendem Code ab, um Inline-Codevorschläge zu generieren, die direkt akzeptiert oder abgelehnt werden können.
  • Code generieren: Mit GitHub Copilot können größere Codeblöcke nach unseren Vorgaben generiert werden.

Für GitHub Copilot empfehlen wir die folgenden Tipps, um die Qualität der Codevorschläge zu verbessern:

  • Kommentare zu Code: Kommentare können zur Generierung von Codevorschlägen verwendet werden. Die Kommentare liefern den Kontext, aus dem GitHub Copilot die Vorschläge generiert. Das können wir besonders für unbekannte Programmiersprachen empfehlen, da die Kommentare in natürlicher Sprache formuliert werden können und von GitHub Copilot in Code übersetzt werden. Die Best Practices zum Prompting für ChatGPT können auch hier bei der Formulierung von Kommentaren für GitHub Copilot helfen.
Bsp.: Der Codevorschlag von GitHub Copilot ergibt sich aus den Kommentaren und taucht automatisch hinter “input |> “ auf.
  • Aussagekräftige Namen wählen: Die Verwendung aussagekräftiger Namen für Variablen, Funktionen und Dateien kann die Qualität der Vorschläge von GitHub Copilot verbessern, da der Kontext für die Vorschläge aus den Namen abgeleitet wird.
  • Codemuster werden gelernt: GitHub Copilot orientiert sich bei seinen Vorschlägen an bereits existierendem Code und schlägt Code vor, der diesem Code ähnlich ist, d.h. Codemuster und Codestil werden von GitHub Copilot gelernt und angewendet.
Bsp.: GitHub Copilot passt seine Codevorschläge an den Codestil der umgebenden Funktionen an, auch wenn der resultierende Code wenig Sinn ergibt (siehe Beispiel rechts).
  • Relevante Dateien öffnen: Alle in der IDE geöffneten Dateien werden von GitHub Copilot für den Kontext der Vorschläge berücksichtigt. Durch das Öffnen relevanter Dateien können auch die Codevorschläge verbessert werden.

Neben den Ergebnissen, die KI-Tools liefern, haben sie einen zusätzlichen Nutzen: Die Tools bringen das Entwickler:innen-Team dazu, noch einmal aus einem anderen Blickwinkel auf den Code oder die jeweilige Problemstellung zu schauen. Der Mehrwert besteht darin, explizit über z.B. das Format und die Zwischenschritte nachzudenken, um einen gelungenen Prompt für ChatGPT oder Kommentare für GitHub Copilot zu schreiben.

Sowohl für ChatGPT als auch für GitHub Copilot gilt, dass beide KI-Tools noch keinen perfekten und sicheren Code liefern, sondern mit dem Ziel entwickelt wurden, nur eine Unterstützung während der Entwicklung darzustellen und die volle Kontrolle bei den Entwickler:innen zu belassen. Wir werden das Potenzial dieser und neuer KI-Tools beobachten und erwarten, dass sie sich ständig weiterentwickeln und verbessern. Insbesondere sind wir gespannt auf die weiteren Entwicklungen von GitHub Copilot X, z.B. die Chat-Funktion, die ChatGPT als eigenständiges Tool in der Entwicklung ersetzen könnte.

Weitere Informationen

Der Kurs “ChatGPT Prompt Engineering for Developers” - https://learn.deeplearning.ai/chatgpt-prompt-eng - von DeepLearning.AI bietet viele Tipps für effektive Prompts.Ein nützlicher und ständig wachsender Leitfaden zum Thema Prompting ist learnprompting.org, eine Open-Source-Community zur Beschreibung von Prompting-Techniken.

Partner für digitale Geschäftsmodelles

Are you looking for the right partner for your digital projects?

Let's talk!