Mitte Juni 2023 haben wir uns bereits drei Generative-AI-Tools für Entwickler näher angesehen - darunter auch Amazon CodeWhisperer. Das Tool ließ damals noch die Möglichkeit außen vor, über Code zu chatten sowie Erklärungen zu diesem zu liefern. Diese Mankos hat Amazon mit der aktuellen Version von CodeWhisperer beseitigt. Allerdings heißt das generative Entwickler-Tool inzwischen Q Developer.
Das GenAI-Tool läuft derzeit in:
JetBrains IDEs,
der AWS-Konsole, sowie
der macOS-Kommandozeile.
Dabei verspricht Q Developer nicht nur Features wie asynchrone Agenten und Programmiersprachen-Übersetzungen, sondern auch Support, wenn es darum geht, Unit-Tests zu schreiben oder Schwachstellen zu identifizieren. Amazon Q Developer unterstützt Code, der in folgenden Programmiersprachen geschrieben ist:
Darüber hinaus enthält Q Developer eine generative Chat-Funktion, die es ermöglicht, mit dem Tool über Funktionen, Ressourcennutzung, Architektur oder auch die aktuelle Abrechnung zu chatten. Laut Amazon ist das Generative-AI-Tool "powered by Amazon Bedrock" und auf "hochwertige AWS-Inhalte" trainiert. Mit anderen Worten: Das KI-Werkzeug kennt sich bestens mit AWS-Patterns, -Dokumentation und -Implementierung aus. Allerdings beschränkt sich die Chat-Funktion auf englischsprachige Unterhaltungen.
Amazon Q Developer konkurriert dabei nicht nur direkt mit Angeboten wie GitHub Copilot, JetBrains AI oder Tabnine - sondern auch indirekt mit einer Reihe großer (Large Language Models; LLMs) sowie kleiner (Small Language Models; SLMs) Sprachmodelle, die mit Programmcode umgehen können. Dazu gehören beispielsweise:
Code Llama,
StarCoder,
Bard,
OpenAI Codex und
Mistral Codestral.
Im Folgenden lesen Sie, wie sich der AWS-fokussierte CodeWhisperer-Nachfolger in der Praxis anfühlt.
Struggling with debugging your code? Try #AmazonQ Developer directly in your IDE! ??
— Amazon Web Services (@awscloud) June 24, 2024
Amazon Q answers #AWS questions, completes tasks, explains code, writes unit tests, & more. ?? Install today for free.
Learn more?? https://t.co/bUHLz9E27v pic.twitter.com/X7NLHunQyJ
Amazon Q Developer installieren
Angesichts der zahlreichen Umgebungen, in denen Amazon Q Developer ausgeführt werden kann, stehen diverse verschiedene Installer zur Verfügung. Die gute Nachricht: Nur wenn es um Authentifizierung geht, kann es etwas verwirrend werden, weil es mehrere Optionen und Schritte gibt, um zwischen Ihrer IDE und Ihrem Webbrowser hin und her zu springen.
Visual Studio Code
Amazon Q Developer steht wahlweise über den Marktplatz von Visual Studio Code zur Verfügung oder lässt sich direkt über die Seitenleiste für Erweiterungen installieren.
Visual Studio
Für Visual Studio findet man Amazon Q Developer im Rahmen des AWS-Toolkits, das über den Marketplace abrufbar ist.
JetBrains
Wie Visual Studio Code gibt's auch bei JetBrains einen Marktplatz für IDE-Plugins, auf dem Amazon Q Developer verfügbar ist. Dabei ist zu beachten, dass das Plugin dafür sorgt, dass das lokale JetBrains-Feature der Inline-Code-Vervollständigung deaktiviert wird.
macOS-Kommandozeile
Für die Kommandozeile steht Amazon Q Developer derzeit nur für macOS zur Verfügung. Eine Linux-Version ist für die (fernere) Zukunft geplant. Die Installation unter macOS besteht im Wesentlichen darin, eine DMG-Datei herunterzuladen und auszuführen, die Q-Datei in das Anwendungsverzeichnis zu ziehen und zu installieren. Anschließend können Sie mit dem Befehl Q TRANSLATE
Shell-Kommandos generieren oder mit Q CHAT
den KI-Assistent aufrufen.
AWS-Konsole
Falls Sie nicht mit Root-Rechten arbeiten, müssen Sie entsprechende IAM-Berechtigungen hinzufügen, um Q Developer nutzen zu können. Ist das erledigt, ruft ein Klick auf das entsprechende Symbol auf der rechten Seite die Oberfläche des GenAI-Tools auf.
Amazon Q Developer im Praxistest
Im Folgenden werfen wir einen Blick darauf, wie sich Q Developer bei verschiedenen Tasks verhält. Dabei geht es in erster Linie darum, ein Gefühl dafür zu bekommen, wie gut das GenAI-Entwicklerwerkzeug funktioniert.
1. Prädiktiven Inline-Code & Unit-Tests generieren
AWS zeigt in seiner Dokumentation diverse Beispiele für die Codevervollständigung in allen unterstützten Programmiersprachen. Diese sind - wie die, die wir im Folgenden betrachten - entweder sehr simpel (etwa, zwei Zahlen zu addieren) oder beziehen sich auf gängige, API-gestützte AWS-Prozesse (etwa, Dateien in einen S3-Bucket hochzuladen).
Wie im nachfolgenden Screenshot zu sehen, haben wir eine Softball-Frage zur prädiktiven Codegenerierung ausprobiert und dazu eines der Inline-Vorschlagsbeispiele von Amazon verwendet. Die Python-Eingabeaufforderung lautete: # Function to upload a file to an S3 bucket
.
Wir haben auch die beiden anderen integrierten Beispiele für Inline-Code-Vorschläge ausprobiert. Dabei funktionierte sowohl das Beispiel für ein Array von Fake-Benutzern in Python, als auch das zu Unit-Tests - allerdings nicht im ersten Anlauf. Bei erstgenanntem Beispiel mussten wir die abschließende ]
ergänzen, bei letztgenanntem sorgte die Tastenkombination Option+C für unzulässige Zeichen. Wobei das nicht unbedingt an Q Developer gelegen haben muss, sondern möglicherweise auch mit macOS oder VS Code zusammenhängt.
Nach einem Neustart von VS Code und einem Klick auf die Eingabetaste unterhalb des Kommentars, funktionierte das Unit-Test-Beispiel einwandfrei und erzeugte die nachfolgende test_sum
-Funktion.
# Write a test case for the above function.
def test_sum():
"""
Unit test for the sum function.
"""
assert sum(1, 2) == 3
assert sum(-1, 2) == 1
assert sum(0, 0) == 0
2. Code aus natürlicher Sprache generieren
Weil wir nun davon ausgehen können, dass Q Developer Python-Code generieren kann - insbesondere, wenn es um seine eigenen Testbeispiele geht - haben wir für den folgenden Test eine Datei namens quicksort.cpp erstellt und dazu folgenden Kommentar an das Tool übermittelt: //function to sort a vector of generics in memory using the quicksort algorithm
.
Amazon Q Developer versuchte immer wieder, diesen Kommentar automatisch zu vervollständigen und in einigen Fällen auch die Implementierung für verschiedene Probleme. Nichtsdestotrotz war es einfach, meine Spezifikation weiter einzutippen. Am Ende lieferte Q Developer eine nahezu korrekte Implementierung.
Quicksort ist ein bekannter Algorithmus. Sowohl die C- als auch die C++-Bibliotheken haben Implementierungen davon, aber sie verwenden keine Generika. Stattdessen müssen Sie typspezifische Vergleichsfunktionen schreiben, um sie an qsort
zu übergeben. Das ist historisch bedingt, weil die Bibliotheken implementiert wurden, bevor generische Funktionen in die Sprachen aufgenommen wurden.
Schließlich konnte ich Q Developer dazu bringen, die main
-Routine zu erzeugen, um die Implementierung zu testen. Zunächst wurde stattdessen eine Dokumentation für die Funktion erstellt, aber nach einem erneuten Versuch, erstelte das Tool schließlich die main
-Funktion inklusive Test Case.
Wenig überraschend konnte der generierte Code zunächst nicht einmal kompiliert werden. Das lag daran, dass das GenAI-Tool das erforderliche #include <iostream>
ausgelassen hatte. Diesen Fehler konnten wir allerdings über VS Code bereinigen lassen - ohne selbst Code hinzuzufügen.
Das Kompilierungsproblem wurde dadurch dennoch nicht gelöst. Ursächlich waren rekursive Calls an sortVector()
, die in einem besonders "cleveren" Stil geschrieben waren. Nach Markieren der Fehlermeldung sollte Amazon Q Developer diese beheben - was allerdings ein ganz anderes Problem auslöste. Erst als wir Q Developer mit zusätzlichem Kontext versorgten, erkannte das Tool das eigentliche Problem und generierte korrekten Code.
Diese Experience war in etwa vergleichbar damit, mit einem Praktikanten oder Nachwuchsentwickler zu arbeiten, der nicht sonderlich erfahren im Umgang mit C++ ist.
3. Weitere erwähnenswerte Features
Vulnerability Detection: Q Developer durchsucht standardmäßig geöffnete Codedateien im Hintergrund nach Sicherheitslücken, die beispielsweise Ressourcen-Lecks, Cross-Site Scripting oder SQL Injection ermöglichen können. Falls es welche findet, werden diese unterkringelt. Zudem liefert das Tool Erklärungen zu den Schwachstellen und schlägt automatisierte Korrekturmöglichkeiten vor. Sie können Q Developer auch anweisen, Ihr gesamtes Projekt auf Sicherheitslücken zu prüfen und einen entsprechenden Report zu generieren.
Q-Chat: Sie haben bereits gesehen, wie Sie Q Chat in einer IDE verwenden können, um Code zu erklären und zu korrigieren. Darüber hinaus ist es über die Funktion auch möglich, Code zu optimieren und Unit-Tests schreiben. Über den Befehl
/help
können Sie jederzeit über Ihre IDE einsehen, welche Möglichkeiten Ihnen zur Verfügung stehen.Anpassungen: Zahlende Nutzer der Pro-Version von Amazon Q Developer (ab 19 Dollar monatlich) dürfen das Tool in Sachen Codegenerierung auf ihre Bedürfnisse anpassen, indem sie ihm Zugriff auf ihre Codebasis geben. Diese kann sich in einem S3-Bucket oder einem Repository auf GitHub, GitLab oder Bitbucket befinden. Das Ergebnis ist ein feinabgestimmtes Modell, das Anwenderberichten zufolge die Entwicklerproduktivität im Vergleich zur Verwendung des Basismodells weiter steigern soll.
Entwickler-Agenten: Entwickler-Agenten sind langfristig laufende Q-Developer-Prozesse. Der einzige Agent, den ich bisher in Aktion gesehen habe, betrifft die Codetransformation - insbesondere von Java-8- oder Java-11-Maven-Projekten zu Java 17. Dafür muss Ihr Java-Projekt bestimmte Anforderungen, erfüllen - in den AWS-Demos hat das aber gut funktioniert. Selbst testen konnten wir das Feature leider nicht.
Kommandozeilen-Interfaces: Amazon Q Developer für die Befehlszeile funktioniert derzeit (Version 1.2.0) wie gesehen unter macOS und unterstützt die Shells bash, zsh und fish sowie die Terminalemulatoren iTerm2, macOS Terminal, Hyper, Alacritty, Kitty und wezTerm. Davon abgesehen, läuft es auch im Terminal von VS Code und der JetBrains-IDEs (außer Fleet) und unterstützt rund 500 der beliebtesten CLIs wie git, aws, docker, npm und yarn. Sie können die CLI mit q integrations install ssh auch auf Remote-macOS-Systeme oder die 64-Bit-Versionen der aktuellen Distributionen von Fedora, Ubuntu und Amazon Linux 2023 erweitern. Amazon Q Developer CLI bietet drei wesentliche Services: Befehle während der Eingabe automatisch vervollständigen, Spezifikationen in natürlicher Sprache in CLI-Befehle übersetzen und über die Ausführung von Aufgaben über die Befehlszeile chatten. Letzteres haben wir mit dem Themenbereich "Git-Repositories rebasen" ausprobiert, wie Sie dem nachfolgenden Screenshot entnehmen können.
Testfazit zu Amazon Q Developer
Insgesamt können wir ein positives Fazit zu Amazon Q Developer ziehen. Es scheint für die Anwendungsfälle, die es bearbeiten soll, gut geeignet zu sein und konnte im Test vollständige Funktionen in gängigen Programmiersprachen generieren - bei überschaubaren manuellen Korrekturen und Fehlerraten. Q Developer kann so nützlich sein, um Codezeilen, Doc-Strings sowie if/for/while/try-Codeblöcke zu vervollständigen. Willkommene Features sind außerdem die Möglichkeit, nach Schachstellen zu scannen sowie Unterstützung bei Code-Problemen.
Amazon Q Developer kann erfahrenen Entwicklern potenziell einen deutlichen Produktivitätsschub verleihen. Anfängern ist Q Developer hingegen nicht mit gutem Gewissen zu empfehlen. Das liegt allerdings weniger am Produkt selbst: GenAI-Coding-Tools sollten erst verwendet werden, wenn man selbst ein Gefühl dafür entwickelt hat, wie Code geschrieben, validiert und getestet werden muss.
Im Großen und Ganzen sorgt insbesondere das Feature Q Chat dafür, dass Amazon Q Developer im Vergleich zu seinem Vorgänger CodeWhisperer eine deutliche Verbesserung darstellt. Allerdings gibt es auch Bereiche, in denen Q Developer gegenüber seiner Konkurrenz zurückstecken muss. So ist beispielsweise GitHub Copilot in der Lage, in Dutzenden natürlichen Sprachen zu kommunizieren (und generieren), während das GenAI-Tool von Amazon auf Englisch limitiert ist.
Pro:
funktioniert gut mit populären Sprachen und insbesondere mit AWS-Applikationen
kostenlose Basisversion
kann sowohl chatten als auch Code erzeugen
Kontra:
beherrscht ausschließlich Englisch
kein Support für die Windows-Kommandozeile
Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten - direkt in Ihre Inbox!
(fm)
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.