GitHub CoPilot : interview

Par:
ftonic

ven, 20/05/2022 - 08:06

Connaissez-vous GitHub CoPilot ? Tug Grall, de GitHub, répond à nos questions.

Beaucoup de bruits a été fait à la présentation de CoPilot, certains prédisent même la fin du développeur. Comment pourrais-tu décrire le service ?

La fin du développeur ? Oh non tout au contraire, Copilot comme le nom l’indique est le compagnon du développeur. Copilot est là pour assister le développeur dans les tâches courantes, et ou répétitives. Copilot est une évolution pour les développeurs, nous sommes passés de simples éditeurs de texte à des environnements de développement complet permettant de créer rapidement des artefacts, re-factoriser le code, et de l’aide avec de la complétion. Copilot pousse les limites de la complétion du code et des assistants en utilisant l’intelligence artificielle. Les developpeur sont toujours responsables du code et doivent bien sûr relire et tester le code généré!

Une des difficultés est de générer un code prenant en compte le contexte et les demandes des développeurs. Comment fonctionne l’outil ?

Copilot s’appuie sur les milliards de lignes de code des projets open source (dépôts git publiques) présents sur GitHub.com pour créer un modèle d’entrainement d’intelligence artificielle. Les modèles sont créés avec OpenAI Codex [1] qui permet de “transformer”, l’angais (et autres langues) en langage de programmation, notamment Python, JavaScript, TypeScript, Ruby, Java, et Go. Les modèles et API sont ensuite utilisés par des extensions dans les IDEs (VSCode, Visual Studio, JetBrains, NeoVim) pour assister les développeurs. Ces extensions tiennent compte du contexte de l’IDE permettant ainsi de faire des suggestions qui s’appliquent au projet et fichiers en cours d'édition. Par exemple, lorsque je travaille sur un projet Java avec SpringBoot, ou NodeJS avec Express et MongoDB, Copilot va tenir compte de ce contexte pour pour les suggestions. Il est intéressant de noter que les suggestions faites par Copilot s'améliorent constamment en fonction du contexte et de la façon de développeur du développeur.

Dans les démos que l’on voit, une des fonctionnalités est de générer un code à partir d’un commentaire. C’est presque magique non ?

Clairement ! Une fois l’extension activée dans l’IDE, Copilot m’assiste constamment pour gagner en productivité. J’ajoute fréquemment de nouvelles méthodes. Copilot va m’aider à générer du code dans la méthode en fonction du contexte, mais ce que j'apprécie tout particulièrement c’est lorsque Copilot m’aide également à :

  • Ecrire les tests des méthodes ajoutées
  • Exposer les méthode sous forme d’API REST.

Encore une fois, il est là pour aider le développeur à réaliser les tâches répétitives, il peut ainsi se concentrer sur les tâches les plus complexes. Et tout ça en fonction du langage et des librairies utilisés par le projet. Ce n’est pas de la magie, mais c’est vraiment “bluffant”, comme j’aime le dire lorsque Copilot : “L’essayer c’est l’adopter!”

CoPilot est en préversion technique. Quelles sont les principales fonctionnalités disponibles ?

Les fonctionnalités sont relativement simple :

  • Génération de code en fonction du contexte (code et commentaire). Copilot est capable de générer des fonctions complètes, des blocs de code multi-lignes.
  • Sélection de la suggestion par le développeur ce qui permet d’améliorer les suggestions.

Il est également possible d’utiliser Copilot dans “l’autres sens”, c'est-à-dire, sélectionner du code dans son IDE et demander à Copilot de l’expliquer.

Est-ce que les équipes de CoPilot imaginent déjà comment CoPilot pourrait devenir un outil quotidien du développeur ?

Copilot est déjà un outil quotidien du développeur, d’ailleurs Copilot est utilisé par les équipes de développement de GitHub. De très nombreux développeurs participent à la Préversion Technique, utilisent Copilot dans leur IDE. L’équipe Copilot échange avec les utilisateurs et notamment sur un fil de discussion GitHub pour prendre en compte les retours et améliorer l’outil. GitHub comme à son habitude, s’appuie sur les retours des utilisateurs pour piloter le futur de ses produits et fonctionnalités.

Je vous invite d’ailleurs à rejoindre les discussions afin d’échanger avec les équipes produits et suivre l’évolution de la roadmap des différents produits :

https://github.com/github/feedback/discussions