GitHub Copilot : ce que pensent les pros de l'IA de développement logiciel

GitHub Copilot : ce que pensent les pros de l'IA de développement logiciel Témoignages de trois développeurs qui ont pu prendre en main et tester l'assistant de programmation de la filiale de Microsoft. Les avis sont nuancés.

En juin 2022, Microsoft lançait GitHub Copilot, un assistant intelligent conçu à la fois pour traduire en lignes de code les spécifications d'une application, mais aussi proposer des suggestions au fur et à mesure de la programmation. Pour réaliser ces suggestions, Copilot décrypte le logiciel en cours d'édition et les fichiers associés au projet, puis réalise des prédictions. Ces dernières reposent sur le savoir-faire emmagasiné par un modèle de génération automatique de langage conçu par OpenAI. Baptisé Codex, il s'agit d'une déclinaison de son célèbre GPT-3. Pour l'occasion, Codex a été entraîné sur des milliards de lignes de code disponibles publiquement sur Tnternet (en incluant évidemment les repositories public de GitHub).

"On a un peu l'impression que Copilot remplace les développeurs qui font du copier-coller sur Stack Overflow (un célèbre site de questions-réponses orienté programmation, ndlr)", estime Frédéric Bouchery, team leader open data chez CCM Benchmark, filiale du Figaro qui édite le JDN. Pour les applications assez standardisées, Frédéric Bouchery se dit néanmoins bluffé par les capacités de l'assistant de Microsoft. "J'ai fait un test en créant une bataille navale en PHP. Après avoir créé la grille et ses bateaux, j'ai saisi une constante, et Copilot m'a automatiquement proposé up, down, left et right, avec les valeurs 1 et 0... C'est-à-dire exactement ce que je voulais."

De nombreuses questions en suspens

Et Vincent Vauban, développeur au sein de l'ESN Alteca, de renchérir : "Github Copilot est un excellent outil pour se former à un langage, notamment JavaScript, Python, TypeScript et Go qui font partie de ses cibles privilégiées. Vous commencez à coder puis il vous suggère trois possibilités pour compléter la saisie. Pour créer une API Rest, il vous proposera immédiatement les patterns correspondants : controler, service repository. C'est comparable à de l'auto d'auto-complétion de code, mais avec une couche d'intelligence supplémentaire."

Copilot soulève néanmoins plusieurs questions. D'abord, l'assistant adopte une logique purement linéaire. "Il pourra par exemple suggérer d'utiliser une classe (c'est-à-dire un ensemble de code permettant de créer des objets ou briques logicielles, ndlr), mais sans pour autant la créer au préalable", observe Frédéric Bouchery. Par ailleurs, les spécifications applicatives devront nécessairement être décrites en anglais pour être traduites en langage de développement. Pour l'heure, le modèle de Copilot ne prend pas en charge d'autres langues.

"Il existe une controverse autour de la légalité du processus d'apprentissage de Copilot"

Autre interrogation, l'assistant peut faire des propositions basées sur d'anciennes versions d'un langage, qui ne correspondent plus forcément aux standards actuels. Ce que GitHub reconnait d'ailleurs officiellement (cf. le questions-réponses sur son site). Raison invoquée : le modèle d'apprentissage de Copilot ingère des lignes de code sans discerner le bon grain de l'ivraie. "Quand j'ai créé ma bataille navale, il m'a suggéré des éléments sans type alors que j'utilisais PHP 8 qui intègre cette bonne pratique", illustre Frédéric Bouchery. Pour mémoire, le typage permet une meilleure appréhension de la structure d'un logiciel, et donne la possibilité de mieux gérer les impacts de modifications.

La solution ? Entrainer l'IA de Copilot sur un référentiel d'apprentissage propre à l'utilisateur, en ligne avec les versions de langage et les bonnes pratiques de programmation de l'entreprise. "Il est désormais possible de former Copilot sur les bases de code personnalisée des clients. Depuis que Copilot a été lancé, les entreprises nous ont fait part de ce besoin. C'est l'un des domaines dans lesquels nous investissons et expérimentons activement", souligne Shuyin Zhao, directeur sénior du management produit de GitHub.

Une solution jugée chère

"Il existe également une controverse autour de la légalité du processus d'apprentissage de Copilot. L'assistant peut très bien pousser dans ses réponses du code source sous licence", affirme Vincent Vauban chez Alteca. Un débat qui est notamment porté par l'eurodéputé allemand Felix Reda, le président des Jeunes Pirates européens (lire son billet sur le sujet). Tawhid Bin Omar, développeur indépendant, enfonce le clou : "En testant Copilot, je me suis rendu compte qu'il pouvait exposer y compris des données confidentielles, comme une clé d'accès à une API ou encore l'adresse d'un serveur." En entraînant Copilot sur une base d'apprentissage privé et contrôlé, on pourra évidemment passer outre ces problèmes.

Pour finir, les développeurs interrogés s'accordent tous sur un point : la solution est chère. "10 dollars par utilisateur et par mois, c'est prohibitif", confirment de concert Vincent Vauban et Tawhid Bin Omar. Et Frédéric Bouchery d'ajouter : "A ce prix, on devient exigeant. Sachant que Copilot est encore loin des résultats attendus d'une telle solution en matière de qualité."