Programmation assistée par IA
Avec Microsoft Github Copilot et Google Colab
La programmation assistée par IA est, comme pour d’autres domaines de l’intelligence artificielle, en plein essor. Google Colab, Github Copilot, Intellicode,… De plus en plus de solutions apparaissent. Nous allons voir dans cet article l’aide que peuvent apporter Google Colab et Github Copilot en ce début d’année 2024.
Google Colab
Créé en 2017, Google Colab est d’après Google le moyen le plus simple de commencer à programmer en Python. Plus de 7 millions de personnes, dont un grand nombre d’étudiants, l’utiliseraient déjà pour accéder à d’immenses ressources informatiques. Il est vrai qu’il est gratuit et ne nécessite aucune installation de logiciel. Colab est clairement un outil très utile pour l’apprentissage automatique, l’analyse de données et l’auto- formation et il ne cesse de s’améliorer grâce au sacrosaint principe du ML ( Machine Learning). Google a annoncé que Colab allait bientôt ajouter des fonctionnalités de codage IA telles que la complétion de code, la génération de code en langage naturel et un chatbot d’aide à la programmation. Il utilise Codey, une famille de modèles de codes créés pour les bons vieux Palm Pilot 2. Codey a été entraîné sur un vaste ensemble de données de codes de haute qualité, sous licence assez permissive et provenant de sources externes, afin d’améliorer les performances des travaux de programmation. Les versions de Codey spécifiques à Colab ont été personnalisées spécialement pour Python.
Accès à des fonctions puissantes et à un chatbot intelligent
Les utilisateurs de Colab US sont de vrais privilégiés. Ils bénéficient d’un premier accès à ces modèles Codey au sein de Colab, augmentant ainsi considérablement la vitesse, la qualité et la compréhension du code généré. Les premières fonctionnalités se concentrent sur la génération de code. Le langage naturel utilisé pour cela aide à générer des blocs de codes plus conséquents en termes de taille et de complexité. Il est capable d’écrire des fonctions entières à partir de quelques commentaires, voire de simples invites de commandes ( débuts d’écritures). L’objectif est bien évidemment de retirer aux développeurs l’obligation d’écrire du code très répétitif — le fameux « boilerplate code » — afin de pouvoir se concentrer sur les aspects les plus intéressants et les plus complexes de la programmation et des algorithmes métier. Colab s’est également enrichi d’un chatbot intelligent. Il sera bientôt possible de lui poser des questions liées au code et à la création de programmes directement depuis Colab.
Démocratiser l’apprentissage automatique pour tous
L’accès à Colab est gratuit et très simple : il suffit d’avoir une connexion Internet viable, et c’est tout. Colab est utilisé par des millions d’étudiants chaque mois notamment pour apprendre la programmation Python et le ML ( l’apprentissage automatique). Des groupes aux ressources limitées accèdent gratuitement à Colab et à des GPU de grande puissance dont il a besoin pour « faire le job » et ce partout dans le monde. De nombreuses autres fonctionnalités et améliorations devraient être bientôt disponibles pour améliorer encore l’expérience utilisateur de l’outil intelligent. L’accès à ces fonctionnalités sera déployé progressivement au cours des mois qui viennent, en commençant par les abonnés payants aux États- Unis, avant d’être — normalement — étendu progressivement jusqu’au « niveau » gratuit.
Développement assisté par L’IA dans Visual Studio Intellicode
L’assistant IA de Visual Studio, Intellicode, peut lui aussi aider fortement les développeurs dans leur travail, et ce, de plusieurs manières. Il utilise le contexte de votre code combiné à des modèles qu’il a appris à partir de milliers de lignes de code open source publiques en vue de fournir des améliorations basées sur L’IA à son comparse toujours présent dans Visual Studio, Intellisense. Concrètement, il produit des suggestions, des saisies semi- automatiques de code prenant en compte le contexte, des achèvements automatiques de lignes ou encore des exemples d’utilisation D’API. Intellicode, grâce à sa petite intelligence artificielle, utilise le contexte et les modèles de code pour classer dynamiquement les suggestions.
Coder, profiler et déboguer plus vite
Intellicode peut générer du code à partir d’une description en langage naturel, c’est- à- dire de « simples » spécifications, mais formulées de manière suffisamment technique pour pouvoir être correctement transformées en fonctions, méthodes et programmes divers. Il peut aussi partiellement — mais c’est déjà beaucoup — « prédire » la suite de programmes en fonction des modèles de programmation employés ( des achèvements). La refactorisation de code via des recommandations sensibles au contexte et pilotées par IA sont aussi au programme. Intellicode aide à profiler et à déboguer le code. Les performances sont optimisées grâce aux suggestions de L’IA, à l’identification des bogues et aux propositions de résolutions qu’elle fait.
Une meilleure compréhension du code
Intellicode peut être interrogé afin de fournir des explications plus compréhensibles sur des sections de code données pour des développeurs qui reprennent un projet mal documenté où les commentaires sont absents, incomplets ou insuffisants et de manière générale le code peu clair. Tout développeur ayant un peu de bouteille sait que ce cas de figure est, bien malheureusement, loin d’être rare. Il fournit des réponses à nombre de questions de programmation ainsi que des extraits de code de remplacement parfois très pertinents.
Github Copilot & Intellicode
Github Copilot est une extension D’IDE ( environnement de développement intégré) basée sur l’intelligence artificielle et développée conjointement par Github et Openai pour aider les développeurs en essayant de compléter automatiquement le code. Disponible par abonnement pour les développeurs individuels et les entreprises, l’outil a été annoncé pour la toute première fois le 29 juin 2021 et a été entraîné sur un grand nombre de dépôts publics Github. Github Copilot est en fait l’évolution du plugin Bing Code Search pour Visual Studio 2013, un projet de Microsoft Research qui était sorti en février 2014. Ce plugin gratuit exploitait diverses sources, telles que MSDN ou Stackoverflow, pour fournir des extraits de code adaptés au contexte en réponse à des requêtes en langage naturel. Github Copilot est capable de générer du code adapté lorsqu’on lui fournit un problème de programmation en langage naturel. Il est également capable de décrire un code d’entrée en anglais et de traduire ce code dans un autre langage de programmation — le choix du langage cible reste encore limité. Github Copilot est basé sur la technologie utilisant Codex, descendant du moteur d’intelligence artificielle GPT- 3 ( Generative Pre- trained Transformer 3) développé par Openai qui suggérait du code en temps réel aux développeurs. Le modèle Codex a été formé sur des Gigaoctets de code source ( dépôts publics Github et autres codes sources accessibles au public) dans une douzaine de langages de programmation différents. Cela inclut un ensemble de données filtré de 159 gigaoctets de code Python provenant de 54 millions de dépôts Github publics. Le modèle GPT- 3 d’open AI a été cédé sous licence exclusive à Microsoft, la société mère de Github. Github Copilot est disponible sous forme d’extension pour Azure Data Studio, la suite D’IDE Jetbrains, Neovim, Vim, Visual Studio Code et Visual Studio. L’outil inclut des fonctionnalités d’aide au développement, telles que la conversion des commentaires de code en code exécutable et la saisie semi- automatique de morceaux de code, des sections de code répétitives, des méthodes et fonctions entières. Le logiciel est gratuit pour les étudiants, les enseignants et les développeurs contribuant à des projets open- source populaires et payant pour les autres. Si vous voulez voir des exemples concrets de Github Copilot en action, consultez son site web à l’adresse https:// github. com/ features/ copilot. Le couple fort efficace formé par Github Copilot et Intellicode aide les développeurs à écrire du code plus rapidement et avec une plus grande précision, et à développer une compréhension plus approfondie de la base de code. Le temps gagné permet de réaliser d’autres travaux de développement comme le débogage, le profilage ou l’écriture de tests unitaires ( domaine lui aussi susceptible d’être assisté par L’IA). Github Copilot
est distribué sous la forme de deux extensions distinctes disponibles dans le Visual Studio Marketplace. La première, l’extension Github Copilot, ajoute une assistance IA améliorée au processus de développement en générant des lignes entières ou des blocs de code basés sur le contexte fourni par le développeur. Elle s’appuie sur des modèles D’IA formés sur des milliards de lignes de code open source pour fournir des suggestions de code de type autocomplétion en temps réel, directement dans l’éditeur au fur et à mesure que vous codez. Vous pouvez obtenir des suggestions de Github Copilot dans L’IDE en commençant à écrire le code que vous souhaitez utiliser, ou en écrivant une signature de fonction ou un commentaire en langage naturel dans votre fichier de code décrivant ce que vous voulez que le programme fasse. Cela contribue à écrire du code plus rapidement et avec moins de travail. Pour pouvoir installer Github Copilot, vous devez posséder à minima la version 17.5.5 de Visual Studio 2022. La deuxième extension, Github Copilot Chat, représente une expérience de conversation entièrement intégrée et alimentée par L’IA depuis son acolyte Github Copilot. Elle permet aux développeurs d’interagir avec Copilot à l’aide d’une interface de conversation disponible au sein de L’IDE Visual Studio. En posant des questions relatives au code en langage naturel, les développeurs peuvent recevoir des suggestions de code spécifiques au contexte, obtenir une analyse et une explication approfondies du fonctionnement d’un bloc de code, générer des tests unitaires, rechercher des solutions à des problèmes et obtenir des propositions de correctifs. Vous pouvez ainsi obtenir des informations intéressantes sur la programmation et une assistance efficace, sans avoir à quitter L’IDE. Tout ceci devrait contribuer à l’écriture de meilleurs programmes.
Tout n’est pas automatisable… pour le moment
L’intelligence artificielle a fait de nombreux progrès au cours des dernières décennies. Il y a seulement une quinzaine d’années, cette technologie appartenait principalement au domaine de la recherche et ses applications industrielles étaient bien peu nombreuses. Cela a beaucoup changé. Elle est désormais omniprésente et embarquée dans de nombreux produits sans que vous ne le sachiez toujours. Des recommandations d’articles à lire sur votre fil d’information Facebook ou X, de l’assistance à la conduite de votre voiture ou encore de l’identification via la reconnaissance faciale sur les smartphones, les applications concrètes ne manquent pas. C’est même devenu désormais un composant incontournable dans l’implémentation de certains produits. Certains, comme l’ancien directeur du département d’intelligence artificielle de Tesla, Andrej Karpathy, pensent que l’intelligence artificielle supplantera les méthodes actuelles de développement logiciel. Ils croient aussi qu’elle conduira au mouvement Software 2.0 dans lequel le contrôle du logiciel sera géré par différents modèles tels que des arbres de décisions ou des réseaux de neurones. Néanmoins, comme nous l’avons évoqué dans un précédent article, ces prédictions ne vont pas se réaliser tout de suite. Il faudra attendre sans doute encore quelques décennies. Il existe de nombreuses manières de construire un modèle d’intelligence artificielle performant. Toutes ces méthodes dépendent de la qualité et de la quantité des données utilisées pour construire ce modèle. Alors qu’il est, somme toute, assez aisé de construire un modèle probabiliste qui fonctionne la plupart du temps ( et dans lequel il est acceptable d’avoir quelques faux positifs ou négatifs), il est bien plus difficile de construire un modèle devant produire un résultat correct absolument tout le temps. C’est sans doute l’une des raisons pour lesquelles le système de pilotage automatique promis par Tesla au cours de la décennie passée n’est, à l’heure qu’il est, toujours pas disponible. Il en est de même pour le développement logiciel. Il peut être extrêmement difficile d’automatiser la tâche du développement logiciel, compte tenu de sa grande complexité. Il est bien plus simple de suggérer du code que d’en automatiser la production. La principale raison à cela est assez simple. Le développement logiciel va bien au- delà du code et couvre de très nombreux aspects : architecture logicielle, choix technologiques, contraintes de sécurité, déploiement, infrastructure, testing et bien d’autres. Les assistants de code comme Colab, Copilot et autres Tabnine utilisent l’intelligence artificielle disponible depuis quelques années et offrent une aide au développement via la suggestion de code. Ces technologies reposent sur plusieurs modèles d’intelligence artificielle et proposent des éléments de code en temps- réel, mais elles ne permettent pas — du moins pour l’instant — d’automatiser complètement le développement logiciel. Elles en sont même encore très loin.
Des avantages, mais pas seulement
Les technologies qui reposent sur l’intelligence artificielle aident, certes, les développeurs à écrire du code plus rapidement, mais il ne faut pas négliger pour autant tous les problèmes qu’elles peuvent introduire en parallèle. Une étude récente conclurait même que près de 40 % du code proposé par Github Copilot contiendrait des vulnérabilités et exposeraient par conséquent les développeurs l’utilisant à produire du code vulnérable. D’autres problèmes ont été soulevés, plus particulièrement des problèmes légaux ou de failles potentielles de sécurité. Les développeurs travaillant dans des entreprises et écrivant du code propriétaire peuvent introduire du code suggéré par Github Copilot publié sous licence open- source sans le mentionner — et pour cause, puisqu’ils ne le savent pas. Ce manque de maîtrise est incompatible avec les principes de qualité et de sécurisation du code. Ce que Github Copilot et ses concurrents apportent, c’est une meilleure aide au développeur et des suggestions qui vont au- delà de la simple ligne de code complétée. Mais l’assistant n’aide nullement dans la définition d’une architecture logicielle, dans la création de tests ou même le déploiement d’une application. Ces métiers sont encore spécifiques, peu automatisables et requièrent des compétences très précises. Et avant même de pouvoir les automatiser, de nouvelles technologies doivent voir le jour, comme la spécification d’architecture logicielle, la formalisation des spécifications et des besoins métiers dans une autre forme que le langage naturel. Un langage de conception orienté IA, par exemple, ouvert et si possible universel. En bref, et en conclusion, si l’intelligence artificielle aide bel et bien à améliorer la productivité des développeurs, elle est encore bien loin de pouvoir les remplacer complètement, qu’ils se rassurent.
Le tableau qui suit, extrait de la documentation de Microsoft, compare les fonctionnalités du couple Github Copilot ( et Github Copilot Chat) avec celles d’intellicode. Vous pouvez utiliser Github Copilot et Intellicode ensemble ou seulement isolément. Vous n’avez pas à choisir entre les deux.