AI – Driven Software Engineering

Die Entwicklung der Künstlichen Intelligenz ist kein neues Thema. Turing befasst sich schon 1950 damit in seinem bekannten Papier Computing machinery and intelligence1 in dem er den später nach ihm benannten Turing Test vorstellt. Es dauert kein Jahrzehnt bis die ersten Neuronalen Netze vorgestellt werden2.

I propose to consider the question, “Can machines think?”

Alan M. Turing, Computing machinery and intelligence 1950

Es sollte wiederum einige Jahrzehnte dauern bis 20173 die Grundlagen für die Großen Spachmodelle (Large Language Models, LLMs) gelegt werden. Durch die ausgezeichnete verarbeitung von natürlicher sprache sind LLMs sehr vielfältig einsetzbar. Anwender müssen keine KI-Spezialisten oder Informatiker sein um mit dem system interagieren zu können, da das LLM nahezu keine Einschränkungen an die Nutzereingabe auferlegt und Semantik der Eingabe sehr gut verarbeiten kann.

Nutzer:
Warum können Gespenster so schlecht lügen ?

ChatGPT:
Weil sie leicht zu durchschauen sind !

GPT-4 April 2024

Es stellen sich zwei Fragen: (1) Was genau ist diese ’neue‘ KI ? und (2) Wo können wir sie produktiv einsetzen ?

Generative AI (genAI)

Transformer Architektur aus dem Papier „Attention Is All You Need“

Künstliche Intelligenz ist ein sehr allgemeiner Überbegriff der sehr unklar definiert ist. Neben Neuronalen Netzen werden auch gerne simple Entscheidungsbäume als KI eingestuft. Wir betrachten primär die Generative Künsliche Intelligenz, also Systeme, die darauf trainiert sind, Inhalte zu erzeugen, die von menschlich erstellten Inhalten kaum zu unterscheiden sind. Dazu gehören Texte, Bilder, Musik und sogar Code. Beispiele sind GPT4 (Generative Pretrained Transformer) für Texterzeugung, DALL-E (für Bildgenerierung), und Codex (für die Programmierung).

Die oben genannten Beispiele setzen alle auf eine durch LLMs ermöglichte Transformer Architektur. Hierbei sind zwei Aspekte ausschlaggebend: Die grundlage eines LLMs bildet ein Neuronales Netz. Dieses wird auf Texten trainiert wobei nicht nur die Position der Worte im Text sondern auch der Bezug der Worte zueinander trainiert wird.

Nutzer:
Es gibt ein Auto und eine Kutsche. Sie ist Blau. Welche Farbe hat das Auto ?

ChatGPT:
Die Information, dass „sie ist Blau“ bezieht sich auf eines der beiden Objekte – das Auto oder die Kutsche. Da im Deutschen das Geschlecht (Genus) von Nomen berücksichtigt wird und „sie“ typischerweise für weibliche Substantive verwendet wird, würde ich normalerweise nach dem Genus der beiden Nomen (Auto und Kutsche) schauen, um zu bestimmen, auf welches sich „sie“ bezieht. Allerdings sind sowohl „das Auto“ als auch „die Kutsche“ neutrale bzw. weibliche Nomen, wobei „die Kutsche“ weiblich ist. Daher würde ich interpretieren, dass die Kutsche blau ist, basierend auf der grammatischen Übereinstimmung von „sie“ mit „die Kutsche“. Das bedeutet, dass die Farbe des Autos nicht angegeben wurde.

GPT-4 April 2024

Die Fähigkeit Bezüge bzw. auch implizite Bezüge durch vorausgehendes Training (Generative Pretrained Transformer) zu erkennen verbessert die Fähigkeit des GPTs dramatisch zu einem übergebenen Text eine passende Antwort zu erzeugen. Hierzu gibt GPT zu einem Input lediglich das warscheinlichste nächste Wort (bzw. textelement, auch bezeichnet als Token) aus, dies setzt sich iterativ auch bei der Bildung der eigenen Ausgabe fort, bis die Antwort des GPTs fertig gestellt ist.

