Künstliche Intelligenz: Die Zukunft des Programmierens?
Die menschliche Sprache ist geprägt von Mehrdeutigkeiten, schwammigen Beschreibungen und komplexen Zusammenhängen. Und dennoch schaffen es Maschinen, automatisch Texte zu generieren, die zumindest plausibel wirken und meistens sogar tatsächlich Sinn zu ergeben scheinen. Umso besser sollten eigentlich die Ergebnisse bei der Erstellung von Programmcode mit seiner überschaubaren Syntax und seinen festen Strukturen sein. Dementsprechend haben Werkzeuge wie Copilot oder ChatGPT enormes Potenzial, Programmierer beim Schreiben ihrer Codes zu unterstützen.
»Programmiersprachen sind sehr einfache Sprachen, die aus Mustern und Beispielen für Maschinen auch gut erlernbar sind«, bestätigt Aljoscha Burchardt, der sich am Deutschen Forschungszentrum für Künstliche Intelligenz (DFKI) mit Sprachtechnologie beschäftigt. »Vor allem die Mischung aus allgemeinsprachlicher Eingabe zur Beschreibung eines Problems und den programmiersprachlichen Ausdrücken, die das System als Ergebnis liefern soll, ist eigentlich perfekt auf die Fähigkeiten von ChatGPT zugeschnitten.« Kein Wunder also, dass OpenAI seine künstliche Intelligenz neben dem umfassenden Training zu Aufsätzen, Gedichten und Liedtexten auch gleich noch mit Programmcode vertraut gemacht hat. Wohl nicht zuletzt deshalb, weil Programmierer in Zukunft gewichtige Fürsprecher in Firmen sein könnten, denen man nach den aktuellen Gratisspielereien auch erweiterte Dienstleistungen verkaufen will.
Noch ist das Potenzial von ChatGPT als Programmierwerkzeug aber sicher nicht ausgereizt. So ist es etwa noch nicht einmal in der Lage, einen Code, den es auf Anweisung des Nutzers hin erstellt hat, selbst auszuführen und zu überprüfen, ob er funktioniert. »Man muss bedenken, dass diese Technologie erst seit einem halben Jahr frei verfügbar ist«, relativiert Burchardt. »Aber spezifische Businessmodelle und Geschäftsanwendungen mit solchen Zusatzfunktionen einzubauen, wäre jetzt natürlich der nächste, logische Schritt.«
»ChatGPT halluziniert munter drauflos, wenn auch zum Teil mit erstaunlichen Ergebnissen«Aljoscha Burchardt, KI-Experte
Was die aktuelle Version von ChatGPT angeht, so setzt sich die Funktionalität im Wesentlichen aus zwei großen Bereichen zusammen: dem zu Grunde liegenden Sprachmodell und der darauf aufgesetzten Chatfunktion, die für die nutzerfreundliche Bedienung sorgt. Die Sprachmodelle, allen voran GPT-1, -2 und -3, existieren bereits seit mehreren Jahren und haben sich selbst anhand riesiger Datenmengen trainiert. Im Vordergrund stehen dabei frei zugängliche Texte aus dem Internet, aber eben auch Programmcode, der in Form von Open-Source-Software, Programmierkursen oder Beispielcodes ebenfalls in großem Ausmaß frei zur Verfügung steht.
Wort um Wort entsteht ein Text
»Vereinfacht ausgedrückt hält sich die KI dabei immer selbst ein Wort zu und versucht, es zu erraten«, erklärt Burchardt. Die Fachleute sprechen davon, dass der Algorithmus einige Zeichen in einer Zeichenkette »maskiert« und dann aus dem Kontext links oder rechts von den maskierten Zeichen versucht, auf den verdeckten Inhalt zu schließen. Da es dabei ohne weiteres menschliches Zutun auskommt, spricht man in diesem Fall von »selbstüberwachtem Lernen«. Und nach Abschluss des Trainings ist es schließlich in der Lage, auf Basis eines vom Nutzer vorgegebnen Textanfangs einen plausiblen Vorschlag für das nächste Wort zu machen. Dann folgt das übernächste und schließlich entsteht ein ganzer, neuer Text, der zwar plausibel wirkt, letztendlich aber nur eine statistische Auswertung der Trainingsdaten widerspiegelt. »Über ein wirkliches Verständnis des produzierten Inhaltes verfügt ein solches System natürlich nicht«, sagt Burchardt. »Es halluziniert vielmehr munter drauflos, wenn auch zum Teil mit erstaunlichen Ergebnissen.«
Diese Sprachmodelle, die laut Burchardt durchaus als Meilensteine in der KI-Forschung betrachtet werden können, verpackt ChatGPT dann noch in eine Chatfunktion, die dem Nutzer eine intuitive Interaktion ermöglicht. Über sie kann er in einen Dialog mit dem System eintreten, hier und da noch eine Veränderung oder Nachbesserung einfordern und sich in mehreren Zügen an das von ihm gewünschte Ergebnis annähern. Im Gegensatz zum Sprachmodell selbst ist diese Funktionalität allerdings das Resultat intensiver menschlicher Anstrengungen beim Trainieren der KI. »Da haben ganz viele Leute zunächst typische Anfragen an das System gestellt und dann die Ergebnisse bewertet«, erklärt Burchardt. Durch dieses »verstärkende Lernen« hat ChatGPT schließlich gelernt, nur die besten und hilfreichsten Antworten zu liefern. »Und das hat man mit Programmieraufgaben wohl genauso gemacht und dabei typische Anfragen von Programmierern berücksichtigt, um dem System möglichst nützliche Antworten zu entlocken«, vermutet Burchardt.
Einer, der sich mit Werkzeugen für die Softwareentwicklung bestens auskennt, ist Sebastian Erdweg. Er leitet an der Johannes Gutenberg-Universität Mainz die Arbeitsgruppe für Programmiersprachen und hat bereits vor einem Jahr mit Copilot experimentiert und kürzlich auch ChatGPT zu diesem Zweck ausprobiert. »Die Möglichkeiten, die sich durch KI bieten, um Softwarewerkzeuge zu verbessern, sind auf jeden Fall relevant«, lautet sein Resümee. »Im Fall von ChatGPT ist es allerdings wichtig zu verstehen, wie sich Programme von Texten in menschlicher Sprache unterscheiden.« Schließlich könne man zwar auch Texte in der Regel nicht eins zu eins so verwenden, wie die KI sie ausspuckt. Allerdings falle ein Text, der ein schwaches Argument enthält, nicht gleich vollständig in sich zusammen, während ein Computerprogramm letztendlich exakt funktionieren muss.
Rezept für problematische Widersprüche
»Das lässt sich gut mit einem Kochrezept vergleichen«, sagt Erdweg. Denn ähnlich wie Programme geben auch sie genaue Regeln vor. Es gibt eine Zutatenliste und eine schrittweise Kochanweisung – alles Regelmäßigkeiten, die es einer KI eigentlich leicht machen sollten, ein Rezept nach den persönlichen Vorlieben des Nutzers zu generieren. Allerdings optimiert sie dabei lediglich auf Basis von anderen Rezepten, die zuvor bereits von Menschen kreiert worden sind, die Plausibilität, während konkrete Fehler erst beim Ausprobieren zu Tage treten. »Wenn die Anweisung beispielsweise lautet, die Kartoffeln erst zu schneiden und sie dann als Ganzes zu kochen, ist das ein problematischer Widerspruch«, sagt Erdweg. »Und weil dieser Algorithmus ja in Wirklichkeit keine Ahnung hat vom Kochen hat, kann das jederzeit passieren.«
Genauso wenig reicht es, wenn Programmcode nur oberflächlich betrachtet plausibel aussieht. Eine einzige falsche Anweisung kann dazu führen, dass das gesamte Programm nichtig ist, weil es kein sinnvolles Ergebnis liefert. »Und was eigentlich noch schlimmer ist: Es kann sehr schwierig sein, diese Fehler zu finden«, sagt Erdweg. Schließlich ist in der Softwareentwicklung die Wartung eines fremden Programmcodes in der Regel viel aufwändiger als die initiale Entwicklung. Und mit einem automatisch generierten Code kommt ein Programmierer sehr schnell in die Situation, sich auf diese mühsame Fehlersuche begeben zu müssen.
Dennoch hat die Funktionalität von ChatGPT den Informatiker auch beeindruckt: »Für einfache Programmierbeispiele funktioniert das hervorragend.« Dabei handelt es sich allerdings um Standardalgorithmen, die bereits 1000-fach im Internet abrufbar sind und auf die das System aller Wahrscheinlichkeit nach auch bereits konkret trainiert wurde. »Wenn man die Anforderung jedoch immer weiter spezialisiert und immer mehr in Richtung eines realistischen Anwendungsfalls geht, dann bricht das Ganze auch relativ schnell zusammen«, sagt Erdweg.
»Und was eigentlich noch schlimmer ist: Es kann sehr schwierig sein, die Fehler, die ChatGPT macht, zu finden«Sebastian Erdweg, Informatiker
Reden wir drüber
Die besondere Stärke von ChatGPT ist aber ohnehin die Möglichkeit, mit dem System in einen Dialog zu treten – eine Funktion, die etwa bei dem etwas älteren Softwareentwicklertool Copilot fehlt. »Wenn man mit Copilot ein Programm generiert und das nicht richtig funktioniert, ist die einzige Möglichkeit, es wieder zu löschen und mit einer neuen Anforderungen zu starten«, sagt Erdweg. »Da hat mich ChatGPT mit dieser grundsätzlichen Möglichkeit, mittels Dialog ein korrigiertes Programm anzufordern, schon sehr beeindruckt.«
Allerdings scheint die Entwicklung der KI auch in diesem Bereich noch nicht ganz am Ziel zu sein. So erzählt Erdweg etwa von einem Dialog, in dem er ChatGPT immer wieder aufgefordert hat, eine bestimmte fehlerhafte Stelle im Code zu reparieren. »Das hat die KI dann auch gemacht und hat mir ein neues Programm vorgeschlagen, wo diese Stelle dann tatsächlich repariert war«, berichtet der Forscher. »Allerdings ist dadurch gleichzeitig an einer anderen Stelle etwas kaputtgegangen.« Und durch die Aufforderung, das neue Problem zu beheben, ergab sich schließlich eine Art Kreisschluss, in dem die vorherige Schwachstelle erneut auftrat. »Das ist ein bisschen so, als würde man mit einem Kleinkind reden«, sagt Erdweg. Und ein paar Iterationen später hat die KI ihren Nutzer in ihrer hochgepriesenen Dialogfähigkeit sogar noch mit Falschaussagen konfrontiert und behauptet, der Fehler sei korrigiert, obwohl er immer noch da war. »Die KI versteht demnach weder, was sie tut, noch den Dialog, den sie darüber führt«, warnt Erdweg. »Man muss also im Umgang damit sehr vorsichtig sein.«
Eine Möglichkeit, ChatGPT dennoch produktiv für das Schreiben von Code einzusetzen, sieht der Informatiker darin, sich zumindest vorerst auf bescheidenere Ziele zu beschränken und die KI lediglich auf kleine, vom Rest der Software losgelöste Aufgaben anzusetzen. Das lässt sich gut mit dem gerade in der Softwareentwicklung üblichen Outsourcing vergleichen, bei dem Teile einer Software von Subunternehmen entwickelt werden. »Da weiß man auch nie genau, ob diese Teile dann richtig funktionieren beziehungsweise ob die Anforderungen richtig verstanden wurden«, sagt Erdweg. Und sowohl beim Outsourcing als auch bei der Arbeit mit künstlicher Intelligenz bleibt dem verantwortlichen Programmierer nichts anderes übrig, als den gelieferten Code penibel nach Fehlern zu durchsuchen oder so lange zu testen, bis er ihm schließlich vertraut.
Wenn Sie inhaltliche Anmerkungen zu diesem Artikel haben, können Sie die Redaktion per E-Mail informieren. Wir lesen Ihre Zuschrift, bitten jedoch um Verständnis, dass wir nicht jede beantworten können.