Generative KI • Azure OpenAI • GPT

ChatGPT verändert die Softwareentwicklung

24. Oktober 2023

Generative KI ist seit ChatGPT in aller Munde und wird die Welt verändern – so jedenfalls der gängige Superlativ, der überall zu hören ist. Was ist da dran und was bedeutet das für uns als Softwareentwickler?

Das Thema “generative KI” wird zur Zeit in allen Facetten und in allen möglichen Kreisen diskutiert, von Heise bis zu Lanz und der Tagesschau. Dabei wird wahlweise Goldgräberstimmung geschürt oder der Weltuntergang proklamiert, die Lösung für den Fachkräftemangel oder eine Flut an prekären Arbeitsplätzen, die Möglichkeit, neue Dinge zu schaffen oder die Ausbeutung von Content-Schaffenden.

 

autor Alexander Jung

Alexander Jung

Chief eXpert Alexander.Jung@sdx-ag.de

In der Praxis stellt sich für Unternehmen eher die Frage: Wie kann generative KI sinnvoll eingesetzt werden? Konkreter: Wie können vorhandene Use Cases damit verbessert werden? Und wo tun sich neue Anwendungsfälle auf? Auch und besonders im Hinblick auf Wettbewerbsfähigkeit und Marktdifferenzierung?

Und als Entwickler (der sonst wenig mit KI zu tun hat) fragt man sich: Was heißt das für mich? Hilft mir das im Projekt? Und wie kann ich es einsetzen?

Wir haben das Thema in den letzten Wochen für uns aufgerollt und aus unterschiedlichen Blickwinkeln betrachtet: Markt, Technik, rechtliche Rahmenbedingungen, Blick in die Glaskugel. In diesem und den folgenden Beiträgen werden wir diese Erkenntnisse teilen.

Worüber reden wir eigentlich?

KI ist schon länger ein Thema, zum Beispiel im Bereich Industrie 4.0 („Wann muss die Maschine gewartet werden?“) oder bei Betrugs- und Geldwäscheerkennung. Aber mit der Veröffentlichung von ChatGPT Ende 2022 hat das Thema eine neue Qualität bekommen und in der Folge einen industrieweiten Trend angestoßen, der beinahe jeden Tag neue Schlagzeilen produziert.

Um zu verstehen, worin dieses Neuerung besteht, muss man etwas tiefer eintauchen: Wir befinden uns hier im Bereich der KI und dort speziell im Bereich des Machine Learning bzw. Deep Learning.

Hinweis: Ich werde hier nicht auf die Grundlagen von Machine Learning eingehen. Wer sich für neuronale Netze und unterschiedliche Trainingsmethoden interessiert, findet dazu mehr als genug Informationen im Internet.

Das folgende Bild versucht einige wiederkehrende Produkte und Begriffe einzuordnen, um sich nicht im Dschungel der Schlagwörter zu verlieren.

Begriffe und Zusammenhänge

Für das Training eines Modells (supervised und unsupervised, ggf. auch mehrere Iterationen) werden große Mengen an Eingangsdaten benötigt. Diese werden in kleine Bestandteile zerlegt, die Tokens – bei Text zum Beispiel Wörter oder Wortfragmente. Das Ergebnis ist im Grunde eine Sammlung an statistischen Informationen, wie diese Tokens zueinander in Beziehung stehen.

Die bisherigen (man muss fast schon sagen „klassischen“) Modelle waren gut für Analysen geeignet. Sie schlugen sich jedoch weniger gut, wenn es um die Erstellung neuer Inhalte ging – also der Schritt zu generativer KI. Das änderte sich mit GPT-3.5 durch Hinzunahme neuer Trainingstechniken, dem Reinforcement Learning und menschlichem Feedback.

Dazu kommt, dass sich auch die Menge des Trainingsmaterials massiv erhöht. Am Beispiel GPT und der Anzahl der Parameter: Mit jeder neuen Generation kommt hier ein Faktor 10 oder 100 hinzu:

Das Wachstum der Anzahl der Parameter

