11.3 Aider
Aider-Erfinder und -Entwickler Paul Gauthier bezeichnet sein Werk ein wenig lapidar »Aider is AI pair programming in your terminal«. Tatsächlich fehlt Aider eine Web- oder GUI-Oberfläche. Die restliche Beschreibung ist aus unserer Sicht aber ein Understatement. Microsoft bezeichnet ja GitHub Copilot ganz ähnlich als »Your AI pair programmer«.
Funktionell liegen aber Welten zwischen Copilot und Aider! Aider erwartet relativ abstrakte Anweisungen, erzeugt selbstständig die erforderlichen Dateien bzw. führt Änderungen an vorhandenen Projektdateien durch, und fragt schließlich, ob Sie die Änderungen als Git-Commit übernehmen wollen. Wie wir es in der Kapiteleinleitung schon angedeutet haben, agiert Aider viel selbstständiger als GitHub Copilot, Continue oder andere Plug-ins, die in den Editor oder die Entwicklungsumgebung integriert werden.
Installation
Aider ist Open-Source-Software, die auf Python und Git aufbaut – Voraussetzungen also, die auf Ihrem Rechner ziemlich sicher schon erfüllt sind. Um Paketkonflikte mit anderen Projekten zu vermeiden, installieren Sie Aider am besten in ein Virtual Environment. Wir haben unsere Tests unter macOS mit Python 3.12 durchgeführt.
mkdir aider # Installation für macOS/Linux
cd aider
python3 -m venv .
source bin/activate
pip3 install aider-chat
Unter Windows verwenden Sie die Kommandos python und pip statt python3 und pip3. Außerdem aktivieren Sie die Umgebung mit Scripts/Activate.ps1 statt mit dem source-Kommando. Updates führen Sie wie folgt durch:
pip3 install aider-chat --upgrade
Damit Aider funktioniert, braucht das Programm Zugang zu einem Sprachmodell. Geeignete Hardware vorausgesetzt, reicht ein (starkes!) lokales Modell aus. Wir haben Aider mit zwei kommerziellen Sprachmodellen ausprobiert, mit GPT-4o von OpenAI sowie mit Claude Sonnet 3.5 von Anthropic. Bei unseren Tests lieferte Sonnet 3.5 spürbar bessere Ergebnisse.
Bis Sie dieses Buch lesen, wird es neuere Sprachmodelle geben – wer weiß, welches dann am besten für Aider geeignet ist. Werfen Sie daher einen Blick auf die folgende Seite, die zusammenfasst, welches Sprachmodell wie gut mit Aider funktioniert:
https://aider.chat/docs/leaderboards
Jetzt müssen Sie noch eine Umgebungsvariable für Ihren API-Key definieren, unter Linux oder macOS am besten in .bashrc oder .zshrc. Alternativ können Sie den oder die Keys auch in .env im Aider-Environment-Verzeichnis speichern.
Damit Sie einen API-Key bekommen, müssen Sie bei OpenAI oder Anthropic einen Account anlegen und Ihre Kontakt- und Kreditkartendaten hinterlegen. Sie kaufen dort vorab »Credits«, die dann durch API-Abfragen aufgebraucht werden. Für erste Tests reichen 10 EUR aus. Sie müssen also kein Vermögen investieren, um Aider auszuprobieren.
# in ~./bashrc oder ~/.zshrc oder aider/.env
export OPENAI_API_KEY='sk-xxxxx'
export ANTHROPIC_API_KEY='sk-yyyyy'
Falls eine der beiden Variablen definiert ist, erkennt Aider das gewünschte Modell selbstständig. Sind beide Variablen definiert, entscheidet sich Aider für das Modell Sonnet von Anthropic. Bei Bedarf können Sie das Sprachmodell mit den Optionen --4o oder --sonnet explizit auswählen.
Start
Aider ist ein Terminal-Tool – aber das heißt nicht, dass Sie auf Ihren Editor verzichten müssen. Ein guter Anwendungsweg besteht darin, dass Sie in Ihrem Lieblingseditor (wir haben VS Code verwendet) ein Projektverzeichnis öffnen. Bei einem neuen Projekt ist dieses anfänglich leer. Dann öffnen Sie im Editor ein Terminalfenster und aktivieren das Virtual Environment von Aider. Anschließend machen Sie das Projektverzeichnis zum aktiven Verzeichnis.
cd ~/aider # ins Aider-Verzeichnis wechseln
source bin/activate # Virtual Environment aktivieren
cd ~/myproject # ins Projekt-Verzeichnis wechseln
Mit aider starten Sie nun das KI-Tool. Falls es im lokalen Verzeichnis kein Git-Repository gibt, empfiehlt Aider, eines anzulegen. Sie müssen lediglich die entsprechende Rückfrage bestätigen.
aider
Aider v0.50.1
Models: claude-3-5-sonnet-20240620 with diff edit format,
weak model claude-3-haiku-20240307
Use /help <question> for help, run "aider --help"
to see cmd line args
Aider-Kommandos
Bei neuen Projekten beginnen Sie direkt damit, dem Tool Anweisungen zu geben – z. B. welche Aufgabe Ihr neues Programm erfüllen soll, welche Programmiersprache Sie einsetzen wollen. Aider erzeugt die erforderlichen neuen Dateien selbst. Zum Ausführen und Testen des Programms verwenden Sie wahlweise den Editor, eine Entwicklungsumgebung oder ganz einfach ein zweites Terminalfenster.
Natürlich können Sie mit Aider auch ein vorhandenes Projekt mit vielen Dateien bearbeiten. Bei solchen Arbeiten spielen Aider-Kommandos in der Form /command eine wichtige Rolle (siehe Tabelle 11.2). Eine vollständige Referenz finden Sie hier:
https://aider.chat/docs/usage/commands.html
Während bei neuen Projekten die erzeugten Dateien direkt in den Kontext aufgenommen werden, müssen Sie bei existierenden Projekten die zu bearbeitenden Dateien explizit mit /add oder /read dem Kontext hinzufügen bzw. mit /drop wieder daraus entfernen. Der Unterschied zwischen /add und /read besteht darin, dass Aider bei den weiteren Prompts nur in den /add-Dateien Änderungen durchführt, während es die /read-Datei ausschließlich als Referenz betrachtet. Mit /read übergebene Dateien können z. B. den Code einer Klasse enthalten, deren Methoden Sie anwenden möchten, oder Dokumentations- bzw. Schemadateien.
Ein großes Problem aller Sprachmodelle besteht darin, dass ihr Informationsstand mit dem Datum endet, zu dem das Trainingsmaterial erstellt wurde. Gerade wenn Sie moderne Programmiersprachen oder Bibliotheken verwenden, ist das eine große Einschränkung.
Aider umgeht dieses Problem mit einer simplen Idee: Sie können mit /web die Adresse einer Webseite übergeben. Aider lädt diese Seite herunter, wandelt den dort gefundenen Text in das Markdown-Format um und fügt es in den Kontext ein.
Kommando |
Bedeutung |
---|---|
/add file |
Code-Datei zum Kontext hinzufügen |
/ask |
Fragen zum Code stellen (keine Änderungen) |
/clear |
Chat-Verlauf löschen (Dateien bleiben im Kontext) |
/diff |
Änderungen des letzten Commits anzeigen |
/drop file |
Code-Datei aus Kontext entfernen |
/exit bzw. /quit |
Aider beenden |
/git cmd |
Git-Kommando ausführen (z. B. /git status) |
/help myquestion |
allgemeine Frage an das Sprachmodell stellen |
/help /cmd |
Hilfe zum angegebenen Kommando anzeigen |
/lint |
Syntax aktueller Dateien überprüfen, Fehler beheben |
/ls |
Dateien im Kontext anzeigen |
/map |
Repository-Überblick anzeigen |
/read |
Datei zum Kontext hinzufügen (read-only) |
/run cmd |
Shell-Kommando ausführen (z. B. /run cd subdir) |
/undo |
letzten Commit widerrufen |
/web url |
Datei lesen und zum Kontext hinzufügen |
Tabelle 11.2 Wichtige Aider-Kommandos
Weniger ist mehr
Es ist keine gute Idee, möglichst viele oder gar alle Dateien eines großen Projekts dem Kontext hinzuzufügen! Analog gilt dies auch für die Anzahl der mit /web übergebenen Seiten aus einer Online-Dokumentation.
Wir haben es in diesem Buch ja schon mehrfach erwähnt: Zwar verfügen moderne Sprachmodelle über erfreulich große Kontextfenster, sie tun sich aber schwer, das Wesentliche vom Unwesentlichen zu trennen. Zu viele Kontextinformationen bringen das Sprachmodell oft aus dem Gleichgewicht. Die Auswahl dessen, was wichtig oder nicht so wichtig ist, müssen Sie treffen!
Mehrzeilige Prompts
Sobald Sie (¢) drücken, betrachtet Aider die Eingabe als abgeschlossen und beginnt mit der Antwort. Die Eingabe mehrzeiliger Prompts gelingt mit (Alt)+(¢). Erfahrungsgemäß ist die Gefahr aber groß, (Alt) zu vergessen. Hilfreicher erscheint uns deswegen der zweite Weg: Dabei starten Sie die Eingabe mit einer geschwungenen Klammer und drücken dann (¢). In der Folge können Sie beliebig viele weitere Zeilen eingeben und mit (¢) übergeben, bevor Sie Ihren Prompt mit einer weiteren geschwungenen Klammer abschließen.
> {
> this is a long question
> about the meaning of life
> }
Coding-Regeln und -Konventionen
Häufig sollen in einem Projekt vorgegebene Konventionen für den Code eingehalten werden. Die Aider-Dokumentation empfiehlt in diesem Fall, die Regeln in Form gewöhnlicher Textanweisungen in einer Markdown-Datei im Projektverzeichnis zu speichern. Diese Datei können Sie mit /read dem Kontext hinzufügen oder gleich beim Start von aider als Parameter übergeben.
aider code-conventions.md
Aider im Webbrowser
Aider sieht sich als Terminal-Werkzeug. Das Programm kann aber auch im Webbrowser bedient werden. Dazu starten Sie das Programm mit der Zusatzoption --browser. In der Folge erscheint in Ihrem Webbrowser ein neuer Tab mit der Aider-Weboberfläche.
Das Aider-Handbuch beschreibt diese Funktion als experimentell, und diesen Eindruck können wir bestätigen: Die Oberfläche ist zwar optisch ansprechend, aber trotz englischer Fragestellung formulierte Aider die Antworten in deutscher Sprache (also der im Webbrowser eingestellten Default-Sprache), führte trotz /ask Änderungen am Code durch etc., verstand Kommandos wie /undo nicht etc.