14. Nov. 2024
KI-gestützte 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 jetzt ganz einfach modernste KI in ihre Projekte einbinden und KI-gestützte Effizienz in ihren Entwicklungsprozess einbringen.
Sublayer, ein Ruby-basiertes 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 Tool-Workflows eingebunden werden.
Sublayer-Dokumentation mit Gemini auf dem neuesten Stand halten
Eine der Möglichkeiten, die KI für Entwickler bietet, besteht darin, Teams, insbesondere in kleinen Start-ups in der Anfangsphase, zu ermöglichen, mit weniger mehr zu erreichen. Für viele kann das etwas so Einfaches wie die Dokumentation sein. In ihren eigenen Workflows löst Sublayer dieses Problem, indem es seine Bibliothek in Gemini 1.5 Pro einbindet und KI-Automatisierungen erstellt, um die Dokumentation auf dem neuesten Stand zu halten und Verbesserungsmöglichkeiten zu identifizieren.
„Das lag daran, dass das riesige Kontextfenster von Gemini uns die Möglichkeit gibt, neue Ideen auszuprobieren, ohne sich von vornherein in komplexen, optimierten Implementierungen zu verfangen“,
Der Vorgang läuft wie folgt ab:
Jedes Mal, wenn ein PR in das Haupt-Sublayer-Repository zusammengeführt wird, wird ein Agent ausgelöst, der die Dokumentation aktualisiert.
Der Kundenservicemitarbeiter generiert einen Prompt, der den gesamten Inhalt der Bibliothek, den gesamten Inhalt der Dokumentation und den gesamten relevanten Inhalt der PR-Anfrage sowie eine Anleitung zur Aufgabe enthält, und sendet ihn an Gemini.
Gemini antwortet dann mit strukturierten Ausgaben, die die Dateipfade, ‑namen und ‑inhalte enthalten, die die Sublayer-Bibliothek in ein zu verwendendes Objekt umwandelt.
Schließlich verwendet der Kundenservicemitarbeiter die empfangenen strukturierten Informationen, um einen neuen Branch zu erstellen, die angeforderten Änderungen an den Dateien vorzunehmen und einen neuen PR einzureichen.
# 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
Den vollständigen Workflow-Code finden Sie in den Open-Source-Beispielen von Sublayer.
Nach dem Erfolg dieses ersten Projekts hat das Team weitere Agenten entwickelt, die separate Ressourcen-Repositories überwachen, um eine bestimmte Katalogseite ihrer Dokumente auf dem neuesten Stand zu halten. Es gibt sogar eine ähnliche Aufgabe, die über Nacht ausgeführt wird. Dabei analysiert Gemini die aktuelle Dokumentation, identifiziert einige Verbesserungsmöglichkeiten, bewertet sie nach Auswirkungen und generiert eine einzelne PR, die das Sublayer-Team jeden Morgen bei der Arbeit erwartet.
KI mit Gemini-Modellen für die Ruby-Entwickler-Community zugänglich machen
Neben der Optimierung der eigenen Entwicklerinfrastruktur und -tools unterstützt Sublayer auch Gemini-Modelle in seinen Hauptproduktfunktionen.
Das Ziel von Sublayer ist es, einzelne Entwickler und kleine Teams in die Lage zu versetzen, ehrgeizige Projekte anzugehen, die aufgrund von Kosten oder Komplexität bisher unerreichbar waren. Sie konzentrieren sich auf die Automatisierung mühsamer, zeitaufwendiger und sich wiederholender Aufgaben – der perfekte Anwendungsfall für KI. Das kann von groß angelegten Codemigrationen, bei denen ähnliche Vorgänge tausendfach wiederholt werden müssen, bis hin zu täglichen Effizienzsteigerungen reichen, die durch die Automatisierung kleiner Aufgaben auf einer Checkliste erreicht werden, die viel Zeit und Energie in Anspruch nehmen.
Eine der Hauptherausforderungen für Sublayer besteht darin, die Ruby-Entwicklergemeinde zu unterstützen, die im KI-Ökosystem relativ unterversorgt ist. Durch die Einbindung von Gemini konnte das Unternehmen der steigenden Nachfrage nach Gemini-Unterstützung in seinen Tools nachkommen. Die Gemini-Implementierung von Sublayer ist äußerst effizient und erfordert dank der Abstraktionsschicht nur etwa 60 Codezeilen. Sie verwenden strukturierte Ausgaben und interagieren mit Modellen in einem iterativen Prozess mit nur einer Umdrehung. Dieser Ansatz vereinfacht die Entwicklung und Fehlerbehebung und hilft Entwicklern, robuste Anwendungen zu erstellen.
„Wenn Sie LLM-basierte Apps entwickeln, zerlegen Sie das Problem in möglichst kleine Komponenten“, rät Werner. „Sie sollten Ihre Programme so gestalten, dass sie mit jeder Modellausgabe effektiv umgehen können. Das kann sogar bedeuten, dass Sie absichtlich Schritte hinzufügen, die von einer Person überprüft und bearbeitet werden müssen, bevor Sie fortfahren.“
LLMs – ein zentrales Puzzleteil der KI-Infrastruktur
Für Sublayer sind LLMs wie Gemini wichtige Infrastrukturkomponenten, ähnlich wie Datenbanken. Das Framework ist so konzipiert, dass Aufrufe sowohl von Gemini 1.5 Pro als auch von Gemini 1.5 Flash nahtlos eingebunden werden können. So werden strukturierte Daten abgerufen, die Entwickler problemlos in ihren Anwendungen verwenden können. Dieser Ansatz eröffnet eine Vielzahl von Möglichkeiten, vom Extrahieren von Erkenntnissen aus verschiedenen Datenquellen bis hin zum Generieren von Code und zum Umwandeln von Codebases in verschiedenen Sprachen und Bibliotheken. Sublayer nutzt sogar die Gemini-Modelle, um Nutzern die Möglichkeit zu geben, neue funktionale Komponenten innerhalb des Frameworks selbst zu generieren. Diese „selbsterstellende“ Eigenschaft fördert das Experimentieren und ermöglicht es Nutzern, schnell neue Ideen zu entwickeln.
„Gemini löst alle Probleme, die unser Framework lösen soll – Codegenerierung, Aufgabendekomposition, Anweisungen befolgen und neue Datenstrukturen anhand von Beispielen generieren“
Nächste Schritte
Künftig wird Sublayer Augmentations.ai einführen, eine Plattform, über die die von ihnen erstellten Automatisierungen allen Entwicklungsteams zur Verfügung gestellt werden. Die erste Version umfasst zwei von Gemini 1.5 Pro unterstützte Tools: Semantic Linting, mit dem Teams KI-gestützte Codeüberprüfungsregeln erstellen können, die den Kontext verstehen und sich an sich ändernde Best Practices halten, und Wochenberichte, mit denen Entwicklungsaktivitäten in mehreren Repositories und Produktverwaltungstools in umsetzbare Informationen für die Führungsebene umgewandelt werden.
Das Unternehmen plant, 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 es weitere Tools auf der Augmentations-Plattform veröffentlicht. Diese Arbeit wird auch in das Open-Source-Framework einfließen, sodass die Ruby-Community neue Gemini-Funktionen nutzen kann, sobald sie verfügbar sind. Gleichzeitig wird sie durch die praktische 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. Weitere Informationen zum Entwickeln mit Gemini-Modellen finden Sie in der API-Dokumentation.