- Ein Projekt mit dem Ziel, automatisierte Helfer, also „Agenten“, für die Open-Source-Wartung zu entwickeln und damit die Entwicklung von Open-Source-Software zu verbessern
- Dadurch könnte sich der Umfang repetitiver Aufgaben im Zusammenhang mit der Open-Source-Wartung verringern
- Die Fähigkeit großer Sprachmodelle (LLMs) zur semantischen Analyse natürlicher Sprache und zur Umwandlung zwischen natürlichsprachlichen Anweisungen und Programmcode schafft neue Möglichkeiten dafür, dass Agenten reibungsloser mit Menschen interagieren
- LLMs werden nur ein Teil des Agenten sein; der Großteil des Agentenverhaltens wird darin bestehen, standardisierten und deterministischen Code auszuführen
- Anders als beim entwicklungszentrierten Einsatz von LLMs versucht Oscar nicht, den Prozess des Code-Schreibens zu ergänzen oder zu ersetzen
- Stattdessen liegt der Fokus auf den langweiligen Teilen, etwa dem Bearbeiten eingehender Issues oder dem Abgleichen von Fragen mit vorhandener Dokumentation
Projektziele
- Verringerung des Wartungsaufwands zur Lösung von Issues [„Lösung“ bedeutet nicht immer eine Korrektur]
- Verringerung des Wartungsaufwands zur Bearbeitung von Changelists (CL) oder Pull Requests (PR) [„Lösung“ bedeutet nicht immer Einreichung/Zusammenführung]
- Verringerung des Wartungsaufwands zur Beantwortung von Forenfragen
- Mehr Menschen dabei unterstützen, produktive Maintainer zu werden
Ansatz
- Da die repetitiven Aufgaben der Open-Source-Wartung nicht auf Go-Projekte beschränkt sind, ist das Ziel, eine Architektur zu bauen, die alle Softwareprojekte wiederverwenden und erweitern können
- Bislang wurden drei Funktionen identifiziert, die einen wichtigen Teil von Oscar bilden werden:
- Indizierung und Bereitstellung relevanten Projektkontexts während der Interaktion mit Beitragenden
- Steuerung deterministischer Werkzeuge mithilfe natürlicher Sprache
- Verbesserung eingereichter Issues und CLs/PRs in Echtzeit während oder direkt nach der Einreichung sowie angemessenes Labeling und Routing durch deren Analyse
Indizierung und Bereitstellung relevanten Projektkontexts
- LLMs können Dokumente analysieren, indem sie Embeddings erzeugen – hochdimensionale Gleitkomma-Einheitsvektoren mit der Eigenschaft, dass Dokumente mit ähnlicher Bedeutung auf Vektoren abgebildet werden, die in ähnliche Richtungen zeigen
- In Kombination mit einer Vektordatenbank zum Auffinden von Vektoren, die einem Eingangsvektor ähnlich sind, bieten LLM-Embeddings eine sehr effektive Methode, den gesamten Kontext eines Open-Source-Projekts zu indizieren
- Ein Prototyp-Agent implementiert diese Funktion und antwortet auf neue Issues im Go-Repository mit einer Liste von bis zu 10 hochrelevanten Links
Natürliche Sprache zur Steuerung deterministischer Werkzeuge verwenden
- Wenn Open-Source-Projekte wachsen, steigt die Zahl nützlicher Werkzeuge, und es kann schwierig werden, den Überblick zu behalten und sich zu merken, wie jedes einzelne zu verwenden ist
- LLMs sind sehr effektiv bei der Umwandlung zwischen in natürlicher Sprache formulierten Absichten und ausführbaren Formen dieser Absichten wie Programmcode oder Tool-Aufrufen
- Es wurden Experimente mit Gemini durchgeführt, bei denen verfügbare Werkzeuge ausgewählt und aufgerufen werden, um natürlichsprachliche Anfragen zu erfüllen, aber bislang funktioniert noch nichts in der Praxis
Analyse von Issue-Reports und CLs/PRs
- Das Posten zugehöriger Issues ist eine begrenzte Form der Analyse, es ist jedoch geplant, weitere Arten semantischer Analyse hinzuzufügen, etwa das Erkennen von Performance-Issues und das Hinzufügen des Labels „Performance“
- Es soll untersucht werden, ob Reports gut genug analysiert werden können, um festzustellen, ob zusätzliche Informationen nötig sind, damit ein Report nützlich wird
- All diese Analysen und die daraus resultierenden Interaktionen funktionieren deutlich besser, wenn sie unmittelbar nach der Einreichung eines Reports stattfinden, solange die meldende Person noch verfügbar und eingebunden ist
Prototyp
- Der erste Prototyp zur Erkundung von Oscar heißt Gaby (Go AI bot), läuft im Go-Issue-Tracker und postet als @gabyhelp
- Bislang indiziert Gaby auf GitHub die Inhalte von Go-Issues, indiziert die Go-Dokumentation auf go.dev und antwortet auf neue Issues mit relevanten Links
- Gabys Struktur macht es einfach, ihn mit beliebigen LLMs, Storage-Layern und Vektordatenbanken auf allen Arten von Hosting-Services auszuführen
Noch keine Kommentare.