Amazon Q Developer im Test

18.07.2024
Von 
Martin Heller schreibt als freier Autor für die Schwesterpublikation InfoWorld.
Q Developer ist der "neue" CodeWhisperer. Wir haben den überarbeiteten Generative-AI-Assistenten für Entwickler ausprobiert.
Aus CodeWhisperer wird Q Developer. Lesen Sie, was Amazons generativer KI-Assistent in seiner überarbeiteten Form leistet.
Aus CodeWhisperer wird Q Developer. Lesen Sie, was Amazons generativer KI-Assistent in seiner überarbeiteten Form leistet.
Foto: Yurchanka Siarhei | shutterstock.com

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:

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.

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.

Q Developer beinhaltet in Visual Studio Code ein Chatfenster (links) sowie die Möglichkeit, Code zu generieren.
Q Developer beinhaltet in Visual Studio Code ein Chatfenster (links) sowie die Möglichkeit, Code zu generieren.
Foto: Martin Heller | IDG

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.

Q Developer in IntelliJ Idea. Hier befindet sich das Chatfenster auf der rechten Seite.
Q Developer in IntelliJ Idea. Hier befindet sich das Chatfenster auf der rechten Seite.
Foto: Martin Heller | IDG

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.

Das Befehlszeilenprogramm unterstützt unter macOS mehrere Shell- und Terminalprogramme. In diesem Beispiel nutzen wir Iterm2 und die Z-Shell.
Das Befehlszeilenprogramm unterstützt unter macOS mehrere Shell- und Terminalprogramme. In diesem Beispiel nutzen wir Iterm2 und die Z-Shell.
Foto: Martin Heller | IDG

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.

Q Developer in der AWS-Konsole.
Q Developer in der AWS-Konsole.
Foto: Martin Heller | IDG

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.

Ein Blick auf Inline-Code-Generierung und Chat mit Q Developer. Sämtlichen Code nach dem #TODO-Kommentar hat das GenAI-Tool generiert.
Ein Blick auf Inline-Code-Generierung und Chat mit Q Developer. Sämtlichen Code nach dem #TODO-Kommentar hat das GenAI-Tool generiert.
Foto: Martin Heller | IDG

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.

Amazon Q Developer sollte in unserem Beispiel aus natürlicher Sprache C++-Code generieren. Um die Dinge etwa szu verkomplizieren, haben wir den bekannten Sorting-Algorithmus Quicksort miteinbezogen und spezifiziert, dass die Funktion auf einem generischen Vektor laufen soll.
Amazon Q Developer sollte in unserem Beispiel aus natürlicher Sprache C++-Code generieren. Um die Dinge etwa szu verkomplizieren, haben wir den bekannten Sorting-Algorithmus Quicksort miteinbezogen und spezifiziert, dass die Funktion auf einem generischen Vektor laufen soll.
Foto: Martin Heller | IDG

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.

 Im Austausch mit Q Chat über Rebasing-Probleme.
Im Austausch mit Q Chat über Rebasing-Probleme.
Foto: Martin Heller | IDG

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!

Jetzt CW-Newsletter sichern

(fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.