
Blog
Entwickeln mit Unterstützung von ChatGPT
Entwickeln mit ChatGPT
Ein Beitrag von unserem Softwareentwickler Max Reuning.
Entgegen der um sich greifenden Mode, genau das demonstrativ zu tun, wurde dieser Blogbeitrag ohne die Hilfe von ChatGPT erstellt.
Wie intelligent ist die künstliche Intelligenz?
Künstliche Intelligenz (KI) – Systeme, die nicht nur Unterstützung versprechen sondern möglicherweise gleich ganze Berufszweige vollständig ersetzen würden: Künstler:innen, Autor:innen, Entwickler:innen. In einigen Bereichen sind KI-Systeme wie ChatGPT bereits jetzt fester Bestandteil des Arbeitsalltags, in anderen finden sie langsam Einzug. In vielen werden sie voraussichtlich einen festen Platz einnehmen. Während sich Hoffnungen und Befürchtungen nicht nur in den genannten Berufsgruppen immer wieder zu übertreffen scheinen, stoßen Entwickler:innen jedoch immer wieder auf ein fast ironisches Problem, wenn sie besagte Systeme zur Unterstützung bei der Softwareentwicklung einsetzen: Die KI kann vieles leisten – scheitert aber häufig daran, dass sie eines eben nicht ist, nämlich intelligent. Zumindest auf keine weise, die mit Intelligenz, wie wir sie von Menschen kennen, vergleichbar wäre.
Während der vom US-Amerikanischen Softwareunternehmen OpenAI entwickelte Chatbot ChatGPT erstaunliche Leistungen in der Textverarbeitung liefert, wird an vielen Stellen schnell klar: ChatGPT kann zwar schreiben, weiß aber nicht, was es schreibt. Als ChatGPT Ende des Jahres 2022 für die weitestgehend begeisterte Öffentlichkeit kostenlos zur Verfügung gestellt wurde, häuften sich beispielsweise die Sorgen von Schulen und Universitäten, die zurecht um die Überprüfbarkeit der Autorenschaft wissenschaftlicher Arbeiten fürchteten – aber auch um ihre Qualität. Vermeintlich heiter erscheinen dabei die Anekdoten darüber, was das System leisten (oder eben nicht leisten) kann. Dass ChatGPT zwar problemlos ein brauchbares, vielleicht sogar gutes Essay zur Relevanz des Reformpapsttums im elften Jahrhundert verfassen kann, auf der anderen Seite aber schon an einfachen Rechenaufgaben scheitert, mag auf den ersten Blick irritieren, ist aber bei genauerem Hinsehen nicht allzu überraschend. Nun hat OpenAI bereits Anfang 2023 versprochen, mit einem Update das mathematische Verständnis zu verbessern – Fehleranfällig bleibt es jedoch.
Denn sie wissen nicht, was sie tun
Vor allem die Tatsache, dass ChatGPT auf einen Fehler hingewiesen werden kann, und in einem neuen Versuch einen aktualisierten Text ausgibt, macht den Bot so attraktiv. Weist man ihn allerdings auf einen mathematischen oder logischen Fehler hin, ist es nicht ausgeschlossen, dass man im zweiten Anlauf einen umformulierten Text mit genau demselben Fehler erhält. Wer sich nun von der Bezeichnung „Künstliche Intelligenz“ erhofft hat, mit einem digitalen System zu kommunizieren, das auf eine menschliche Art intelligent wäre, bleibt an dieser Stelle enttäuscht zurück. Während die von ChatGPT formulierte Entschuldigungsnachricht für einen Rechenfehler so erschreckend menschlich erscheint, dass man keine Wette eingehen möchte, ob am anderen Ende nicht doch eine menschliche Kontaktperson die Antworten formuliert, wird klar: ChatGPT weiß nicht sicher, wie Zahlen funktionieren. Oder schlimmer noch: Interessiert sich erst gar nicht dafür.
Nun kann man genau diese Fehler ChatGPT selbst und OpenAI natürlich nicht vorwerfen, denn das System ist nicht darauf ausgelegt, mathematisch-logische Schlüsse aus dem zu ziehen, was vom Nutzer inhaltlich eingegeben wurde und schon gar nicht darauf, Rechenaufgaben zu lösen. Das Ziel besteht darin, Fragen und Anweisungen zu verstehen, die in menschlicher Sprache gestellt wurden und darauf Antworten in menschliche Sprache zu imitieren. Diese Antworten werden aber nicht anhand eines inhaltlichen Verständnisses, sondern über die Funktion und Struktur menschlicher Sprache generiert. Der eben erwähnte historische Aufsatz ist also nicht deswegen gut gelungen, weil ChatGPT wüsste, was im elften Jahrhundert in Europa geschah, sondern, weil die eingegebene Frage oder ihre Bestandteile in bestimmten sprachlichen Zusammenhängen in dem Material vorkamen, von dem ChatGPT zuvor gelernt hatte. Selbstverständlich steckt dahinter eine nicht enden wollende Reihe mathematischer Prozesse, vor allem stochastischer, deren Ziel darin besteht, auszurechnen, welches wohl die wahrscheinlichste Folge von Wörtern sei, die auf diese Frage als Antwort gegeben werden könnte. Jedoch bedeutet das keinesfalls, dass ChatGPT auch nur irgendetwas von dem verstehen würde, was es selbst ausgibt. Weder, was ein Papst ist, noch was die Zahl 5 bedeutet.
Wer ein Tool wie ChatGPT nutzt, sollte sich dieser Schwächen also jederzeit bewusst sein. Die sogenannte Intelligenz des Systems mag zu überraschenden Leistungen fähig sein, scheitert aber an anderen Stellen an Fragen, die ein Grundschulkind möglicherweise korrekt und ohne weitere Probleme hätte beantworten können.
Um die Probleme mit dem Rechnen zu umgehen, gibt es natürlich eine einfache Möglichkeit, nämlich die Nutzung anderer Systeme, die vor allem auf mathematische Fragestellungen spezialisiert sind. Für mathematische Aufgaben sind selbst ältere Systeme, die nicht auf künstlicher Intelligenz, sondern auf spezifischen Algorithmen basieren, wie die semantische Suchmaschine Wolfram Alpha oft deutlich besser geeignet. Letzteres kann verlässlich mathematische Aufgaben lösen und je nach Fragestellung auch graphische Darstellungen erzeugen. Diese Systeme gab es auch vor ChatGPT bereits, es gab sie auch schon, bevor die größere Öffentlichkeit sich überhaupt eine konkrete Vorstellung machen konnte, was eine generative KI überhaupt sein könnte. Auch, wenn diese Systeme im mathematischen Bereich schon lange verlässlich funktionieren, haben sie doch die umgekehrte Schwäche: Sie können rechnen aber nicht unbedingt in natürlicher Sprache kommunizieren. Für alle, die wenig Kontakt zur Mathematik haben, stellt aber bereits die Formulierung eines Problems in mathematischen Ausdrücken bereits eine enorme Hürde da, neben der ChatGPT umso niedrigschwelliger erscheint. Diese beiden Welten miteinander zu verbinden, dürfte eine der Aufgaben bei der Entwicklung künstlicher Intelligenz der nächsten Jahre sein und sie erscheint angesichts des rapiden Fortschritts in diesem Bereich keineswegs unmöglich.
Struktur und Ereignis
Eine andere Stelle, an der ChatGPT, ohne, dass es uns groß überraschen sollte, gelegentlich scheitert, sind weitestgehend unbeachtete Ausnahmen. Und da bei der Softwareentwicklung ohnehin nicht viel gerechnet wird, dürften diese das größere Problem sein. Künstliche Intelligenz hat in bestimmten Lagen Schwierigkeiten, Ausnahmen, einmalige oder von der Normalität abweichende Ereignisse zu berücksichtigen. Das hängt, wie der vorangegangene Punkt, auch damit zusammen, dass ChatGPT keinerlei Verständnis von dem hat, worüber es Auskunft zu geben scheint. Auch damit, Quellen für eine vermeintliche Information anzugeben, tat sich ChatGPT dementsprechend schwer, wobei auch an dieser Stelle von OpenAI bereits nachgebessert wurde. Nehmen wir als Beispiel typische Schritte in der Entwicklung von Anwendungen, bei der wir uns von der künstlichen Intelligenz unterstützen lassen: Wir haben uns von ChatGPT erklären lassen, wie wir eine Webanwendung in einem uns bis dahin unbekannten Framework erstellen, alles hat geklappt, die Anwendung läuft, wir haben mit Unterstützung der KI-generierten Anleitung sogar erfolgreich externe Tools für die Darstellung der Weboberfläche eingebunden und wollen nun lediglich eine kleine Einstellung an einem einzelnen Element vornehmen. ChatGPT verrät uns voller Überzeugung, dass es an dieser Stelle eine ganz einfache Option gäbe, die gesuchte Einstellung vorzunehmen – bloß: Es gibt sie nicht. Die Struktur des Beispiels, das ChatGPT ausgibt ist richtig wiedergegeben, die Syntax scheint korrekt, alles passt zusammen. Aber die angebliche Einstellung ist nicht zu finden. Schnell wird klar, woher das Missverständnis stammt: In allen anderen Tools dieser Art gibt es sie. Möglicherweise gibt es sie auch noch bei anderen Tools desselben Anbieters, aber in genau unserem Fall nicht. Und während in der großen weiten Welt der Physik, der Logik, der Mathematik oder der Chemie alle Dinge dazu neigen, gewissen Regeln zu folgen, tun sie das in von Menschen erstellten Werkzeugen oft nicht. Der logische Schluss der KI war also naheliegend, er war zulässig, er war gewissermaßen zu intelligent für die wenig konsistente Welt der von Menschen geschaffenen Tools. Wäre die Abwesenheit der von uns gesuchten Einstellung ein im Internet viel besprochenes Phänomen, hätte ChatGPT möglicherweise eine konkrete Information darüber gehabt. So jedoch blieb nur der logische Schluss. Natürlich hätte die künstliche Intelligenz auch eine Antwort geben können wie: „Es tut mir leid, aber die Einstellung, die sie suchen, gibt es einfach nicht.“, aber die falsche Antwort, die wir bekommen haben, war einfach die wahrscheinlichere.
Was kann uns ChatGPT beantworten?
Wir können glücklicherweise darauf zählen, dass ChatGPT als Sprachmodell grundsätzlich auch Programmcode versteht. Nicht immer fehlerfrei in allen Details, aber doch in seiner Struktur. Das mag für Programmcode, der gemäß seines Zwecks sprachlichen Strukturen ähnelt, naheliegend erscheinen, ist aber in Kombination mit dem natürlichen Sprachverständnis ein großer Gewinn, denn: Wer bislang auf einen Fehler stieß, konnte über eine Google-Suche versuchen, den Fehler zu finden oder vielmehr, jemanden zu finden, der dieses Problem schonmal hatte und eine Lösung fand und so nett war, sie in einem der großen Foren mit dem Rest der Welt zu teilen – dazu aber braucht es häufig eine passende Fehlermeldung, einen konkreten Anhaltspunkt, irgendetwas, das sich in die Google-Suchleiste eingeben lässt. Und selbst dann, kann es doch immer wieder passieren, dass die Antworten, die wir finden gerade auf unseren speziellen Fall nicht zutreffen. An genau dieser Stelle ist die Unterstützung von ChatGPT Gold wert: Nicht nur, dass man den konkreten Abschnitt im Programmcode, um den es geht, mit der KI teilen kann – nein, wir können auch direkt noch erklären, was das Problem ist, was wir eigentlich vorhatten, was die Besonderheiten sind, wegen derer andere Lösungen nicht funktionieren und vor allem: Was wir gerne hätten: Einen guten Rat? Einen verbesserten Code? Oder einfach nur einen Hinweis auf das Fehlende Semikolon in Zeile 9.
An dieser Stelle ist ChatGPT nicht nur hilfreich in konkreten Fragestellungen, sondern, besser noch: Bei unklaren. Gerade bei Fehlern oder Problemen, die sich schwer fassen oder formulieren lassen, kommt eine große Stärke von ChatGPT zum Vorschein: Die vermeintliche Kreativität. Letzteres wird oft missverstanden als eine rein künstlerische Eigenschaft, die im technischen Bereich wenig Nutzen hätte, das Gegenteil ist aber der Fall. Allein ein Ausschnitt des Programmcodes mit der einfachen Frage, was daran das Problem sein könnte, bringt die KI dazu, in alle naheliegenden Richtungen Lösungsvorschläge zu generieren, ohne, dass wir erklären müssten, was wir mit unserem Code vorhatten. ChatGPT ist in seinen Antwortvorschlägen nicht auf Änderungen am Code beschränkt, sondern könnte uns genauso gut empfehlen, unseren Computer nochmal neu zu starten oder dasselbe nochmal mit einem anderen Browser oder einer anderen Einstellung an einer anderen Stelle zu versuchen.
Integrierte Tools
Für diese Art der Unterstützung ist es ohne weiteres notwendig, ChatGPT entweder rein sprachlich zu erklären, was zu tun ist, oder Teile des Codes zu kopieren und sie der KI zur Untersuchung vorzulegen. Je größer das Projekt jedoch ist, desto mühseliger wird diese Praxis. Zwar erinnert sich die KI an die zuletzt gestellten Fragen und kann durchaus verstehen, dass sich weitere Fragen auf dieselben Prämissen stützen wie vorhergegangen, jedoch kennt es nie das gesamte Projekt. Weder den gesamten Code noch die gesamte Ordnerstruktur oder weitere Tools, Erweiterungen, Einstellungen des Computers und all die vielen Dinge, die bei der Software-Entwicklung zusammenkommen. Für dieses Problem versprechen eine ganze Reihe von Werkzeugen Abhilfe, die sich in die Entwicklungsumgebung integrieren lassen und per Schnittstelle (API) mit ChatGPT kommunizieren. Die Begeisterung für diese Tools fällt bislang unter Entwickler:innen jedoch eher verhalten aus. Auf der einen Seite teilen sie dieselbe Fehleranfälligkeit, die auch bei der händischen Kommunikation mit ChatGPT zum Problem werden kann. Auf der anderen Seite fällt es ihnen auffallend schwer, die Gesamtheit des Projekts in ihre Überlegungen einzubeziehen. Das jedoch war von vornherein einer der Hauptgründe, sie zu nutzen. Am Ende erfüllen sie aber in den Fällen, in denen ChatGPT auch bisher hilfreich war, ihren Zweck: Sie ersparen Schreibarbeit, sie sind in der Lage erklärende Kommentare zu generieren oder Ergänzungen oder unmittelbare Umstrukturierungen innerhalb der jeweiligen Datei vorzuschlagen. Auch die Fähigkeit, vorhandenen Programmcode sprachlich zu erklären, kann in manchen Momenten hilfreich sein. Ein besonderes Augenmerk liegt hierbei auf der Weiterentwicklung des GitHub Copilot. Das zu Microsoft gehörende GitHub hat dieses Tool zur Unterstützung bei der Softwareentwicklung eigens zu diesem Zweck entwickelt und greift dabei auf das KI-Modell Codex von OpenAI zurück. Der Github Copilot steht aber im Verdacht, teilweise unsicheren Code zu generieren. Ein Versprechen der Entwickler besteht allerdings darin, dass der GitHub Copilot nicht nur die Daten, auf die ChatGPT zugreift, verwenden könne, sondern zumindest in gewissem Umfang auch von den Entscheidungen der Entwickler:in innerhalb des jeweiligen Projekts lernen könne – Ein Ansatz, der an Microsofts Intellisense erinnert, dass bislang für Codevorschläge in den Microsoft-Entwicklungsumgebungen zuständig war. Die Entwicklung des Office 365 Copilots, der Vorangegangene Fortschritt bei der Entwicklung von Intellisense, der GitHub Copilot sowie die Anteile, die Microsoft an OpenAI hält, geben Anlass zur Hoffnung, dass die integrierte KI-Unterstützung bei der Entwicklung im Microsoft-Umfeld diese Schwierigkeiten in naheliegender Zukunft überwinden könnte.
Die intelligente Suchmaschine
Was ChatGPT uns in jedem Fall bereits liefern konnte, sind einige andere Punkte, die kleinere Fehler und Ungenauigkeiten am Ende doch wettmachen: Wir können ChatGPT bitten, uns in dieser oder jener Form einen Überblick darüber zu verschaffen, wie etwas funktioniert und im Zweifel an bestimmten Stellen genauer nachhaken. Auch, wenn wir die Beschreibung im Internet finden würden – sie für uns und nach unseren Wünschen und Anforderungen zusammenzufassen oder zu erklären ist eine bislang nicht dagewesene Fähigkeit eben jener KI, die an so vielen stellen noch nicht so intelligent erscheint, wie der Name verspricht. Genau diese Fähigkeit ist auch außerhalb der Softwareentwicklung eine der großen Stärken des Systems und verspricht, auch in Zukunft viel Zeit zu ersparen, die wir mit der Suche nach einem Überblick, einer Zusammenfassung, einer verständlichen Erklärung verbracht hätten, für die der Blick in den Wikipedia-Artikel nicht ausgereicht hätte.
Neben allen offensichtlichen Vorteilen einer KI, die natürliche Sprache interpretieren und generieren kann, drängt sich ChatGPT in eine Nische, die auf der Liste der vorhergesagten Auswirkungen der öffentlichen Verfügbarkeit einer Sprach-KI nicht unbedingt ganz oben stand: Der Chatbot ist in vielerlei Hinsicht eine ernstzunehmende Konkurrenz zu einer der großen Selbstverständlichkeiten in der Welt der Internetrecherche: Mit großem Abstand zur Konkurrenz war Google über Jahre die meistgenutzte Suchmaschine im Internet. Abgesehen von Social Media hat wenig den persönlichen Umgang mit dem Internet so geprägt, wie die Google-Suche als Ausgangspunkt jeder Online-Aktivität. Mit ChatGPT eröffnet sich allerdings eine weitaus bequemere Möglichkeit an Informationen zu gelangen. Sowohl die Eingabe von Suchbegriffen ist weniger sperrig, weil das System selbst natürliche Sprache in ihrer Struktur interpretieren kann, als auch die Ergebnisse. Die zuvor genannten Zusammenfassungen, die ChatGPT zu einem Thema geben kann, entsprechen nicht nur dem Format, um das wir bei der Suche gebeten hatten, sie sind auch noch schneller erreicht. Die gesuchten Ergebnisse liegen unmittelbar vor, ohne lästiges Sortieren, vorbei an gesponserten Ergebnissen, gefolgt von der Suche nach dem entscheidenden Absatz auf diversen Seiten, die uns als Ergebnis angezeigt wurden. Einige Zeit trug ChatGPT an dieser Stelle einen ganz erheblichen Nachteil gegenüber Google mit sich: Es suchte keine Informationen im Internet. Jedenfalls nicht im gesamten gegenwärtigen Internet. Ob OpenAI es schaffen würde, diese Lücke zu schließen, war nicht so sicher wie einige vermuten mögen, denn die Entwickler:innen von ChatGPT haben wenig Interesse daran, dass ChatGPT ungefiltert sexistische, rassistische, gewaltverherrlichende oder pornographische Inhalte wiedergibt, von denen das Internet leider voll ist. Seine Sprache hat ChatGPT von ausgewählten Inhalten gelernt, und da, wie bereits mehrfach erwähnt, die KI selbst nicht unbedingt weiß, wovon sie spricht, vertraute OpenAI ihr – möglicherweise zurecht – wenig, wenn es darum geht, Inhalte in Echtzeit nach eigenem Ermessen zu filtern. Wer ChatGPT nutzte und Fragen zum Zeitgeschehen stellte, musste sich also mit dem Hinweis abfinden, dass zu aktuellen Themen leider keine Informationen vorliegen. Der erste Versuch, ChatGPT ans Internet anzubinden scheiterte an der Möglichkeit, mit der Erweiterung „Browsing with ChatGPT“ Paywalls zu umgehen. Seit Ende 2023 kann ChatGPT allerdings grundsätzlich auf das Internet zugreifen und ist damit auch nicht mehr auf Daten bis 2021 beschränkt.