Avec les suggestions basées sur l'IA, l'auteur du code devient de plus en plus un réviseur : Progrès de l'assistance à l'ingénierie logicielle basée sur l'IA chez Google et projections pour l'avenir

Présentation des progrès de l'assistance basée sur l'IA pour l'ingénierie logicielle dans l'outillage interne de Google et ses projections pour l'avenir.

En 2019, un ingénieur logiciel - chez Google ou ailleurs - aura entendu parler des progrès de l'apprentissage automatique et de la façon dont l'apprentissage profond est devenu remarquablement efficace dans des domaines tels que la vision par ordinateur ou la traduction des langues. Cependant, la plupart d'entre eux n'auraient pas imaginé, et encore moins expérimenté, la manière dont l'apprentissage automatique pourrait bénéficier à leur travail.

Cinq ans plus tard, en 2024, les ingénieurs en informatique font preuve d'un enthousiasme généralisé quant à la manière dont l'IA les aide à écrire du code. Et un grand nombre d'entre eux ont utilisé l'autocomplétion basée sur l'apprentissage automatique, que ce soit à l'aide d'outils internes aux grandes entreprises, par exemple la complétion de code interne de Google, ou par le biais de produits disponibles dans le commerce.

Google présente ses dernières améliorations basées sur l'IA dans le contexte de la transformation continue des outils de développement logiciel internes de Google, et discute des changements prévus dans les cinq années à venir. Ils présentent également leur méthodologie sur la façon de construire des produits d'IA qui apportent de la valeur au développement de logiciels professionnels.

