Large Language Models als Development-Unterstützung Auswirkungen von LLMs auf die Programmierung

Ein Gastbeitrag von Dr. Florian Mock & Oliver Dzaeck * Lesedauer: 5 min |

Anbieter zum Thema

Spätestens seit der Veröffentlichung von ChatGPT ist klar, dass Large Language Models die Art und Weise, wie wir in Zukunft arbeiten, verändern können. Und eines ist sicher: Softwareentwicklung wird nicht so bleiben, wie sie heute ist.

Generative KI sollte als unterstützendes Tool verantwortungsbewusst eingesetzt werden.
Generative KI sollte als unterstützendes Tool verantwortungsbewusst eingesetzt werden.
(© ipopba - stock.adobe.com)

Heutzutage wird Software typischerweise in agil organisierten Teams mit Hilfe von integrierten Entwicklungsumgebungen (IDEs) erstellt. Diese IDEs unterstützen den Programmierenden durch automatische Vervollständigung und Hinweise dabei, den Code effizient und dem Style Guide entsprechend zu entwickeln.

Anschließend wird der Code in mühsamer Kleinarbeit im Trial-and-Error-Verfahren debugged. Dieses Vorgehen bietet einigen Raum für Verbesserungen. Diesen Raum können sogenannte Large-Language-Modelle (LLMs) zumindest teilweise füllen. Denn diese großen Sprachmodelle sind darauf spezialisiert, die natürliche Sprache zu interpretieren und zu generieren. Diese Modelle fußen auf einer Deep-Learning-Architektur namens „Transformer“.

Basierend auf diesen Forschungen ist ChatGPT aktuell das wohl bekannteste Beispiel. Durch die Interaktion in natürlicher Sprache und dank umfangreichen Trainings – für welches im Grunde der fast gesamte Inhalt des Internets bis 2021 genutzt wurde (2,95 Milliarden Webseiten mit 310 Terabyte an unkomprimierten Daten) – ist dieses LLM dazu in der Lage, hochwertige Konversationen zu fast jedem Thema zu führen.

Wie LLMs beim Development unterstützen können

Ein Vorteil solcher LLMs ist, dass sie nicht nur Daten abfragen können, sondern auch kreativ mit den Daten interagieren und auf Basis großer Datenmengen Analysen, Vorhersagen, Optimierungen und Verbesserungen vorschlagen können. Generell sind LLMs aktuell insbesondere für drei typische Situationen beim Programmieren geeignet: Konzeptionierung, Code schreiben und Debuggen.

In der Konzeptionsphase können LLM als Sparringspartner genutzt werden, um mögliche Ansätze für komplexe Problemstellungen zu identifizieren. Dabei werden konkrete mehrstufige Konzepte vorgeschlagen, die sowohl vom Nutzer als auch von der KI evaluiert und in gemeinsamer Interaktion weiterentwickelt werden.

In Fällen, in denen ein Programmcode im Kopf zurechtgelegt wurde, aber man an einer schnelleren Umsetzung interessiert ist, kann dies durch die Generierung von Code-Schnipseln erreicht werden. Das ist besonders hilfreich, wenn der Code Pakete oder APIs verwendet, für deren Verwendung sonst die Dokumentation konsultiert werden müsste.

LLMs können auch bei der wohl mühsamsten Aufgabe der Programmierung, dem Debugging, sehr hilfreich sein. Zum einen lassen sie sich als Google- und Stack-Overflow-Alternative einsetzen, bei der beispielsweise das LLM mit der Fehlermeldung und einer groben Beschreibung des Programms konfrontiert wird. Die Qualität der Antwort ist dabei sehr unterschiedlich und kann bei seltenen Fehlern auch zu halluzinierten Paketen oder Funktionen in den Lösungsvorschlägen führen.

Alternativ können LLMs auch auf komplette Codefragmente angesetzt werden, mit der Bitte, potenzielle Fehler zu identifizieren und Lösungen vorzuschlagen. Dies hat zwei Vorteile: Zum einen werden manchmal auch Fehler identifiziert, die von den Testbedingungen abhängen und daher nicht leicht zu finden sind. Zum anderen wird nicht nur ein Fehler angezeigt, sondern auch Code vorgeschlagen, um diesen Fehler zu beheben.

Die Ansprüche an KI-Helfer steigen

Inzwischen gibt es zahlreiche kommerzielle und kostenlose Programme, die versuchen, die Softwareentwicklung mit Hilfe von KI zu unterstützen. Meist geht es dabei um die automatische Vervollständigung von Code, wie bei GitHub Copilot oder Tabnine. Inzwischen wird aber darüber hinaus erwartet, dass die Programme gezielt beim Debuggen, bei Fragen zum Code oder allgemein als Sparringspartner dienen können, wie GitHub Copilot Chat und Tabnine Chat, CodeGPT, Codey und andere zeigen.