Der zweite wichtige Aspekt ist die Ausgibigkeit des Trainings. LLMs sind große Spachmodelle die auf enormen Datenmengen trainiert wurden und somit sehr gut die nuancen der Menschlichen Sprache verarbeiten können. Eingaben können Grammatikalisch ungenau, rechschreibfehlerbehafet und umgangsprachlich formuliert sein da das LLM in seinen Trainingsdaten diese Formulierungen bereits verarbeitet hat.

Nutzer :
Überführe den Folgenden Satz in korrekte Rechtschreibung und Grammatik: „Modelgetibene Softwär Enticklunk ein sehr spannendes Thema ist!!“

GPT-4:
Der Satz in korrekter Rechtschreibung und Grammatik lautet:
„Modellgetriebene Softwareentwicklung ist ein sehr spannendes Thema!“

GPT-4 April 2024

GPTs sind also ein mächtiges Werkzeug um natürliche Sprache zu verarbeiten. Da sie aber auf Neuronalen Netzen basieren sind sie zum einen nicht transparent bzw. es ist nicht nachvollziehbar wie eine Ausgabe zustande gekommen ist, und zum anderen sind sie nicht deterministisch Wiederholtes Ausführen kann zu unterschiedlichen Ergebnissen führen.

Anwendung in der Software Entwicklung

Die Software Entwicklung ist ein sehr komplexes Thema, welches mit vielen Einstiegshürden belastet ist. Häufig sind Programmierkenntnisse, Erfahrung in der Systemmodellierung, Domänenspezifische kenntnisse und viele Absprachen zwischen den Stakeholdern der zu entwickelnden Plattform notwendig um erfolgreich Software zu entwerfen. Generative Künstliche Intelligenz kann uns jetzt schon Teile dieser Aufgaben abnehmen und somit die Entwicklung beschleunigen5. Assistenten wie Microsofts CoPilot6 können Programmierer bei der Erstellung von teilabschnitten von Source Code unterstützen, bisher gibt es aber noch wenige ansätze, welche sich mit dem Modellierung und der Generierung von Gesamtsystemen befassen.

Generative Methoden können mit textuellen Modellen Systeme oder auch nur Teile von Systemen erzeugen. Ein Generator kann ein Textuelles Modell verarbeiten und daraus z.B. Source Code erzeugen. Je nachdem für welchen Zweck Source Code erzeugt werden soll, können hier unterschiedliche Modellierungssprachen verwendet werden. Klassen Diagramme eignen sich um Datenstrukturen zu modellieren während z.B. Sequenzdiagramme besser Prozessabläufe abbilden können.

Modellerzeugende Sprachmodelle

Die definition von guten Modellen erfordert Vorwissen. Entwickler müssen Modellierungskonzepte, die Syntax der verwendeten Modellierungssprache und den Anwendungsfall gut kennen. LLMs können uns vor allem in den ersten beiden Aspekten unterstützen. Durch promptengineering können wir LLMs Modellierungssprachen beibringen78. Hierzu nutzen wir eine Kombination aus Few-Shot-Learning9, Retrieval-Augmented Generation10 und Instruktionen um natürlich Sprachigen Input in ein Textuelles Modell in einer Modellierungssprache unserer wahl zu transformieren.

Probieren Sie die von der Acronio definierten LLMs-Varianten einfach aus:

LLMs die für die erzeugung von bestimmten Modellen angepasst sind, können nicht nur verwendet werden um neue Modelle zu erstellen, sondern auch um bestehende Modelle anzupassen oder um Modell aus Bildern zu extrahieren (Multimodalität). Modelle können am Whiteboard erstellt, fotografiert und über ein LLM in die passende Syntax transformiert werden.

Weitere Anwendungsfälle

Neben der Generierung von Software Artefakten lassen sich Modelle in vielen weiteren Anwendungsfällen einsetzen.

Anforderungen können von natürlicher Sprache in eine formale von einem Computer analysierbare Sprache transformiert werden. Hier können wiedersprüche und redundanzen gefunden werden – welche durch ein LLM wieder zurück in Natürliche Sprache übersetzt werden kann.

Große Spezifikationssammlungen können von LLMs erfasst werden. Da LLMs ihren input in Semantische Vektoren transformieren (Embedding), kann ein LLM ähnlichkeiten zwischen Texten und Worten erkennen. Somit ist eine Semantische Suche in Wissensdatenbanken möglich. Anwender können ihr Problem umschreiben und werden passende inhalte zu ihrem Anwendungsfall erhalten, ohne das sie wissen müssen nach welcher Begrifflichkeit gesucht werden muss.