(vgl. https://en.wikipedia.org/wiki/Generative_pre-trained_transformer)

Übrigens stellt OpenAI mit Whisper eine KI zur Spracherkennung zur Verfügung. Wenn alle Wikipedias und Gutenberg-Projekte verarbeitet sind, lassen sich damit YouTube und Instagram als Trainingsmaterial nutzen.

Modell vs. Prompt vs. Anwendung

Die resultierenden Modelle – um genau zu sein gibt es unterschiedliche Ausprägungen von GPT-3.5 bzw. GPT-4, die sich in Performance und Genauigkeit unterscheiden – stehen auch uns Entwicklern zur Verfügung. Für den Zugriff auf diese Modelle stellt OpenAI – die Firma hinter ChatGPT – entsprechende APIs bereit. Und dank ihrer Partnerschaft ist hier auch Microsoft mit Azure OpenAI im Boot.

Wichtig zum Verständnis: Die GPT-Modelle arbeiten prompt-basiert. Das heißt, man sendet einen Text (eben den Prompt) und bekommt als Antwort ebenfalls einen Text. Der Prompt enthält dabei nicht nur die eigentliche Frage, sondern auch Informationen zum Kontext, Anweisungen, wie sich die KI verhalten soll, und ähnliches. Bei einem Chat-Bot schließt dies zum Beispiel den bisherige Chat-Verlauf mit ein. Die Qualität der Antworten hängt vielfach von der Art ab, wie man dem Prompt formuliert. Das hat bereits zum neuen Tätigkeitsfeld „Prompt Engineering“ geführt. Aber auch zu „Prompt Injection“ (analog SQL Injection) als neuem Angriffsvektor.

ChatGPT schließlich ist nicht die KI, sondern eine Anwendung, die GPT-3.5 (bzw. GPT-4) als Modell nutzt.

Ergebnisse

ChatGPT liefert beeindruckende Ergebnisse. Fragen Sie einfach mal: „Wie unterscheiden sich Flugzeuge und Schiffe?“. Man bekommt eine Antwort, die die Unterschiede nach verschiedensten Kriterien auflistet: Funktionsprinzip, Geschwindigkeit, Einsatzgebiet, Antrieb und weitere.

Ähnliches gilt für Bildgeneratoren wie Stable Diffusion: Ein Berggipfel bei Sonnenaufgang? Im Stil von van Gogh?

Stable Diffusion: Ein Berggipfel im Morgengrauen Stable Diffusion: Ein Berggipfel im Morgengrauen, im Stil von van Gogh

Andererseits neigen generative KI’en auch zum Halluzinieren, Beispiele dafür gibt es genug.

Man muss sich klar machen, dass diese Modelle die Frage nicht „verstehen“, dass sie also keine geistige Transferleistung erbringen. Sie basieren auf Statistik und enthalten keine Informationen darüber, was sie nicht wissen.

Deshalb kann ChatGPT beispielsweise die Höhe des Teide (höchster Berg in Spanien, Teneriffa) in Zoll, aber nicht in astronomischen Einheiten angeben, obwohl eine Umrechnung hier sehr wohl möglich wäre. Und Stable Diffusion liefert Chimären, wenn man nach einer Hand fragt:

Stable Diffusion: Chimären

Im Kontext eines Projektes heißt das, dass Use Cases im Zusammenhang mit KI immer auch die Verifikation und Korrekturmöglichkeiten der Ergebnisse durch den Anwender berücksichtigen müssen.

Will man die Ergebnisse einer Chat-Abfrage über eine einfache Wiedergabe hinaus nutzen, dann ist ein Text als reine Prosa wenig geeignet. Aber auch hier kann man ChatGPT mit Hilfe des Prompts steuern. Die Frage nach Flugzeugen und Schiffen lässt sich z. B. einfach um „Gib mir das Ergebnis als Tabelle im CSV-Format.“ ergänzen. In der Praxis wird man hier mehr tun müssen, aber damit sind wir tief im oben erwähnten Prompt Engineering.

 

Nachvollziehbarkeit

Ein Ergebnis zu haben ist eine nützliche Sache, aber wie die KI zu diesem Ergebnis kommt, kann ebenso wichtig sein. Sei es, um die Korrektheit einer Aussage zu überprüfen, oder weil sich aus der Verwendung rechtliche Konsequenzen ergeben. Diese Nachvollziehbarkeit läuft unter dem Stichwort Explainable AI (XAI) und schließt den Kreis im einleitenden Bild.

Explainable AI ist ein wichtiger Zweig der aktuellen Forschung; hier nur einige Links zum Thema:

Wir werden in einem späteren Beitrag nochmal ausführlicher darauf zurückkommen (müssen), daher kann ich es an dieser Stelle bei diesen Hinweisen belassen.

Fazit

Abseits allen Hypes und aller Panikmache: Generative KI wird in unserem Projektalltag Einzug halten, das steht für mich außer Frage. Das betrifft zum einen die Werkzeuge zur Erstellung der Software (GitHub Copilot, Bing Chat, …). Aber KI’en werden sicher auch in produktiven Services, als Teil meiner Software, zunehmend Verwendung finden.

Dieser Beitrag sollte ein grundlegendes Verständnis dafür schaffen, was da auf uns zukommt – für die Fähigkeiten, aber auch die Grenzen. Im Hinterkopf muss man dabei auch behalten, dass die Entwicklung hier rasant voranschreitet; der Status von heute kann morgen schon wieder hinfällig sein.

 

Die folgenden Beiträge werden auf Fragestellungen eingehen, die mich als Architekt in einem Enterprise-Projekt umtreiben. Wie spreche ich Azure OpenAI an und wie setzte ich einen konkreten Use Case um? Wie passt das mit meinem DevOps-Prozess zusammen? Aber auch: Welche rechtlichen und regulatorischen Rahmenbedingungen muss ich beachten?