14 novembre 2024
Améliorer les outils de développement optimisés par l'IA avec l'API Gemini
La démocratisation de l'IA au cours de l'année écoulée a ouvert deux grandes opportunités pour les développeurs : intégrer facilement l'IA de pointe à leurs projets et introduire des gains d'efficacité dans leur processus de développement grâce à l'IA.
Sublayer, un framework d'agent d'IA basé sur Ruby, démontre la puissance et l'efficacité de l'API Gemini en intégrant nos modèles 1.5 à son offre de base pour les développeurs, ainsi qu'à ses propres workflows d'outils.
Mise à jour de la documentation sur les sous-couches avec Gemini
L'une des opportunités offertes par l'IA aux développeurs est de permettre aux équipes, en particulier dans les petites start-up en phase de démarrage, d'accomplir plus avec moins. Pour beaucoup, il peut s'agir d'un élément aussi simple que crucial que la documentation. Dans ses propres workflows, Sublayer s'attaque à ce problème en intégrant sa bibliothèque à Gemini 1.5 Pro et en créant des automatisations d'IA pour l'aider à mettre à jour sa documentation et à identifier les axes d'amélioration.
"Tout est né du fait que la fenêtre de contexte massive de Gemini vous donne vraiment l'espace nécessaire pour tester de nouvelles idées sans vous encombrer d'implémentations complexes et optimisées dès le départ."
Le processus fonctionne comme ceci :
Chaque fois qu'une demande de pull est fusionnée dans le dépôt principal de la sous-couche, un agent se charge de mettre à jour la documentation.
L'agent génère une invite contenant l'intégralité du contenu de la bibliothèque, de la documentation et de la demande de publication, ainsi que des instructions expliquant la tâche, et l'envoie à Gemini.
Gemini répond ensuite avec des sorties structurées contenant les chemins d'accès, les noms et le contenu des fichiers que la bibliothèque Sublayer convertit en objet à utiliser.
Enfin, l'agent utilise les informations structurées qu'il a reçues pour créer une branche, apporter les modifications demandées aux fichiers et envoyer une nouvelle demande de publication.
# 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
Consultez le code de workflow complet dans les exemples Open Source de Sublayer.
Après le succès de ce premier projet, l'équipe a étendu son utilisation aux agents qui surveillent des dépôts de ressources distincts afin de se concentrer sur la mise à jour d'une page de catalogue spécifique de leurs documents. Une tâche similaire s'exécute même pendant la nuit. Gemini analyse la documentation actuelle, identifie quelques axes d'amélioration, les classe en fonction de leur impact et génère une seule PR que l'équipe Sublayer doit examiner chaque matin.
L'IA au service de la communauté des développeurs Ruby grâce aux modèles Gemini
En plus de rendre son infrastructure et ses outils de développement plus efficaces, Sublayer prend également en charge les modèles Gemini dans les fonctionnalités de base de son produit.
La mission de Sublayer est de permettre aux développeurs individuels et aux petites équipes de s'attaquer à des projets ambitieux qui étaient auparavant hors de portée en raison de leur coût ou de leur complexité. Elles visent à automatiser les tâches fastidieuses, longues et répétitives, ce qui est le cas idéal pour l'IA. Il peut s'agir de migrations de code à grande échelle, où des opérations similaires doivent être répétées des milliers de fois, ou d'une efficacité au quotidien obtenue en automatisant de petites tâches d'une checklist qui prennent du temps et de l'énergie.
Le principal défi de Sublayer est de soutenir la communauté de développeurs Ruby, qui a été relativement mal desservie dans l'écosystème de l'IA. L'intégration de Gemini leur a permis de répondre à la demande croissante d'assistance Gemini dans leurs outils. L'implémentation de Gemini par Sublayer est très efficace et ne nécessite que 60 lignes de code environ grâce à sa couche d'abstraction. Ils utilisent des sorties structurées, en interagissant avec des modèles dans un processus itératif en une seule étape. Cette approche simplifie le développement et le débogage, ce qui permet aux développeurs de créer des applications robustes.
"Lorsque vous créez des applications basées sur un LLM, décomposez le problème en composants les plus petits possibles", conseille Werner. "Vous devez concevoir vos programmes pour qu'ils gèrent efficacement toute sortie de modèle, ce qui peut même impliquer d'ajouter intentionnellement des étapes à examiner et à modifier avant de passer à l'étape suivante."
Les LLM, élément essentiel de l'infrastructure d'IA
Pour Sublayer, les LLM comme Gemini sont des éléments d'infrastructure essentiels, semblables à des bases de données. Son framework est conçu pour intégrer de manière transparente les appels à Gemini 1.5 Pro et Gemini 1.5 Flash, en récupérant des données structurées que les développeurs peuvent facilement utiliser dans leurs applications. Cette approche ouvre un monde de possibilités, de l'extraction d'insights à partir de diverses sources de données à la génération de code et à la transformation de bases de code dans différents langages et bibliothèques. Sublayer utilise même les modèles Gemini pour permettre aux utilisateurs de générer de nouveaux composants fonctionnels dans le framework lui-même. Cette caractéristique d'auto-assemblage encourage l'expérimentation et permet aux utilisateurs d'explorer rapidement de nouvelles idées.
"Gemini est très efficace pour résoudre tous les problèmes que notre framework est conçu pour simplifier : génération de code, décomposition des tâches, suivi des instructions et génération de nouvelles structures de données basées sur des exemples"
Étape suivante
À l'avenir, Sublayer se prépare à lancer Augmentations.ai, une plate-forme qui met les automatisations qu'il crée à la disposition de toutes les équipes de développement. La première version comprendra deux outils optimisés par Gemini 1.5 Pro: le linting sémantique, qui permet aux équipes de créer des règles de révision du code optimisées par l'IA qui comprennent le contexte et appliquent les bonnes pratiques en constante évolution, et les Recaps hebdomadaires, qui transforment l'activité de développement sur plusieurs dépôts et outils de gestion de produits en insights pratiques pour les dirigeants.
Il prévoit de continuer à utiliser un mélange de Gemini 1.5 Pro pour les tâches plus complexes et de Gemini 1.5 Flash pour les fonctionnalités plus sensibles aux latences et destinées aux utilisateurs, à mesure qu'il déploiera d'autres outils sur la plate-forme Augmentations. Ce travail sera également intégré à leur framework Open Source, ce qui permettra à la communauté Ruby de profiter des nouvelles fonctionnalités Gemini dès leur sortie, tout en étant guidé par l'utilisation réelle de l'équipe Sublayer.
L'histoire de Sublayer illustre le potentiel transformateur de l'API Gemini. Cela prouve à quel point les développeurs peuvent facilement intégrer Gemini à leurs workflows, ce qui ouvre un monde d'opportunités d'innovation et d'automatisation. Pour commencer à créer des applications avec des modèles Gemini, consultez la documentation de l'API.