Halluzinationen

LLMs sind nicht deterministisch und bauen auf ein stochastisches Modell auf. Die Folge ist, dass ein LLM nicht zwingend die Korrekte antwort gibt, sondern die plausibeltste. Solange die geforderte Information innerhalb der Trainingsdaten liegt ist die plausibelste Antwort oft auch die richtige, je weiter aber ausserhalb der Trainigsdaten gesucht wird, desto warscheinlicher wird es das das LLM eine falsche Antwort sehr plausibel präsentiert.

Halluzinationen sind schwer zu erkennen da sie von korrekten aussagen schwer zu unterscheiden sind. Sie passen immer gut in den Kontext der Fragestellung und weisen selten offensichtliche Fehler auf.

Das Folgende Beispiel zeigt wie ChatGPT offensichtliche Fehler produziert, die ein Mensch direkt erkennt, ein Sprachmodell jedoch (noch) nicht. Obwohl die Aussage falsch ist, ist die ‚unsicherheit‘ hinter der Aussage vom LLM nicht erkenntlich.

Nutzer:
Erstelle ein Bild mit genau 17 blauen Punkten.

GPT-4:
Hier ist das Bild mit genau 17 blauen Punkten auf weißem Hintergrund.

Nutzer:
Wieviele blaue Punkte sind in dem Bild?

GPT-4:
Das Bild enthält genau 17 blaue Punkte auf einem weißen Hintergrund.

GPT-4, April 2024


Ein Vorteil, der verwendung von LLMs um Modelle zu erzeugen, ist das wir die erzeugten Modelle analysieren und prüfen könnnen und somit schon viele Fehlerquellen ausschließen können.

Was können wir für Sie tun ?

Wir beraten Sie gerne, wie Sie LLMs in ihren Softwarelösungen einsetzen können, wir unterstützen Sie in der definition einer geeigneten Architektur und in der Entwicklung des Systems.

Wir bieten

  • Beratung, ob und in welcher Form für Sie KI nützlich ist
  • Realisierung einer für Sie angepassten LLM, um Künstliche Intelligenz in Ihrem Unternehmen zu nutzen
  • Einbau einer Künstliche Intelligenz oder einer LLM-Komponente in Ihr Softwareprodukt


  1. Alan M. Turing, Computing machinery and intelligence 1950 ↩︎
  2. Rosenblatt, F.: The perceptron: a probabilistic model for information storage and organization in the brain. Psychol. Rev. 65(6), 386–408 (1958) ↩︎
  3. Vaswani, Ashish, et al. „Attention is all you need.“ Advances in neural information processing systems 30 (2017). ↩︎
  4. https://openai.com/gpt-4 ↩︎
  5. Barke, Shraddha, Michael B. James, and Nadia Polikarpova. „Grounded copilot: How programmers interact with code-generating models.(2022).“ CoRR arXiv 2206 (2022). ↩︎
  6. https://copilot.microsoft.com/ ↩︎
  7. Baumann, Nils, et al. „Combining Retrieval-Augmented Generation and Few-Shot Learning for Model Synthesis of Uncommon DSLs.“ Modellierung 2024 Satellite Events. Gesellschaft für Informatik eV, 2024. ↩︎
  8. Netz, Lukas, Judith Michael, and Bernhard Rumpe. „From Natural Language to Web Applications: Using Large Language Models for Model-Driven Software Engineering.“ Modellierung 2024. Gesellschaft für Informatik eV, 2024.
    APA
    ↩︎
  9. Brown, Tom, et al. „Language models are few-shot learners.“ Advances in neural information processing systems 33 (2020): 1877-1901. ↩︎
  10. Izacard, G.; Lewis, P.; Lomeli, M.; Hosseini, L.; Petroni, F.; Schick, T.; DwivediYu, J.; Joulin, A.; Riedel, S.; Grave, E.: Few-shot learning with retrieval
    augmented language models. arXiv preprint arXiv:2208.03299/, 2022 ↩︎