Generative KI ist derzeit in aller Munde. Künstliche Intelligenz, die Texte, Bilder, Audio- oder Videodaten nach Nutzervorgaben selbst erzeugen kann, macht erstmals die Fähigkeiten von KI-Systemen auch für Endanwender in ihren Büros oder Wohnzimmern erlebbar. In diesem Blogbeitrag werfen wir einen Blick auf eine spezielle Kategorie von generativen KI-Tools: Code-Generatoren.

Der Bedarf an Code-Generierung ist riesig

Generative KI-Tools können automatisch funktionierenden Code erzeugen – und das in einer Vielzahl von Programmiersprachen. Für Entwickler hat das viele Vorteile: Sie sparen eine Menge Zeit und produzieren – abhängig von der Leistungsfähigkeit des jeweilige Werkzeuges und der Qualität ihres Outputs – möglicherweise weniger Bugs.

Auch aus unternehmerischer bzw. gesellschaftlicher Sicht ist der Nutzen solcher Werkzeuge immens: Im Zuge der Digitalisierung wird immer mehr Software benötigt, nicht nur für Betriebssysteme und Anwendungen auf Servern, PCs oder Mobilgeräten, sondern vor allem auch eingebettet in immer mehr vernetzte Gegenstände unserer Umgebung: z. B. Haushalts-, Büro- und Medizingeräte, Spielzeuge, Uhren, Schlösser, Heizungen oder Fahrzeuge. Bei großen Projekten wie Betriebssystemen oder Browsern kommen nicht selten einige zig Millionen Codezeilen zusammen: Windows 11 wird auf über 60 Millionen Codezeilen geschätzt. Der Linux Kernel hat (laut Black Duck Open Hub von Synopsis) mehr als 35 Millionen Codezeilen, Android 9,4 Millionen, bei Google Chrome und Mozilla Firefox sind es über 30 Millionen, Apache HTTP Server und PHP deutlich über 1,5 Millionen, und selbst das kleine SSH-Tool PuTTY braucht immer noch mehr als 166.000 Zeilen Code. Auch große Websites beinhalten Tausende Codezeilen – umso gefragter sind Werkzeuge, die das Codeschreiben effizienter gestalten.

Code automatisch erzeugen

Werkzeuge, die beim Coden helfen oder Code sogar mehr oder weniger automatisch erzeugen, sind keine neue Entwicklung. Bei Webentwicklern beliebte Entwicklungsumgebungen (Integrated Development Environments, IDEs) wie Visual Studio Code, IntelliJ IDEA oder Eclipse bieten schon länger leistungsfähige Funktionen zur intelligenten Code-Vervollständigung. Die werden oft „IntelliSense“ genannt, nach Microsofts bekannter Implementierung von Code Completion in Visual Studio. An der Entwicklung von IntelliSense kann man auch gut erkennen, wie KI bei der Codeerzeugung eine immer wichtigere Rolle spielte.

IntelliSense wurde zuerst 1997 in Visual Basic 5.0 vorgestellt und hielt ein Jahr später Einzug in Visual C++ 6.0. Die Technologie überwachte die Editoreingaben, lieferte kontextabhängig passende Informationen zu Syntax, Parametern, gültigen Werten etc. und konnte Befehle auch automatisch vervollständigen.

Noch länger (seit den 1950ern) gibt es Werkzeuge zur automatischen Codeerzeugung nach genauen Strukturvorgaben, meist einem Modell oder Template. Frühe Beispiele sind Makroprozessoren oder Präprozessoren, die einfach bestimmte Sequenzen durch andere ersetzen. PHP erzeugt aus der Ausgabe von PHP-Programmen HTML-Code und auch die Nutzung von Templates durch IDEs, Static-Site-Generatoren oder CMS sind Beispiele für automatische Code-Generierung.

Große Auswahl an günstigen Domain-Endungen – schon ab 0,08 € /Monat
Jetzt Domain-Check starten

Das Grundproblem: Zeichenketten sinnvoll fortsetzen

