Seit einigen Tagen beschäftige ich mich damit, ChatGPT als Entwickler-Werkzeug zu nutzen, habe auch schon einige eigene Experimente mit gemischten Ergebnissen erzielt und habe mich gefragt, wie weit mich ChatGPT bei der täglichen Arbeit helfen kann schneller, besser und effizienter Software zu entwickeln.
Da ich bisher nur mit dem Generieren von Source-Code Erfahrungen gemacht habe, werde ich hier auch meine Gedanken zu genau dem Thema zusammenschreiben. Alle anderen Aspekte der Software-Entwicklung blende ich hier erst mal aus. Auch das Thema Lizenzen und Rechte werde ich der Einfachheit halber erst mal nicht weiter beleuchten. Evtl. mache ich mir dazu in einem späteren Blog-Post mal Gedanken.
Open Source vs. Closed Source
Bei Closed-Source Software wird in der Regel der Quellcode nicht für die Öffentlichkeit freigegeben. Closed-Source-Software wird von einem Team gepflegt, das sein Produkt in einem kompilierten und ausführbaren Zustand herstellt. Fast alle Softwareunternehmen arbeiten mit diesem Geschäftsmodells, obwohl auch in Closed-Source Software sehr häufig Open-Source Komponenten verwendet werden.
Das FOSS (Free and Open Source Software) Modell ermöglicht es Nutzern, den Quellcode eines Produkts einzusehen und zu verändern, so dass keine Abhängigkeit von einem Hersteller entsteht. Die von den Befürwortern von Open Source angeführten Vorteile sind Vertrauen, Akzeptanz, Teamarbeit und Qualität und Innovation.
ChatGPT als Entwickler Werkzeug
ChatGPT heute schon als Entwickler Werkzeug zu verwenden ist vermutlich noch keine so gute Idee, auch wenn viele der Experimente, die heute schon damit gemacht werden, gute Ergebnisse liefern. Aber es schleichen sich immer wieder kleinere und größere Probleme ein. So hat z.B. die Entwicklerplattform Stack Overflow alle von ChatGPT erstellen Antworten gebannt, da mit ChatGPT erstellte Antworten eine miserable Qualität haben.
Quelle: https://meta.stackoverflow.com/questions/421831/temporary-policy-chatgpt-is-banned
Zitat: Overall, because the average rate of getting correct answers from ChatGPT is too low, the posting of answers created by ChatGPT is substantially harmful to the site and to users who are asking or looking for correct answers.
Aber bei der rasanten Entwicklung, die das GPT-X Model gerade durchläuft, ist es vermutlich nur noch eine Frage der Zeit, bis ChatGPT als vollwertiges und hocheffizientes Entwickler-Werkzeug genutzt werden kann.
Closed Source Einschränkungen von ChatGPT
ChatGPT basiert aktuelle auf dem GPT-3 Transformer Model von OpenAI. Es lernt durch die Verarbeitung von Texten, die die im Internet frei zugänglich sind. Informationen, die sich hinter Firewalls von Unternehmen verstecken sind für das Training des Models nicht sichtbar und daher kann ChatGPT auch keine Antworten auf Fragen geben, die sich auf Closed-Source Software bzw. Inhouse-Frameworks beziehen. Aus dem Grund wird ChatGPT als Entwickler Werkzeug bei Fragen zu diesen Themen weitestgehend versagen.
Es ist wie der Unterschied zwischen einem Mittelklasse-Entwickler, der schon seit Jahren in der Firma als Entwickler beschäftigt ist und einem Top-Performer, der aber noch nie die firmeninternen Sourcen gesehen hat bzw. die Prozesse kennt – ohne Insider Wissen kommt man in den meisten Fällen nicht weit.
Von daher wird ChatGPT den gleichen Einschränkungen unterliegen, wie jeder andere Entwickler auch. Ohne Zugriff auf die firmeninternen Sourcen, Tickets, Git-Commits, Pull-Request, API-Dokus, Slack-Chats, etc. wird die KI nie lernen können wie das Inhouse-Framework zu verwenden ist oder die Closed-Source Software weiterentwickelt wird.
Vorteile der Open Source Software
Open-Source Software verfügt hier über einen enormen Vorteil gegenüber Closed-Source, da alle Informationen zu der Software frei verfügbar sind. So kann ChatGPT aus den Sourcen, Tickets, Git-Commits, Pull-Request, API-Doku, Slack-Chats, Übersetzungen, etc. lernen wie die Software aufgebaut ist und weiterentwickelt, wird.
Da in vielen Closed-Source Produkten auch Open-Source Artefakte verwendet werden, ist die Unterstützung eines Entwicklers von Closed-Source Produkten durch ChatGPT nicht völlig unmöglich, aber doch stark eingeschränkt und besonders die Problemstellungen, zu denen man bei StackOverflow oder GitHub nichts findet, wird auch ChatGPT überfordert sein. Sollte sich ChatGPT oder eine ähnliche Lösung wirklich zu einem Entwickler-Tool mausern, und danach sieht es wirklich aus, wird Open-Source daher viel stärker von den Vorteilen profitieren als Closed-Source.
Soll ich nun Open-Source machen?
Grundsätzlich ist es erst mal keine schlechte Idee. Open Source bedeutet ja nicht, dass man mit der Software kein Geld verdienen darf. Es gibt diverse Open-Source Lizenzen und mindestens genauso viele Geschäftsmodelle, die mit Open-Source Software funktionieren können.
Aber es reicht nicht, die Quellen der Software in ein offenes GitHub Repository zu kopieren. Open Source ist mehr als nur zugänglicher Source-Code. Ohne eine Community um das Produkt herum passiert nichts.
Hinzu kommt, dass man sich auch darüber Gedanken machen muss, welche Konsequenzen das Öffnen der Sourcen haben kann. Es können unbekannte Sicherheitslücken aufgedeckt und ausgenutzt werden können, die Konkurrenz könnte sich bedienen oder ein nicht lizenzkonformer Einsatz von Open-Source Komponenten könnte sichtbar werden. Daher muss vorher genauestens geprüft werden, welche Chancen und Risiken sich aus diesem Schritt ergeben.
Trotzdem macht es meiner Meinung nach Sinn, eine Strategie hin zu Open Source zu entwickeln, sofern es möglich ist, da neben kleineren und mittelgroßen Firmen auch immer mehr Behörden und Konzerne auf Open-Source setzen und Tools wie ChatGPT das Open-Source Ökosystem weiter unterstützen und stärken. Für Closed-Source Software wird es jedenfalls nicht einfacher.
Ausblick und Probleme
Meiner Meinung nach ist ChatGTP ein Werkzeug, dass den Vorsprung von Open Source Software zu Close Source Software noch vergrößern wird, da Entwickler von Closed Source Software nicht so sehr von diesem mächtigen Werkzeug profitieren werden. Die Developer-Experience ist schon jetzt richtig gut, auch wenn es noch viele Punkte gibt an denen OpenAI nachbessern kann. Vergleicht man aber GPT2 mit GPT3 und extrapoliert die Entwicklung auf GPT4, kann man sich in etwa vorstellen, was da gerade auf uns zukommt. Das Sprachmodell, GTP-3 ist 100-mal größer ist als GPT-2, mit 175 Milliarden Parametern und GPT-4 wird noch mal um den Faktor 500 größer werden als GPT-3. Details dazu kann am z.B. hier (https://towardsdatascience.com/gpt-4-will-have-100-trillion-parameters-500x-the-size-of-gpt-3-582b98d82253) nachlesen.
Das größte Problem, dass ich hier sehe, ist die Aktualität der Daten. Es ist leider (noch) nicht möglich, dass Deep-Learning Netzwerk jede Nacht oder wenigstens jede Woche zu aktualisieren, so dass man immer auf dem aktuellen Stand ist, da das Training eines solchen Netzes Unmengen an Server-Ressourcen verschlingt. Daher werden aktuelle Informationen immer deutlich verzögert verfügbar sein. Ich bin mir aber sicher, dass dieses Problem bei OpenAI schon adressiert ist und daran gearbeitet wird.
Ein weiteres Problem ist die Qualität der Ergebnisse, denn auch wenn die Chat-Ausgabe von GPT-3 auf den ersten Blick wirklich beeindruckend ist, sind bei genauerer Betrachtung doch die Schwierigkeiten zu erkennen. Oft handelt es sich um Code, der so nicht funktionieren kann oder die Aufgabe nicht erfüllt. Dann ist es nötig, diese Probleme zu identifizieren und entweder selbst zu beheben oder ChatGPT darum zu bitten, nachzubessern. Das funktioniert auch ganz gut, aber nur wenn man das Problem erkennt und weiß, wie man die Aufgabe korrekt formuliert. Hier ist Übung angesagt, denn wie bei jedem Werkzeug muss, man auch bei diesem Werkzeug erst den Umgang damit lernen. StackOverflow hat z.B. schon verboten, Antworten von ChatGPT zu posten (Use of ChatGPT1 generated text for content on Stack Overflow is temporarily banned. https://meta.stackoverflow.com/questions/421831/temporary-policy-chatgpt-is-banned). Da die Qualität nicht ausreichend ist – was aber bei den Antworten, die bei StackOverflow gelegentlich von Menschen gegeben werden, auch sagen kann. Es ist sicher keine gute Idee, sich in Zukunft ganz auf ChatGPT zu verlassen, da es im schlimmsten Fall irgendwann verkauft, verschlimmbessert oder komplett abgeschaltet wird. Wenn man dann davon abhängig ist, hat man ein Problem.
Dem Test von Software wir vermutlich in Zukunft eine wesentlich größere Bedeutung zugemessen, da generierte Software-Komponenten wesentlich intensiver getestet werden müssen um die Abdeckung von Funktionalität, Sicherheit, Ressourcen-Nutzung und anderer funktionaler und nicht funktionaler Anforderungen zu gewährleisten.
Auch das Thema „Explainable AI“ wird bei so großen Deep-Learning Modellen eine echte Herausforderung. Denn es wird vermutlich nie eindeutig nachvollziehbar werden, auf welche Weise der GTP-X Algorithmus zu seinen Ergebnissen kommt. Ohne Explainable AI gleicht die Arbeit mit ChatGPT einem Black-Box-Vorgang, bei dem es dem Anwender nicht möglich ist, zu verstehen, warum ChatGPT tut was es tut. Das mag trivial klingen, aber Wenn ein Werkzeug nicht funktioniert wie es soll und man nicht versteht warum, hat man keine Möglichkeit, das Problem zu beheben und es wird unbrauchbar.
Evtl. wird es in Zukunft auch Inhouse Lösungen geben, bei denen ein Pretrained-Network gekauft werden kann, dass dann um die Firmeneigenen Informationen (Doku, Sourcen, Git-Commits, Pull-Request, etc.) ergänzt wird und damit auch ausreichend Informationen über die Closed-Source Software besitzt um das Werkzeug auch für Nicht-Open-Source Software einsetzen zu können. Das würde aber bedeuten, dass es notwendig ist, die eigenen Daten in das Netzwerk zu laden und dann eine ChatGPT Instanz On-Premise laufen zu lassen. Ich bin ziemlich sicher, dass es in naher Zukunft solche Lösungen geben wird. Spätestens wenn sich ChatGPT als Entwickler-Werkzeug etabliert hat, wird der Bedarf wachsen und es wird Anbieter geben, die den Bedarf erfüllen.
Greg Brockman (President & Co-Founder @OpenAI) hat das in einem Tweet (https://twitter.com/gdb/status/1612986134048698369) ja schon etwas in dieser Richtung angedeutet.
Zitat: Working on a professional version of ChatGPT; will offer higher limits & faster performance. If interested, please join our waitlist here: https://docs.google.com/forms/d/e/1FAIpQLSfCVqahRmA5OxQXbRlnSm531fTd8QBdUCwZag7mI9mrlOOIaw/viewform.
Was sagt ChatGPT dazu?
Zum Schluss noch die Meinung von ChatGPT zu dem Thema.
Frage:
Welche Vorteile haben Open Source Softwareentwickler im Vergleich zu Closed Source Softwareentwickler bei der Nutzung von ChatGPT?
Open Source Softwareentwickler haben im Vergleich zu Closed Source Softwareentwicklern einige Vorteile bei der Nutzung von ChatGPT:
- Zugang zum Quellcode: Open Source Softwareentwickler haben Zugang zum Quellcode von ChatGPT und können diesen einsehen, verstehen und anpassen. Das ermöglicht es ihnen, das Tool besser zu verstehen und gegebenenfalls Anpassungen vorzunehmen, um es für ihre spezifischen Anforderungen besser geeignet zu machen.
- Freie Verfügbarkeit: ChatGPT ist eine Open Source Software und damit für jedermann frei verfügbar. Das bedeutet, dass Open Source Softwareentwickler es ohne finanzielle Kosten nutzen können.
- Möglichkeit zur Beteiligung: Open Source Softwareentwickler haben die Möglichkeit, sich an der Entwicklung von ChatGPT zu beteiligen und ihren Beitrag zu leisten. Sie können beispielsweise neue Funktionen entwickeln, Fehler beheben oder Dokumentation schreiben.
- Gemeinschaftliche Unterstützung: Durch die Beteiligung an einer Open Source Software profitieren Softwareentwickler von der Unterstützung und dem Wissen der anderen Mitglieder der Entwicklergemeinschaft. Sie können sich gegenseitig helfen und voneinander lernen.
OK, die Antwort ist total am Thema vorbei und auch noch falsch, also noch mal.
Frage:
Kann ChatGPT Entwicklern helfen, Software zu erstellen, die nicht auf Open Source aufbauen?
Antwort:
Ja, ChatGPT kann Entwicklern dabei helfen, Software zu erstellen, die nicht auf Open Source aufbaut. ChatGPT ist ein Open Source Tool, das für die Erstellung von Chatbots verwendet wird. Chatbots sind Programme, die es ermöglichen, über einen Chat oder eine andere Art von Textinterface mit einem Computer zu kommunizieren. ChatGPT kann also verwendet werden, um Chatbots zu erstellen, die in jeglicher Art von Software integriert werden können, egal ob diese auf Open Source oder Closed Source aufbaut.
Es ist jedoch wichtig zu beachten, dass ChatGPT selbst eine Open Source Software ist. Das bedeutet, dass jeder Zugang zum Quellcode hat und das Tool für jegliche Zwecke verwenden kann, solange die Bedingungen der entsprechenden Open Source Lizenz eingehalten werden. Wenn Entwickler ChatGPT in ihre Closed Source Software integrieren möchten, müssen sie sich daher an die Bedingungen der Open Source Lizenz halten.
Naja, nicht die Antwort, die ich erhofft hatte, aber ein Versuch war es wert. Interessant ist, das ChatGPT immer darauf verweist, dass ChatGPT selbst eine Open Source Software ist. Also mal fragen, wo die Sourcen liegen.
Frage:
Wo finde ich die Sourcen zu ChatGPT?
Antwort:
Die Sourcen von ChatGPT sind auf GitHub verfügbar. Sie können den Quellcode von ChatGPT unter folgendem Link einsehen und herunterladen:
https://github.com/openai/chatbot
Um den Quellcode von ChatGPT herunterzuladen, müssen Sie zunächst ein GitHub-Konto einrichten und dann auf den Button „Clone or download“ klicken, um den Quellcode entweder als ZIP-Datei herunterzuladen oder mittels git zu clonen.
Ich hoffe, dass ich Ihnen damit weiterhelfen konnte! Sollten Sie weitere Fragen haben, zögern Sie nicht, mich zu kontaktieren.
Leider bekommt man unter https://github.com/openai/chatbot nur noch die Octocat im Star-Wars Style mit dem Github 404 error ‚This is not the webpage you are looking for‘. Wie es scheint, ist diese Information etwas veraltet.
Fazit
Das Chat-GTP oder ein ähnliches Produkt in Zukunft ein Entwickler-Werkzeug wird, dass wir alle regelmäßig nutzen, steht außer Frage. Ob es das Potential hat, eine disruptive Technologie zu sein, die das Programmieren wie wir es heute kennen wird die Zukunft zeigen. Meine Vermutung ist, dass vor allem einfache Software, die keine komplexen Aufgaben erfüllen in Teilen auch von einer KI geschrieben werden können. Das könnte auch dem Fachkräftemangel entgegenwirken, der seit einigen Jahren anhält und es wird viele Nicht-Programmierer dabei unterstützen, Ideen zu realisieren, was ohne dieses Werkzeug undenkbar gewesen wäre. Das Open-Source Software stärker von einem Werkzeug wie ChatGPT profitieren wird als Closed-Source steht auch außer Frage. Das bedeutet aber nicht zwangsläufig, dass man seine Produkte in Zukunft alle unter einer Open-Source Lizenz veröffentlichen sollte.