Ses équipes sont responsables des environnements de développement logiciel dans lesquels les ingénieurs de Google passent la majeure partie de leur temps, y compris la boucle interne (par exemple, l'IDE, la révision du code, la recherche de code), ainsi que les surfaces de la boucle externe (par exemple, la gestion des bogues, la planification). Google montre que les améliorations apportées à ces surfaces peuvent avoir un impact direct sur la productivité et la satisfaction des développeurs, deux paramètres qu'ils suivent de près.


Le défi

Un défi permanent dans ce domaine est que la technologie de l'IA évolue rapidement et qu'il est difficile de prévoir quelles idées explorer en premier. Il existe souvent un écart important entre les démonstrations techniquement réalisables et la production réussie. Google aborde le déploiement des idées vers les produits en suivant trois lignes directrices :

  1. Établir des priorités en fonction de la faisabilité technique et de l'impact : Travailler sur des idées dont la faisabilité technique a déjà été établie et dont on attend un impact élevé (mesurable) sur les flux de travail des ingénieurs.
  2. Apprendre rapidement pour améliorer l'interface utilisateur et la qualité du modèle : Concentrez-vous sur l'itération rapide et l'extraction des leçons apprises, tout en préservant la productivité et la satisfaction des développeurs. L'expérience utilisateur est tout aussi importante que la qualité du modèle.
  3. Mesurer l'efficacité : l'objectif étant d'accroître la productivité et la satisfaction, Google veut surveiller ces paramètres de manière approfondie.


Application des LLM au développement de logiciels

Avec l'avènement des architectures de transformateurs, Google a commencé à explorer la manière d'appliquer les LLM au développement de logiciels. La complétion de code en ligne basée sur les LLM est l'application la plus populaire de l'IA appliquée au développement logiciel : c'est une application naturelle de la technologie LLM d'utiliser le code lui-même comme données d'entraînement.

L'interface utilisateur semble naturelle pour les développeurs puisque la complétion automatique au niveau des mots est une fonctionnalité essentielle des IDE depuis de nombreuses années. Il est également possible d'utiliser une mesure approximative de l'impact, par exemple le pourcentage de nouveaux caractères écrits par l'IA. Pour ces raisons et d'autres encore, il était logique que cette application des LLM soit la première à être déployée.

Google a déployé des efforts pour améliorer l'expérience de l'utilisateur grâce à la complétion de code. Actuellement, ils ont constaté une croissance rapide et continue similaire à d'autres contextes d'entreprise, avec un taux d'acceptation par les ingénieurs logiciels de 37% aidant à la complétion de 50% des caractères de code. En d'autres termes, le même nombre de caractères du code sont désormais complétés avec l'aide de l'IA que ceux tapés manuellement par les développeurs. Bien que les développeurs doivent encore passer du temps à examiner les suggestions, ils ont plus de temps pour se concentrer sur la conception du code.

Nom : 2.jpg
Affichages : 8698
Taille : 14,2 Ko

Les principales améliorations proviennent à la fois des modèles (des modèles plus grands avec des capacités de codage améliorées, des heuristiques pour construire le contexte fourni au modèle, ainsi que l'ajustement des modèles sur les journaux d'utilisation contenant les acceptations, les rejets et les corrections) et de l'expérience utilisateur. Ce cycle est essentiel pour apprendre à partir d'un comportement pratique, plutôt que de formulations synthétiques.

Google utilise les journaux étendus et de haute qualité des activités internes d'ingénierie logicielle à travers de multiples outils, conservés pendant de nombreuses années. Ces données, par exemple, permettent de représenter des modifications de code très fines, des résultats de construction, des modifications pour résoudre des problèmes de construction, des actions de copier-coller de code, des corrections de code collé, des révisions de code, des modifications pour résoudre des problèmes de révision, et des soumissions de modifications à un référentiel.

Les prochains déploiements significatifs ont été la résolution des commentaires de révision de code (>8% d'entre eux sont maintenant traités avec une assistance basée sur l'IA) et l'adaptation automatique du code collé au contexte environnant (maintenant responsable d'environ 2% du code dans l'IDE). D'autres déploiements incluent l'instruction à l'IDE d'effectuer des modifications de code en langage naturel et la prédiction de correctifs en cas d'échec de la construction. D'autres applications, par exemple la prédiction de conseils pour la lisibilité du code suivant un modèle similaire, sont également possibles.

Ensemble, ces applications déployées ont été couronnées de succès et très utilisées chez Google, avec un impact mesurable sur la productivité dans un contexte industriel réel.

Nom : 1.jpg
Affichages : 371
Taille : 25,0 Ko

Google commente son travail en déclarant :

Notre travail jusqu'à présent nous a appris plusieurs choses :

  1. C'est avec une expérience utilisateur qui s'intègre naturellement dans le flux de travail des utilisateurs que nous avons obtenu l'impact le plus important. Une suggestion est présentée à l'utilisateur, l'amenant à l'étape suivante de son flux de travail en un seul clic. Les expériences exigeant de l'utilisateur qu'il se souvienne de déclencher la fonction n'ont pas réussi à s'adapter.
  2. Nous observons qu'avec les suggestions basées sur l'IA, l'auteur du code devient de plus en plus un réviseur, et il est important de trouver un équilibre entre le coût de la révision et la valeur ajoutée. Nous abordons généralement ce compromis avec des objectifs de taux d'acceptation.
  3. Des itérations rapides avec des expériences A/B en ligne sont essentielles, car les mesures hors ligne ne sont souvent que des approximations de la valeur pour l'utilisateur. En utilisant des outils internes pour nos fonctionnalités basées sur l'IA, nous bénéficions grandement de la possibilité de lancer et d'itérer facilement, de mesurer les données d'utilisation et de demander directement aux utilisateurs ce qu'ils pensent de leur expérience dans le cadre d'études UX.
  4. Des données de haute qualité provenant des activités des ingénieurs de Google à travers les outils logiciels, y compris les interactions avec nos fonctionnalités, sont essentielles pour la qualité de notre modèle.


Nous observons qu'il est important d'optimiser la conversion de l'opportunité (principalement une activité de l'utilisateur, illustrée en haut de l'entonnoir ci-dessous) à l'impact (assistance de l'IA appliquée, en bas de l'entonnoir), tout en éliminant les goulets d'étranglement des étapes intermédiaires de l'entonnoir en tirant parti des améliorations apportées à l'expérience utilisateur et au modèle.

Nom : 3.jpg
Affichages : 384
Taille : 33,9 Ko
Prochaines étapes

Encouragés par son succès jusqu'à présent, Google redouble d'efforts pour apporter les derniers modèles de base (série Gemini) infusés avec les données des développeurs pour alimenter les applications existantes et nouvelles de ML à l'ingénierie logicielle dans Google.

Dans l'ensemble de l'industrie, la complétion de code basée sur la ML a donné un coup de fouet aux développeurs de logiciels. Bien qu'il existe encore des possibilités d'améliorer la génération de code, Google s'attend à ce que la prochaine vague d'avantages provienne de l'assistance ML dans une gamme plus large d'activités d'ingénierie logicielle, telles que les tests, la compréhension du code et la maintenance du code, cette dernière étant d'un intérêt particulier dans les entreprises.

Google souligne également deux tendances observées dans l'industrie :

  • L'interaction homme-machine a évolué vers le langage naturel en tant que modalité commune, et on assiste à une évolution vers l'utilisation du langage en tant qu'interface pour les tâches d'ingénierie logicielle et en tant que passerelle vers les besoins d'information des développeurs de logiciels, le tout intégré dans les IDE.
  • L'automatisation basée sur le ML de tâches à plus grande échelle (du diagnostic d'un problème à la mise en place d'une solution) a commencé à montrer des signes de faisabilité. Ces possibilités sont motivées par des innovations dans l'utilisation d'agents et d'outils, qui permettent la construction de systèmes utilisant un ou plusieurs ML en tant que composant pour accomplir une tâche plus importante.


Pour développer les succès susmentionnés vers ces capacités de la prochaine génération, la communauté des praticiens et des chercheurs travaillant dans ce domaine bénéficierait de repères communs pour aider à faire avancer le domaine vers des tâches d'ingénierie pratiques. Jusqu'à présent, les repères se sont surtout concentrés sur la génération de code (par exemple, HumanEval).

Dans un contexte d'entreprise, cependant, des repères pour un éventail plus large de tâches pourraient être particulièrement utiles, par exemple pour les migrations de code et le débogage de la production. Certains benchmarks, comme celui pour la résolution de bogues (par exemple, SWEBench), et des prototypes ciblant ces benchmarks (par exemple, de Cognition AI) ont été publiés. Google encourage la communauté à se réunir pour suggérer d'autres critères de référence afin de couvrir un plus large éventail de tâches de génie logiciel.

Remerciements

Google conclue :

Ce projet est le fruit du travail de nombreuses personnes de l'équipe Google Core Systems & Experiences et de Google Deepmind. Cet présentation a été rédigé en collaboration avec Boris Bokowski (directeur de Google Coding Tools), Petros Maniatis (recherche), Ambar Murillo (UXR) et Alberto Elizondo (UXD). Nous tenons à exprimer notre profonde gratitude aux personnes qui ont contribué aux différentes fonctionnalités : Adam Husting, Ahmed Omran, Alexander Frömmgen, Ambar Murillo, Ayoub Kachkach, Brett Durrett, Chris Gorgolewski, Charles Sutton, Christian Schneider, Danny Tarlow, Damien Martin-Guillerez, David Tattersall, Elena Khrapko, Evgeny Gryaznov, Franjo Ivancic, Fredde Ribeiro, Gabriela Surita, Guilherme Herzog, Henrik Muehe, Ilia Krets, Iris Chu, Juanjo Carin, Katja Grünwedel, Kevin Villela, Kristóf Molnár, Lera Kharatyan, Madhura Dudhgaonkar, Marcus Revaj, Nimesh Ghelani, Niranjan Tulpule, Pavel Sychev, Siddhant Sanyam, Stanislav Pyatykh, Stoyan Nikolov, Ugam Kumar, Tobias Welp, Vahid Meimand, Vincent Nguyen, Yurun Shen et Zoubin Ghahramani. Merci à Tom Small pour la création des graphiques de cet article. Merci également aux contributeurs DIDACT, aux corrections de build, aux corrections de lisibilité et à la résolution des commentaires de revue de code.
Source : Google Research

Et vous ?

Quel est votre avis sur le sujet ?

Voir aussi :

AlphaCode 2 : le générateur de code est alimenté par l'IA générative Gemini de Google et il est bien plus performant que son prédécesseur

Le Codage assisté par l'IA gratuit avec Colab : Google introduira bientôt des fonctions de codage de l'IA, utilisant la famille de modèles de code la plus avancée de Google, Codey

75 % des ingénieurs logiciels d'entreprise utiliseront des assistants de code IA d'ici 2028 contre moins de 10 % au début de 2023, selon Gartner