Réponse courte
GitHub Copilot est un programmeur en binôme IA que GitHub a lancé en aperçu technique limité le 29 juin 2021. Il fonctionne dans Visual Studio Code et suggère des lignes entières ou des fonctions complètes à partir du code et des commentaires du fichier que vous modifiez.
Question de suivi Les programmeurs en binôme IA vont-ils remplacer les développeurs?
Hier, GitHub a annoncé GitHub Copilot, un outil qu’il appelle un « programmeur en binôme IA » (AI pair programmer). La programmation en binôme est une pratique où deux développeurs partagent un seul clavier : l’un tape, l’autre observe, suggère et repère les erreurs. Copilot joue le second rôle. Pendant que vous tapez dans votre éditeur, il propose la ligne suivante, ou parfois une fonction entière, et vous décidez de la garder ou non.
Le modèle derrière l’outil est un nouveau système d’OpenAI, conçu avec GitHub. GitHub affirme qu’il écrit du code beaucoup mieux que GPT-3, en partie parce que ses données d’entraînement contiennent beaucoup plus de code source public, y compris du code tiré de dépôts publics sur GitHub. Pour l’instant, Copilot est un aperçu technique dont les places sont limitées; la plupart des développeurs devront donc s’inscrire et attendre.
Comment fonctionne Copilot
Copilot s’installe comme extension de Visual Studio Code, un éditeur de code gratuit et populaire. Il fonctionne aussi dans GitHub Codespaces, la version infonuagique de cet éditeur. Pendant que vous travaillez, l’extension transmet ce que vous avez écrit, code et commentaires, au service Copilot de GitHub, qui renvoie des suggestions directement dans l’éditeur. Appuyez sur Tab pour en accepter une, continuez à taper pour l’ignorer, ou faites défiler les autres possibilités.
Le contexte utilisé est le fichier que vous avez ouvert. Selon la FAQ de GitHub, il ne lit pas encore les autres fichiers de votre projet, et les très longs fichiers sont tronqués pour que seules les quelques centaines de lignes avant votre curseur comptent. Cela signifie que de bons commentaires, des noms de fonctions clairs et des docstrings utiles (de courtes descriptions en tête d’une fonction) lui donnent davantage de matière.
GitHub cite Python, JavaScript, TypeScript, Ruby et Go comme les langages où l’aperçu donne les meilleurs résultats, même s’il en comprend des dizaines d’autres.
Un exemple concret
La page produit de Copilot montre une façon de travailler simple : décrivez ce que vous voulez dans un commentaire, commencez la fonction, et laissez-le en remplir le corps. En Python, cela pourrait ressembler à ceci :
# Retourne le nombre de jours entiers entre deux dates fournies sous forme de chaînes "YYYY-MM-DD"
def days_between(start, end):À partir de ce commentaire et de cette signature, Copilot proposerait un corps de fonction, qui convertirait probablement les deux chaînes en dates avant de les soustraire. Votre travail consiste ensuite à le lire, à vous demander s’il gère les cas qui vous importent (et si end vient avant start?), et à le tester.
La page de GitHub mentionne aussi d’autres usages : compléter du code répétitif une fois que vous avez écrit quelques exemples, suggérer des tests unitaires adaptés à une fonction, et montrer plusieurs solutions différentes pour que vous puissiez comparer les approches.
Ce que GitHub dit de ses limites
La FAQ de GitHub est d’une franchise inhabituelle au sujet des faiblesses :
| Affirmation à vérifier | Ce que dit GitHub |
|---|---|
| À quelle fréquence a-t-il raison? | Dans un test interne sur des fonctions Python dont on avait retiré le corps, 43 % de réponses correctes du premier coup et 57 % en 10 essais |
| Teste-t-il son code? | Non. Les suggestions peuvent ne pas compiler ni s’exécuter |
| Peut-il être dépassé? | Oui. Il peut suggérer des façons anciennes ou obsolètes d’utiliser des bibliothèques |
| Copie-t-il le code d’entraînement? | Environ 0,1 % des suggestions peuvent contenir des extraits copiés mot pour mot |
| Est-il sécuritaire? | Le code public contient des pratiques non sécuritaires, et Copilot peut les reproduire |
GitHub conseille de revoir et de tester le code de Copilot comme n’importe quel autre code. L’entreprise précise aussi que le code que vous écrivez avec l’aide de Copilot vous appartient, tout comme la responsabilité qui s’y rattache.
À essayer : si vous obtenez l’accès, écrivez un commentaire qui décrit une petite fonction que vous avez déjà écrite, laissez Copilot suggérer un corps, et comparez-le ligne par ligne à votre propre version. Écrivez ensuite trois cas de test et voyez si sa version les réussit.
Les programmeurs en binôme IA vont-ils remplacer les développeurs?
Rien dans cet aperçu ne va dans ce sens. Copilot est conçu autour d’une personne qui garde les commandes : il suggère, et vous acceptez, modifiez ou rejetez. Les propres chiffres de GitHub montrent qu’il se trompe plus d’une fois sur deux au premier essai dans son banc d’essai, et il ne peut pas vérifier si son code s’exécute. Quelqu’un doit encore comprendre le problème, choisir une approche, examiner chaque ligne et tester le résultat. C’est le cœur du métier de développeur.
Ce qui pourrait changer, c’est la façon dont ce temps est utilisé. Une bonne partie de la programmation consiste à chercher comment fonctionne une bibliothèque ou à écrire du code passe-partout (boilerplate), l’échafaudage répétitif dont chaque projet a besoin. Si Copilot en prend davantage en charge, les développeurs peuvent consacrer plus d’attention à la conception, à la révision et aux tests. Les premiers testeurs cités par GitHub le décrivent comme une aide pour les langages et les cadres d’applications qu’ils connaissent mal, ce qui laisse penser qu’il pourrait être le plus utile quand on apprend quelque chose de nouveau.
Des questions restent aussi ouvertes : comment le code des dépôts publics devrait servir à l’entraînement, comment repérer les rares extraits copiés, et comment empêcher les pratiques non sécuritaires de se retrouver dans les suggestions. GitHub dit vouloir en discuter avec les développeurs. Pour l’instant, la façon saine de voir Copilot, c’est comme un assistant rapide qui se trompe parfois. Beaucoup s’attendent à ce que des outils de ce genre deviennent courants dans les éditeurs, ce qui rend les compétences de lecture de code et de test plus précieuses, et non moins.
Sources
- Introducing GitHub Copilot: your AI pair programmer — GitHub Blog, 29 juin 2021
- GitHub Copilot: Your AI pair programmer (product page and FAQ, June 2021) — GitHub, 29 juin 2021