Diese Programme erleichtern den Einstieg in die Welt der Softwareentwicklung. Allerdings sollte man nicht davon ausgehen, dass nun jeder ohne Weiteres programmieren kann. Während LLMs zweifellos helfen, sich schneller in ein Thema einzuarbeiten, muss dennoch ein grundlegendes Wissen vorhanden sein, um mit dem von LLMs generierten Code tatsächlich ein funktionierendes Programm erstellen zu können.

Sicherlich kann jemand ein Prompt erstellen mit dem Inhalt: „Generiere mir eine Webseite“. Doch was geschieht anschließend mit dem erstellten Code? Ein Verständnis für Frameworks oder IDEs ist essenziell, um diesen Code interpretieren oder kompilieren zu können. Und was, wenn der generierte Code Fehler enthält? Wie geht man mit Fehlermeldungen um?

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Solche Tools sind sicherlich hilfreich, um unerfahrenen Development-Interessierten einen tieferen Einblick in die Softwareentwicklung zu geben. Dennoch richten sie sich hauptsächlich an Personen, die bereits ein Grundverständnis dafür haben, was sie generieren möchten und wie sie mit dem resultierenden Code umgehen sollten.

Verantwortungsvoller Umgang mit Tools und generiertem Code

Auch wenn auf die Programmierung spezialisierte LLMs klare Vorteile bieten, muss man sich stets der damit verbundenen Verantwortlichkeiten bewusst sein. Diese Verantwortung liegt nicht nur bei der Person, die die Tools zur Unterstützung in der Softwareentwicklung verwendet, sondern erstreckt sich auf das gesamte Team. Der von einer KI generierte Code ist nicht immer korrekt oder gar optimal. Solch ein Code erfordert besondere Aufmerksamkeit, sowohl vom Entwickler als auch von anderen Teammitgliedern.

Ein Reviewer sollte stets informiert werden, wenn der Code überprüft wird, der von einer KI erzeugt wurde. Es ist wichtig zu beachten, dass alle genutzten Modelle einem veralteten Stand der Technik entsprechen. Seit dem Trainieren des Modells könnten neuere Versionen bestimmter Frameworks erschienen sein. Daher könnte der generierte Code auch kritische Schwachstellen enthalten, die zu diesem Zeitpunkt noch nicht bekannt waren.

Zudem besteht eine Verantwortung gegenüber sich selbst. Eine Gefahr könnte auch darin liegen, dass Entwickler zu abhängig von solchen Tools werden. Allzu leicht gewöhnt man sich an Hilfsmittel, die den Alltag erleichtern – mit diesen Modellen könnte es ähnlich sein. Es ist entscheidend, ein Gleichgewicht zwischen dem Einsatz solcher Werkzeuge und der eigenen Fachkompetenz zu finden.

Selten geschieht so etwas nicht. Ein Beispiel sind Tools wie DeepL, die zweifellos eine große Hilfe sind, Text schnell zu übersetzen, jedoch möglicherweise Tiefe, Nuance und das kulturelle Verständnis vermissen lassen, das mit der Kenntnis einer Sprache einhergeht. Warum sollte es bei Programmiersprachen anders sein?

Angesichts des aktuellen Trends, dass sich KI immer mehr den menschlichen Fähigkeiten annähert, sind Ängste um den eigenen Arbeitsplatz kaum verwunderlich. Hierzu gibt es vom Weltwirtschaftsforum den sogenannten Future of Jobs Report 2023, in welchem der allgemeine branchenübergreifende Konsens besteht, dass durch KI mehr neue Jobs entstehen als bisherige wegfallen. Dieser Trend wird insbesondere in der IT erwartet. Hier gehen deutlich mehr IT-Unternehmen (45% mehr) davon aus, dass innerhalb der nächsten 5 Jahre neue Jobs durch KI entstehen, anstatt abgebaut zu werden.

Aber da es sich beim Programmieren um eine zuweilen repetitive Arbeit handelt, welche klaren Regeln folgt und außerdem hierfür sehr umfangreiches Trainingsmaterial bereitsteht, ist davon auszugehen, dass sich die Aufgaben in der IT vom eigentlichen Programmieren wegbewegen. Somit ist davon auszugehen, dass die wenigsten ihren Job verlieren, sehr wohl sich aber unsere Aufgaben ändern.

* Über die Autoren
Dr. Florian Mock ist promovierter Bioinformatiker und Software Engineer bei der adesso SE. Seine Expertise umfasst Machine Learning, Data Science in der Google Cloud und kundenspezifische Lösungen jenseits gängiger ML-Ansätze.

Bildquelle: adesso SE


Oliver Dzaeck ist Teamleiter und Softwarearchitekt bei der adesso SE. Hauptsächlich beschäftigt er sich mit der Umsetzung von Custom Dev Lösungen im Microsoft Bereich und der Azure Cloud. Zusätzlich entwickelt Oliver Lösungen, um private ChatGPT-Instanzen mit Unternehmensdaten zu ergänzen und diese den Kunden bereitzustellen.

Bildquelle: adesso SE

(ID:49705679)