lundi, 6 décembre 2021

L’aperçu de GitHub Copilot me donne de l’espoir

Les gens prédisent la mort de la programmation informatique depuis aussi longtemps que je me souvienne. Cela ne s’est pas (encore) produit pour diverses raisons, dont la plus importante est que la programmation est autant un art qu’une science ou une discipline d’ingénierie.

GitHub Copilot, présenté comme « Votre programmeur de paires d’IA » et actuellement dans un aperçu technique limité, s’efforce d’aider à automatiser la programmation d’une manière qui va un peu au-delà de ce qu’IntelliSense et autres peuvent fournir. Il n’est pas complètement autonome. Vous devez déclarer (taper) vos intentions avant que Copilot puisse générer un code significatif, comme nous le verrons, et vous devez également superviser Copilot pour le remettre sur les rails lorsqu’il dérape inévitablement.

Copilot est un service cloud avec des interfaces vers Visual Studio Code (s’exécutant sur votre propre machine ou s’exécutant dans le cloud sur les espaces de code GitHub) ; aux IDE JetBrains, tels que IntelliJ IDEA ; et à Neovim. Le service cloud est un moteur de prédiction de code alimenté par OpenAI Codex, un modèle de langage formé sur des milliards de lignes de code public.

Oui, il y a eu une controverse au sujet du Codex et de Copilot. Avant de commencer à vous plaindre des violations potentielles du droit d’auteur et de la vie privée de Copilot (je vous regarde, Free Software Foundation), vous devez cependant comprendre que le Codex a été formé sur du code accessible au public d’une manière souvent considérée comme une utilisation équitable. au sein de la communauté d’apprentissage automatique.

Vous devez également comprendre que Codex est un synthétiseur de code, pas un moteur de recherche. Les développeurs de Copilot reconnaissent que ce n’est peut-être pas le dernier mot sur le sujet :

… il s’agit d’un nouvel espace, et nous souhaitons engager une discussion avec les développeurs sur ces sujets et diriger l’industrie en définissant des normes appropriées pour la formation de modèles d’IA.

Comment fonctionne GitHub Copilot

Selon GitHub, « OpenAI Codex a été formé sur le code source accessible au public et le langage naturel, il comprend donc à la fois la programmation et les langages humains. L’extension de l’éditeur GitHub Copilot envoie vos commentaires et votre code au service GitHub Copilot, qui utilise ensuite OpenAI Codex pour synthétiser et suggérer des lignes individuelles et des fonctions entières. De plus, le service utilise les choix des utilisateurs pour améliorer les suggestions futures.

github copilot 01 GitHub

Comme indiqué sur ce schéma, GitHub Copilot est un service qui utilise le modèle de langage OpenAI Codex pour fournir des suggestions basées sur le contenu de l’éditeur de Visual Studio Code et de quelques autres éditeurs.

Test de GitHub Copilot sur Visual Studio Code< /h2>

Actuellement, Copilot est dans une phase de prévisualisation technique limitée. Avant de pouvoir l’installer utilement, vous devez appliquer à la liste d’attente du programme de prévisualisation. p>