Der entscheidende Unterschied zwischen diesen beiden Werkzeug-Kategorien: Während die Code-Generierung nach vorgegebenen Modellen, Templates etc. immer eindeutige Ergebnisse liefert, arbeiten IntelliSense und Co. mit „Voraussagen“: Sie versuchen zu bestimmen, was ein Nutzer eingeben möchte, und zeigen dazu passende Informationen an. Dafür brauchen sie möglichst viele Informationen, nicht nur zu Paradigmen, Strukturen und Vokabular der genutzten Programmiersprache, sondern auch zu diversen anderen Aspekten des Projektes. Deshalb funktionieren bei den herkömmlichen IDE-Tools diejenigen am besten, die auf leistungsfähige Funktionen zur Analyse der Projektdateien (Parsing) zurückgreifen können. Aber es bleiben doch fast immer mehrere Möglichkeiten übrig, von denen der Benutzer die gewünschte selbst auswählen muss.

Interessanterweise stehen generative Sprachmodelle, die Texte generieren sollen, vor dem gleichen Problem. Diese „Large Language Models“ (LLMs) erzeugen Texte nicht wie Menschen, die „etwas“ zum Ausdruck bringen wollen und dafür eine Sprache nutzen, sondern setzen letztlich nur Zeichenketten auf die aus ihrer Sicht wahrscheinlichste Weise fort. Wie sich herausstellte (und wie vor allem GPT-3 und ChatGPT von OpenAI eindrucksvoll zeigten), können LLMs auf diese Weise erstaunlich gute Texte produzieren – vorausgesetzt, sie werden zuvor mit ausreichend vielen anderen Texten gefüttert: GPT-2 von 2019 wurde mit acht Millionen Webseiten (40 Gigabyte) trainiert, das ein Jahr später erschienene GPT-3 sogar mit 570 Gigabyte Daten.

KI für Code-Vervollständigung und Code-Generierung

Schon 2018 hatte Microsoft in Visual Studio ein Feature namens IntelliCode eingeführt, welches das Problem der wahrscheinlichsten Code-Fortsetzung auf neue Weise anging. Um die wahrscheinlichste Empfehlung ganz oben in der IntelliSense-Vervollständigungsliste zu platzieren, nutzte IntelliCode KI-Techniken, genauer gesagt maschinelles Lernen (ML): Ein ML-Modell wurde mit Tausenden öffentlich zugänglichen Quelltexten aus hoch bewerteten GitHub-Repositories trainiert – zunächst mit einfacheren mathematischen Modellen (Markov-Ketten), später mit umfangreichen künstlichen neuronalen Netzen (Deep Learning). Nach dem Erscheinen von GPT-3, das ohne spezielles Training bereits auch Code-Schnipsel generieren konnte, wurde auf dessen Basis ein IntelliCode-Modell mit der internen Bezeichnung GPT-C geschaffen, trainiert mit 1,2 Milliarden Codezeilen aus 52.000 GitHub-Repositories, das 2021 mit Visual Studio 2022 ausgeliefert wurde. Microsoft hatte OpenAI schon seit seiner Gründung 2015 unterstützt, ab 2019 immer wieder Milliarden in das Unternehmen investiert und 2020 GPT-3 exklusiv lizenziert.

Parallel entwickelte OpenAI zusammen mit Microsoft-Tochter GitHub das KI-Modell Codex, das ebenfalls auf GPT-3 basiert und Grundlage des 2021 vorgestellten GitHub Copilot wurde. OpenAI Codex wurde darauf trainiert, Sourcecode-Blöcke aus natürlichsprachlichen Beschreibungen neu zu erzeugen. Um die Größenordnung zu veranschaulichen: Ein frühes Codex-Modell wurde OpenAI zufolge mit 159 Gigabyte an Python-Dateien aus 54 Millionen öffentlichen GitHub-Repositories trainiert. Inzwischen hat OpenAI den Codex-Support eingestellt und verweist auf die Code-Generierungsfähigkeiten seiner neuesten LLMs der GPT-4-Familie. Auch der aktuelle, inzwischen auch chatfähige GitHub Copilot läuft mit GPT-4; er ist seit 2023 auch in Visual Studio 2022 verfügbar.

KI-Code-Generatoren: Die besten Tools

Diese neue Fähigkeit, nicht nur Code-Zeilen oder Blöcke zu vervollständigen, sondern Code auch aus Beschreibungen zu generieren, verspricht Entwicklern noch mehr Möglichkeiten, effizienter und schneller zu programmieren. Einige interessante bzw. empfehlenswerte Tools dafür stellen wir gleich vor. Wir wollen vorher aber auch noch einmal betonen, dass damit Code Completion nicht obsolet wird. Auch Code-Completion-Tools nutzen längst erfolgreich künstliche Intelligenz für bessere Ergebnisse – populäre Beispiele sind TabNine oder Codeium. Auch die im folgenden genannten Code-Generatoren bieten neben Sprachsteuerung auch KI-Funktionen für Code-Analyse und -Vervollständigung.

GitHub Copilot

GitHub Copilot ist nach Aussage von GitHub das populärste KI-Entwicklertool überhaupt. Es wird als Tandem-bzw. Paarprogrammierer positioniert – in Anspielung auf die Methode des Pair Programming bei der agilen Softwareentwicklung, bei der zwei Entwickler zusammen am Code arbeiten, wobei einer schreibt und der andere parallel kontrolliert und weiterhilft. Dafür schlägt GitHub Copilot während der Eingabe Codezeilen oder ganze Blöcke vor, analysiert den schon geschriebenen Code oder übersetzt Anweisungen in Programmcode. Das Werkzeug unterstützt eine Vielzahl von Programmiersprachen – natürlich auch Sprachen für die Webentwicklung wie JavaScript, HTML oder PHP – und nutzt auf Wunsch die Repositories und Dokumente eines Entwicklers oder einer ganzen Dokumentation, um seine Antworten an vorhandene Bibliotheken und APIs, individuelle Vorlieben, Vorgaben und Programmierstile anzupassen.

OpenAI ChatGPT

Wer schon mit dem universellen KI-Text-Generator ChatGPT von OpenAI arbeitet, kann auch diesen dafür nutzen, sich Code erzeugen zu lassen. Wie GitHub Copilot nutzt ChatGPT unter der Haube ein leistungsfähiges LLM (derzeit GPT 3.5 oder GPT-4). Ähnlich wie der Copilot unterstützt ChatGPT viele Programmiersprachen und kann Code sowohl generieren als auch analysieren. Und dann gibt es noch die sogenannten GPTs – maßgeschneiderte ChatGPT-Versionen für spezifische Aufgaben, denen ihre Schöpfer auch spezifisches Wissen oder bestimmte Fähigkeiten mitgeben können. Obwohl die Funktion erst im November 2023 vorgestellt wurde, gibt es schon eine ganze Reihe von GPTs für Entwickler, insbesondere auch speziell für Webentwickler.

Amazon Q Developer (früher CodeWhisperer)

Amazon CodeWhisperer, angekündigt im Juni 2022, war Amazons Antwort auf GitHub Copilot. CodeWhisperer bietet ein weitgehend vergleichbares Funktionsspektrum – von Echtzeitvorschlägen für Codezeilen und -blöcke über Hilfe und Erklärungen bis hin zur Code-Analyse. Wie auch Copilot analysiert CodeWhisperer den Code auch auf bekannte Sicherheitslücken, die beim Training des KI-Modells mitgelernt wurden und nun auch in neu generiertem Code landen könnten.

Im Vergleich zu GitHub Copilot unterstützt CodeWhisperer weniger IDEs und Programmiersprachen, aber die wichtigsten Sprachen für Webentwickler sind an Bord, darunter PHP, JavaScript, TypeScript und Python. Seine Stärke liegt eher in der engen Integration in Amazons Hyperscaler-Cloud-Umgebung AWS und soll auch vor allem AWS-Nutzern bei der Entwicklung behilflich sein.

Da wohl der Erfolg von CodeWhisperer aus Sicht von Amazon zu wünschen übrig ließ, soll das Werkzeug künftig in dem neuen, leistungsfähigeren Werkzeug Amazon Q Developer aufgehen, das seit Ende April 2024 allgemein verfügbar ist. Dieses soll in einer Basisversion weiterhin kostenlos verfügbar sein – wie CodeWhisperer und anders als GitHub Copilot.

Pieces for Developers

Ebenfalls kostenlos, aber ebenfalls als „Workflow Copilot“ positioniert und deshalb hier vertreten ist unser letztes Tool: Pieces for Developers. Pieces ist ein KI-gestütztes Produktivitätswerkzeug, das Entwickler und Teams bei Code-Entwicklung und -Management helfen sowie Workflows und Toolchains vereinheitlichen soll. Es macht es einfach, Code-Abschnitte zu erzeugen oder zu vervollständigen, sie anzureichern oder in andere Sprachen zu übersetzen, zu speichern, zu teilen, zu finden und wiederzuverwenden. Es werden über 40 Programmiersprachen unterstützt, auch z. B. CSS oder CoffeeScript (bei Code-Generierung abhängig von der genutzten LLM). Zudem gibt es den Pieces Copilot, mit dem Sie über Ihren Code chatten können: z. B. technische Fragen stellen, sich Code-Blöcke erklären, auf Fehler prüfen, Inline-Kommentare hinzufügen oder Code erzeugen lassen.

Im Hintergrund arbeitet ein lokal installierter Service namens Pieces OS, der mit verschiedenen Pieces-Apps kommuniziert und Zugriff auf verschiedene LLMs bietet. Zudem gibt es eine Desktop-App sowie Erweiterungen bzw. Plugins für diverse IDEs (Visual Studio Code, JetBrains, JupyterLabs u. a.), Browser und andere Tools (z. B. Microsoft Teams). Neben lokal verfügbaren Open-Source-LLMs wie Llama2 von Meta oder Mistral 7B von Mistral AI können per API (bei vorhandenem Key) auch andere hochleistungsfähige LLMs genutzt werden, darunter GPT-4 von OpenAI sowie Gemini Pro und PaLM 2 von Google.

Fazit: Die Vor- und Nachteile von KI-Code-Generatoren

KI-Tools für die Code-Generierung bieten Entwicklern viele Vorteile: KI kann dabei helfen, Code schneller und effektiver zu schreiben, Routineaufgaben zu automatisieren und ihren Zeit- und Arbeitsaufwand zu verringern. Trainiert mit Milliarden von Code-Zeilen, kann sie Entwickler auf Ideen bringen, auf die sie von allein vielleicht nie gekommen wären. Zudem kann sie dazu beitragen, Fehler (etwa Syntaxfehler) zu vermeiden, Best Practices zu folgen und stilistische Vorgaben einzuhalten. Weniger erfahrenen Entwicklern kann KI auch beim Lernen helfen; das gilt insbesondere für chatfähige KI-Tools.

Aber die Nutzung von KI-Code-Generatoren birgt auch Fallstricke. Noch immer sollten Entwickler, die solche Tools einsetzen, genau wissen, was sie tun. Denn in den Trainingsdaten der LLMs steckt auch viel schlechter oder fehlerhafter Code mit Bugs und Sicherheitslücken – man muss ihren Ergebnissen stets mit einer gehörigen Portion Misstrauen begegnen (das gilt für generative KI generell). Da die derzeit produktiv verfügbare KI zudem noch größtenteils statistisch vorgeht und kein tatsächliches Problemverständnis aufbringt (hier zeigen eher die AlphaCode-Modelle von DeepMind vielversprechende Ansätze), sind ihre Problemlösungen häufig weder besonders originell noch elegant. Weitere Einschränkungen: KI-Tools unterstützen die Sprachen am besten, die in ihrem Trainingsmaterial am häufigsten vertreten sind; bei seltener genutzten werden ihre Ergebnisse schlechter. Chat-Tools sind häufig nur auf Englisch zu bedienen und leistungsfähigere LLMs liegen häufig in der Cloud, was womöglich Datenschutzprobleme mit sich bringt (hier sind bei entsprechender GPU-Ausstattung die lokalen LLMs von Piece ein nützlicher Ansatz). Und je besser KI-Tools werden, desto mehr wächst vielleicht auch die Gefahr, dass Entwickler in neue Abhängigkeiten geraten, weil sie Routineaufgaben nicht mehr selbst ausführen, sich zu sehr auf die KI verlassen und womöglich den erzeugten Code gar nicht mehr komplett verstehen. Aber glücklicherweise können sie sich den ja jederzeit vom Copilot erklären lassen …

Titelmotiv: Bild von Hitesh Choudhary auf Pixabay

Host Europe

Große Auswahl an günstigen Domain-Endungen – schon ab 0,08 € /Monat
Jetzt Domain-Check starten