14. Nov. 2024
KI-basierte Entwicklertools mit der Gemini API optimieren

Die Demokratisierung von KI im letzten Jahr hat zwei große Chancen für Entwickler eröffnet: Sie können modernste KI ganz einfach in ihre Projekte integrieren und KI-basierte Effizienz in ihren Entwicklungsprozess einbringen.
Sublayer, ein auf Ruby basierendes KI-Agent-Framework, demonstriert die Leistungsfähigkeit und Effizienz der Gemini API, indem unsere 1.5-Modelle in das Kernangebot für Entwickler sowie in die eigenen Tooling-Workflows integriert werden.
Sublayer-Dokumentation mit Gemini auf dem neuesten Stand halten
Einer der Vorteile von KI für Entwickler besteht darin, dass Teams, insbesondere in kleinen Start-ups in der Frühphase, mit weniger Aufwand mehr erreichen können. Für viele kann dies in etwas so Einfachem, aber Entscheidendem wie der Dokumentation liegen. Sublayer hat dieses Problem in seinen eigenen Workflows gelöst, indem das Unternehmen seine Bibliothek in Gemini 1.5 Pro integriert und KI-Automatisierungen entwickelt hat, um die Aktualisierung der Dokumentation und die Ermittlung von Verbesserungsmöglichkeiten zu unterstützen.
„Das alles ist möglich, weil das riesige Kontextfenster von Gemini wirklich viel Spielraum bietet, um neue Ideen auszuprobieren, ohne sich gleich in komplexen, optimierten Implementierungen zu verlieren“,
Der Vorgang läuft wie folgt ab:
Immer wenn ein PR in das Haupt-Repository für Unterebenen eingefügt wird, wird ein Agent ausgelöst, der die Dokumentation aktualisiert.
Der Agent generiert einen Prompt, der den gesamten Inhalt der Bibliothek, den gesamten Inhalt der Dokumentation und alle relevanten Inhalte des PR sowie Anweisungen zur Erläuterung der Aufgabe enthält, und sendet ihn an Gemini.
Gemini antwortet dann mit strukturierten Ausgaben, die die Dateipfade, Namen und Inhalte enthalten. Die Sublayer-Bibliothek konvertiert diese in ein Objekt, das verwendet werden kann.
Schließlich nimmt der Agent die empfangenen strukturierten Informationen und verwendet sie, um einen neuen Branch zu erstellen, die angeforderten Änderungen an den Dateien vorzunehmen und einen neuen PR zu senden.
# Get the diff from the PR
diff = GithubGetDiffAction.new(repo: repo, pr_number: pr_number).call
# Get the contents of the library repository and docs repository
code_context = GetContextAction.new(path: code_repo_path).call
doc_context = GetContextAction.new(path: doc_repo_path).call
# Use Gemini 1.5 Pro to decide whether this PR requires a documentation update
result = DocUpdateNecessityGenerator.new(
code_context: code_context,
doc_context: doc_context,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate suggested changes to the documentation
doc_update_suggestions = DocUpdateSuggestionGenerator.new(
code_context: code_context,
doc_context: doc_context,
context_ignore_list: context_ignore_list,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate the changes to the suggested files
file_updates = DocUpdateGenerator.new(
code_context: code_context,
suggestions: suggestions,
doc_context: doc_context,
context_ignore_list: context_ignore_list
).generate
# Update each of the files returned by Gemini 1.5 Pro and create a new PR
Nach dem Erfolg dieses ersten Projekts haben sie die Nutzung von Agents ausgeweitet. Diese überwachen separate Ressourcen-Repositories, um eine bestimmte Katalogseite ihrer Dokumentation auf dem neuesten Stand zu halten. Es gibt sogar eine ähnliche Aufgabe, die über Nacht ausgeführt wird. Dabei analysiert Gemini die aktuelle Dokumentation, ermittelt einige Bereiche, in denen Verbesserungen möglich sind, stuft sie nach ihrer Wirkung ein und generiert einen einzelnen PR, den das Sublayer-Team jeden Morgen überprüfen kann.
KI für die Ruby-Entwickler-Community mit Gemini-Modellen
Sublayer optimiert nicht nur die eigene Entwicklerinfrastruktur und die eigenen Tools, sondern unterstützt auch Gemini-Modelle in der Kernproduktfunktionalität.
Sublayer soll einzelnen Entwicklern und kleinen Teams die Möglichkeit geben, anspruchsvolle Projekte in Angriff zu nehmen, die bisher aufgrund von Kosten oder Komplexität nicht möglich waren. Sie konzentrieren sich auf die Automatisierung mühsamer, zeitaufwendiger und sich wiederholender Aufgaben – der perfekte Anwendungsfall für KI. Das kann von umfangreichen Code-Migrationen, bei denen ähnliche Vorgänge Tausende Male wiederholt werden müssen, bis hin zu alltäglichen Effizienzsteigerungen reichen, die durch die Automatisierung kleiner Aufgaben auf einer Checkliste erzielt werden, die Zeit und Energie kosten.
Eine der größten Herausforderungen für Sublayer ist die Unterstützung der Ruby-Entwickler-Community, die im KI-Ökosystem bisher relativ wenig Beachtung gefunden hat. Durch die Integration von Gemini konnten sie der steigenden Nachfrage nach Gemini-Unterstützung in ihren Tools gerecht werden. Die Gemini-Implementierung von Sublayer ist sehr effizient und erfordert dank der Abstraktionsebene nur etwa 60 Zeilen Code. Sie verwenden strukturierte Ausgaben und interagieren mit Modellen in einem iterativen Prozess mit nur einem Durchlauf. Dieser Ansatz vereinfacht die Entwicklung und das Debugging und hilft Entwicklern, robuste Anwendungen zu erstellen.
„Wenn Sie LLM-basierte Apps entwickeln, zerlegen Sie das Problem in die kleinstmöglichen Komponenten“, rät Werner. „Sie sollten Ihre Programme so gestalten, dass sie alle Modellausgaben effektiv verarbeiten können. Das kann sogar bedeuten, dass Sie absichtlich Schritte hinzufügen, in denen eine Person die Ausgaben überprüft und bearbeitet, bevor es weitergeht.“
LLMs – ein wichtiger Bestandteil der KI-Infrastruktur
Für Sublayer sind LLMs wie Gemini wichtige Infrastrukturkomponenten, ähnlich wie Datenbanken. Ihr Framework ist so konzipiert, dass es Aufrufe von Gemini 1.5 Pro und Gemini 1.5 Flash nahtlos integriert und strukturierte Daten abruft, die Entwickler problemlos in ihren Anwendungen verwenden können. Dieser Ansatz eröffnet eine Vielzahl von Möglichkeiten, von der Gewinnung von Erkenntnissen aus verschiedenen Datenquellen bis hin zur Generierung von Code und der Transformation von Codebases über Sprachen und Bibliotheken hinweg. In der Unterschicht werden sogar die Gemini-Modelle verwendet, damit Nutzer neue funktionale Komponenten innerhalb des Frameworks generieren können. Diese „Selbstmontage“-Funktion fördert das Experimentieren und ermöglicht es Nutzern, neue Ideen schnell zu erkunden.
„Gemini ist hervorragend geeignet, um alle Probleme zu lösen, die unser Framework einfach machen soll – Codegenerierung, Aufgabenzerlegung, Befolgen von Anweisungen und Generieren neuer Datenstrukturen anhand von Beispielen.“
Nächste Schritte
Sublayer bereitet sich auf die Einführung von Augmentations.ai vor, einer Plattform, auf der alle Entwicklungsteams die von ihnen erstellten Automatisierungen nutzen können. Die erste Version umfasst zwei Tools, die auf Gemini 1.5 Pro basieren: Semantic Linting, mit dem Teams KI-basierte Code-Review-Regeln erstellen können, die den Kontext verstehen und sich entwickelnde Best Practices durchsetzen, und Weekly Summaries, das Entwicklungsaktivitäten in mehreren Repositorys und Produktmanagement-Tools in umsetzbare Erkenntnisse für Führungskräfte umwandelt.
Sie planen, weiterhin eine Mischung aus Gemini 1.5 Pro für komplexere Aufgaben und Gemini 1.5 Flash für die latenzempfindlicheren, nutzerorientierten Funktionen zu verwenden, wenn sie weitere Tools auf der Augmentations-Plattform veröffentlichen. Die Ergebnisse dieser Arbeit werden auch in ihr Open-Source-Framework einfließen, sodass die Ruby-Community von neuen Gemini-Funktionen profitieren kann, sobald sie verfügbar sind. Die Entwicklung wird dabei durch die tatsächliche Nutzung durch das Sublayer-Team vorangetrieben.
Die Geschichte von Sublayer zeigt das transformative Potenzial der Gemini API. Das zeigt, wie einfach Entwickler Gemini in ihre Workflows einbinden können, was eine Vielzahl von Möglichkeiten für Innovation und Automatisierung eröffnet. Wenn Sie mit der Entwicklung mit Gemini-Modellen beginnen möchten, lesen Sie unsere API-Dokumentation.