Amazon Q Developer im Test

18.07.2024 von Martin Heller
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.
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:

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.
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.
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.
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.
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.
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.
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

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:

Kontra:

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.