Une fois que vous avez reçu votre e-mail de bienvenue, vous pouvez accéder au page de l’extension GitHub Copilot sur Visual Studio Code Marketplace et installez l’extension. Ensuite, vous devrez autoriser l’extension dans Visual Studio Code. La page de démarrage a un tutoriel que vous pouvez faire, en commençant au point numéro 2. Dans ce tutoriel, vous créez un fichier .JS, tapez

 fonction calculateDaysBetweenDates(begin, end) {

et se retrouver avec une fonction entièrement implémentée déduite du nom de la fonction. Dans le prochain tutoriel sur cette page, vous tapez un commentaire résumant ce qu’une fonction doit faire, et vous vous retrouvez avec une fonction entièrement implémentée déduite du commentaire, même si le nom de la fonction est trop général pour être utile.

github copilot 02 IDG

La page de l’extension GitHub Copilot sur le marché Visual Studio Code. Comme vous pouvez le voir en haut, j’ai déjà installé l’extension.

github copilot 03 IDG

Une capture d’écran de Visual Studio Code avec le copilote GitHub actif. Je viens de commencer le premier tutoriel de la documentation, et vous pouvez voir la suggestion de code « fantôme » sous ce que j’ai tapé, ainsi que la barre de contrôle contextuelle Copilot. J’ai créé le nouveau fichier en tant que TypeScript plutôt que JavaScript, principalement parce que je suis foutu d’esprit. Dans ce cas, Copilot a quand même généré du code JavaScript.

Capacités GitHub Copilot

En plus de déduire les corps des fonctions du nom de la fonction et d’un commentaire récapitulatif, Copilot peut s’inspirer d’autres codes du fichier que vous éditez et des noms de variables. Par exemple, si je tape deux points après un nom de variable dans TypeScript, Copilot tentera de remplir le type. Si je tape « var test1 = », Copilot s’appuiera sur le mot « test » et générera un test exécutable pour la fonction précédente. Si je tape plusieurs lignes qui forment un motif répétitif, Copilot essaiera de générer plus d’exemples du même motif.

Copilot fonctionne avec un large éventail de frameworks et de langages. Il fonctionne mieux avec Python, JavaScript, TypeScript, Ruby, Go et plus récemment Java, avec la famille de langages C (C, C++ et C#) prévue pour le futur. J’ai entendu dire par d’autres qu’il fonctionne très bien avec les frameworks JavaScript populaires tels que React.

GitHub prévoit que Copilot considère davantage le projet de code actuel que le fichier actuel pour son contexte à l’avenir.

github copilot 04 IDG

J’ai généré les lignes 8 et 9 en tapant les débuts des lignes et un tas de tabulations. J’ai tapé la ligne 10 et le début de la ligne 11, et Copilot a terminé la ligne 11. Je travaillais en TypeScript ; c’est après la compilation en JavaScript, que j’ai exécuté sous Node.js comme vous pouvez le voir en bas de l’écran. Notez les commentaires générés incorrects sur les valeurs de résultat attendues aux lignes 8 et 9.

Limites de GitHub Copilot

Tout d’abord, Copilot ne génère pas toujours un bon code. Il ne génère pas toujours le bon code. Pire encore, il ne génère pas toujours de code exécutable. (J’ai rencontré les trois cas lors de mes tests.)

Vous devez absolument revoir le code généré par Copilot. Traitez-le comme s’il avait été écrit par un stagiaire programmeur écologique qui maîtrise bien recherche mais nécessite une surveillance étroite.

Une façon d’éviter d’accepter le premier extrait proposé par Copilot est d’utiliser l’option « Ouvrir Copilote » dans son menu contextuel, ou d’utiliser la combinaison de touches Ctrl-Entrée, pour afficher la fenêtre de suggestions de Copilote dans un onglet séparé. Examinez les 10 solutions suggérées et acceptez celle qui se rapproche le plus de ce que vous voulez réellement. Cela fait, vous voudrez peut-être éditer un peu le code généré pour améliorer sa robustesse.

GitHub a réalisé un benchmark sur la génération de code Copilot :

Nous avons récemment comparé un ensemble de fonctions Python qui ont une bonne couverture de test dans les dépôts open source. Nous avons masqué les corps de la fonction et demandé à GitHub Copilot de les remplir. Le modèle a réussi 43% du temps lors du premier essai et 57% du temps lorsqu’il a été autorisé à 10 tentatives. Et il devient de plus en plus intelligent.

De toute évidence, 43 % d’exactitude n’est pas un très bon (ou même un score d’exactitude acceptable) pour une utilisation en production, même s’il s’agit d’une réalisation impressionnante pour une nouvelle technologie de génération de code. Néanmoins, si vous êtes un bon réviseur de code, vous pouvez modifier le code généré par Copilot pour qu’il soit correct et robuste beaucoup plus rapidement que vous ne pourriez l’écrire vous-même à partir de zéro, surtout si vous travaillez avec une bibliothèque ou un framework qui est nouveau pour vous.

github copilot 05 IDG

L’onglet sur la droite montre 10 extraits de code suggérés pour le corps de la fonction. Vous pouvez accepter celui qui se rapproche le plus de ce que vous voulez.

Exemples de copilote GitHub

Il y avait environ 25 petits exemples de génération de code Copilot sur sa page d’accueil, et quatre exemples plus grands avec des vidéos d’écran d’accompagnement dans la galerie Copilot< /a> quand j’ai regardé le 5 novembre 2021. Il est probable que l’équipe Copilot publiera plus d’exemples dans une plus grande variété de langages de programmation au fil du temps. À propos, cela vaut la peine de regarder les animations dans les exemples sur la page d’accueil, ainsi que de télécharger et de regarder les vidéos MP4 de la galerie.

github copilot 06 IDG

Exemple GitHub Copilot pour l’analyse des sentiments en Python, suivant le galerie. J’ai tapé des parties d’environ six lignes, plus beaucoup d’onglets pour accepter le code. J’ai également rejeté plusieurs suggestions, y compris des phrases de test que je considérais comme négatives générées pour la liste positive_sentences. Le code ne s’est pas exécuté tant que j’ai installé le package Python Requests sur ma machine avec pip3.

Dans l’ensemble, GitHub Copilot est quelque peu utile dans sa phase de développement de prévisualisation technique actuelle. Ses performances actuelles me donnent l’espoir qu’il deviendra encore plus un gain de temps à l’avenir. La question de savoir s’il vaudra la peine d’acheter le produit Copilot commercial prévu si et quand il sortira est une question ouverte qui dépendra non seulement de ses performances évoluées, mais de vos propres compétences et de votre rôle.

Plusieurs produits prétendent concurrencer GitHub Copilot. Le plus prometteur d’entre eux semble être Tabnine, d’une société du même nom en Tel Aviv. Tabnine ressemble à IntelliSense sous stéroïdes et peut éventuellement s’entraîner sur votre propre corpus de code ainsi que sur du code open source. Quelques-unes des autres alternatives recherchent essentiellement le code pertinent dans StackOverflow, ce qui me fait quelque peu méfier de leur méthodologie.

Cela vaut certainement la peine d’essayer GitHub Copilot dans votre propre environnement et de suivre ses progrès au fil du temps.

.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici