Partager

14 novembre 2024

Améliorer les outils de développement optimisés par l'IA avec l'API Gemini

Scott Werner

PDG de Sublayer

Paige Bailey

Ingénieur en expérience des développeurs d'IA

Vishal Dharmadhikari

Ingénieur en solutions produit

Image principale de présentation des sous-calques

La démocratisation de l'IA au cours de l'année écoulée a ouvert deux grandes opportunités pour les développeurs : l'intégration d'une IA de pointe dans leurs projets est devenue incroyablement facile, et ils peuvent désormais bénéficier d'une efficacité basée sur l'IA dans leur processus de développement.

Sublayer, un framework d'agents 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 principale pour les développeurs, ainsi qu'à ses propres workflows d'outils.

Mettre à jour la documentation Sublayer avec Gemini

L'IA offre aux développeurs la possibilité de permettre aux équipes, en particulier dans les petites start-ups en phase de démarrage, d'en faire plus avec moins de ressources. Pour beaucoup, cela peut se traduire par quelque chose d'aussi simple, mais crucial, que la documentation. Dans leurs propres workflows, les équipes de Sublayer s'attaquent à ce problème en intégrant leur bibliothèque à Gemini 1.5 Pro et en créant des automatisations d'IA pour les aider à maintenir leur documentation à jour et à identifier les points à améliorer.

"Tout cela est possible parce que l'énorme fenêtre de contexte de Gemini vous donne vraiment la marge de manœuvre nécessaire pour essayer de nouvelles idées sans vous enliser dans des implémentations complexes et optimisées dès le départ",

— Scott Werner, PDG de Sublayer, qui a récemment écrit sur ce concept dans Waste Inferences!

Le processus fonctionne comme ceci :

  1. Chaque fois qu'une demande d'extraction est fusionnée dans le dépôt Sublayer principal, un agent est déclenché pour mettre à jour la documentation.

  2. L'agent génère une requête qui contient l'intégralité de la bibliothèque, l'intégralité de la documentation et tout le contenu pertinent de la demande d'extraction, ainsi que des instructions expliquant la tâche, et l'envoie à Gemini.

  3. 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.

  4. Enfin, l'agent prend les informations structurées qu'il a reçues et les utilise pour créer une branche, apporter les modifications demandées aux fichiers et envoyer une nouvelle demande d'extraction.

            
              
# 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 pour s'assurer qu'une page de catalogue spécifique de sa documentation reste à jour. Il existe même une tâche similaire qui s'exécute la nuit, où Gemini analyse la documentation actuelle, identifie quelques points à améliorer, les classe en fonction de leur impact et génère une seule demande d'extraction que l'équipe Sublayer peut consulter et examiner chaque matin.

L'IA au service de la communauté des développeurs Ruby avec les modèles Gemini

En plus de rendre leur propre infrastructure et leurs outils de développement plus efficaces, Sublayer est également compatible avec les modèles Gemini dans les fonctionnalités de base de ses produits.

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 se concentrent sur l'automatisation des tâches fastidieuses, chronophages et répétitives, ce qui constitue un cas d'utilisation 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'améliorations quotidiennes de l'efficacité obtenues en automatisant de petites tâches d'une checklist qui consomment du temps et de l'énergie.

L'un des principaux défis de Sublayer est de soutenir la communauté des 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 Gemini de Sublayer est très efficace et ne nécessite qu'environ 60 lignes de code grâce à sa couche d'abstraction. Ils utilisent des sorties structurées et interagissent avec les modèles dans un processus itératif à un seul tour. Cette approche simplifie le développement et le débogage, ce qui aide les développeurs à créer des applications robustes.

"Lorsque vous créez des applications basées sur des LLM, décomposez le problème en composants les plus petits possible", conseille Werner. "Vous devez concevoir vos programmes de manière à gérer efficacement toute sortie de modèle, ce qui peut même signifier ajouter intentionnellement des étapes pour qu'une personne puisse examiner et modifier le résultat avant de passer à la suite."

Les LLM, un élément clé de l'infrastructure d'IA

Pour Sublayer, les LLM comme Gemini sont des éléments d'infrastructure essentiels, semblables à des bases de données. Leur framework est conçu pour intégrer de manière fluide 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érentes langues et bibliothèques. La sous-couche utilise même les modèles Gemini pour permettre aux utilisateurs de générer de nouveaux composants fonctionnels au sein du 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 excellent pour résoudre tous les problèmes que notre framework est conçu pour faciliter : génération de code, décomposition des tâches, suivi des instructions et génération de nouvelles structures de données à partir d'exemples."

— Scott Werner, Sublayer

Étape suivante

À l'avenir, Sublayer s'apprête à lancer Augmentations.ai, une plate-forme qui met les automatisations qu'elle crée à la disposition de toutes les équipes de développement. Leur première version comprendra deux outils optimisés par Gemini 1.5 Pro : Semantic Linting, qui permet aux équipes de créer des règles d'analyse du code optimisées par l'IA qui comprennent le contexte et appliquent les bonnes pratiques en constante évolution, et Weekly Summaries, qui transforme l'activité de développement dans plusieurs dépôts et outils de gestion des produits en insights exploitables pour les dirigeants.

Ils prévoient 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 à la latence et destinées aux utilisateurs, à mesure qu'ils déploient davantage d'outils sur la plate-forme Augmentations. Ces travaux seront également réintégrés à leur framework Open Source, ce qui permettra à la communauté Ruby de profiter des nouvelles fonctionnalités de Gemini au fur et à mesure de leur sortie, tout en étant guidée par l'utilisation réelle de l'équipe Sublayer.

L'histoire de Sublayer illustre le potentiel transformateur de l'API Gemini. Cela témoigne de la facilité avec laquelle les développeurs peuvent intégrer Gemini à leurs workflows, ouvrant ainsi un monde d'opportunités d'innovation et d'automatisation. Pour commencer à créer des applications avec les modèles Gemini, consultez notre documentation sur l'API.