À propos de la complétion de code GitHub Copilot
Les complétions de code Copilot sont des suggestions de type autocomplétion générées directement dans le texte par GitHub Copilot. La complétion de code Copilot crée l’expérience de travailler avec un assistant programmeur alimenté par l’IA, qui propose automatiquement des suggestions pour compléter votre code. De plus, il peut suggérer des commentaires de code, des tests et bien plus encore. Il fournit ces suggestions directement dans les éditeurs pris en charge pendant que vous écrivez votre code, et il peut fonctionner avec un large éventail de langages de programmation et de frameworks. Pour plus d’informations, consultez « Qu'est-ce que GitHub Copilot ? ».
Les suggestions de Copilot peuvent compléter la ligne actuelle, mais peuvent parfois constituer un tout nouveau bloc de code. Vous pouvez accepter tout ou partie d’une suggestion, masquer la suggestion ou continuer à taper et ignorer les suggestions.
La complétion de code Copilot fonctionne en combinant le traitement du langage naturel et l’apprentissage automatique pour comprendre le code environnant (par rapport à la position de votre curseur) et vous fournir des suggestions. Ce processus peut être divisé en plusieurs étapes.
Traitement de l’entrée
Le code environnant le curseur de l’utilisateur est pré-traité par le système de complétion de code Copilot, combiné à des informations contextuelles (telles que des extraits de code provenant des onglets ouverts dans l’éditeur) et envoyé à un grand modèle de langage sous la forme d’un prompt. Pour plus d’informations sur la conservation des données, consultez le Centre de gestion de la confidentialité GitHub Copilot.
Le grand modèle de langage prend ensuite le prompt et fournit une réponse basée sur ce dernier. Le système est uniquement destiné à faciliter le codage.
Analyse du modèle de langage
Le grand modèle de langage qui traite le prompt d’entrée est un modèle de complétion de code ajusté, un réseau neuronal entraîné sur une grande quantité de code, spécialisé dans la complétion de code intégrée.
Vous pouvez modifier le modèle utilisé pour la complétion de code. Consultez Modification du modèle IA pour la complétion de code Copilot.
Génération de la réponse
Le modèle de langage génère une réponse en fonction de son analyse de la demande entrée et du contexte fourni. Cette réponse prend la forme de code généré et de commentaires en texte brut, allant de la complétion de la ligne actuelle à un tout nouveau bloc de code.
Mise en forme de la sortie
La réponse générée par Copilot est formatée sous forme de « texte fantôme » qui se distingue visuellement du code environnant et est présentée à l’utilisateur sous forme de suggestion. Elle est uniquement ajoutée au fichier/au codebase si l’utilisateur accepte explicitement la suggestion. Les utilisateurs peuvent accepter tout ou partie d’une suggestion, masquer la suggestion ou continuer à taper et ignorer les suggestions, auquel cas la suggestion est supprimée.
La complétion de code GitHub Copilot a pour but de vous fournir les suggestions de code les plus pertinentes et utiles afin d’améliorer votre code existant. Cependant, elle peut ne pas toujours fournir les réponses que vous recherchez. Les utilisateurs de Copilot sont tenus de passer en revue et de valider les réponses générées par le système avant de les accepter, afin de s’assurer qu’elles sont exactes et appropriées. De plus, dans le cadre de notre processus de développement de produits, nous réalisons des exercices de red teaming (simulations d’attaques) afin de comprendre et d’améliorer la sécurité de la complétion de code de Copilot. Les complétions de code générées sont également soumises à des filtres de contenu. Le système de filtrage de contenu détecte et bloque Copilot afin d’empêcher la sortie de tout contenu nuisible ou offensant, ou de tout code non sécurisé. De plus, en fonction des paramètres GitHub de l’utilisateur, le filtre bloque ou annote également les suggestions qui contiennent des correspondances avec du code public.
Cas d’utilisation de la complétion de code GitHub Copilot
La complétion de code GitHub Copilot peut offrir une assistance au codage dans divers scénarios.
Générez du code en fonction de vos instructions
En plus de vous appuyer sur Copilot pour fournir des suggestions, vous pouvez utiliser des commentaires dans le code pour indiquer à Copilot quel code vous attendez après le commentaire. Par exemple, vous pouvez utiliser des commentaires tels que « utiliser la récursivité » ou « utiliser un modèle singleton » pour spécifier un type d’algorithme que Copilot doit suggérer. Vous pouvez également utiliser des commentaires pour indiquer à Copilot les méthodes et propriétés à ajouter à une classe.
Génération de cas de test unitaire
La complétion de code Copilot peut vous aider à écrire des cas de test unitaires en générant des extraits de code basés sur le code environnant tapé dans l’éditeur. Vous pouvez ainsi passer moins de temps sur des tâches répétitives liées à l’écriture de cas de test. Par exemple, si vous écrivez un cas de test pour une fonction spécifique, vous pouvez utiliser Copilot pour suggérer des paramètres d’entrée possibles et des valeurs de sortie attendues en fonction de la signature et du corps de la fonction. La complétion de code peut également suggérer des assertions qui garantissent le bon fonctionnement de la fonction, en fonction du contexte et de la sémantique du code.
La complétion de code Copilot peut également aider à générer des cas de test pour les cas limites et les conditions limites qui peuvent être difficiles à identifier manuellement. Par exemple, Copilot peut suggérer des cas de test pour la gestion des erreurs, les valeurs nulles ou les types d’entrée inattendus, vous aidant ainsi à garantir la robustesse et la résilience de votre code. Cependant, il est important de noter que les cas de test générés peuvent ne pas couvrir tous les scénarios possibles, et que les tests manuels et la révision du code sont toujours nécessaires pour garantir la qualité du code.
Ce peut être un outil pratique pour les programmeurs, car il peut fournir des conseils et du support pour des tâches et des problématiques de codage courantes.
Amélioration des performances pour la complétion de code GitHub Copilot
La complétion de code Copilot peut générer des suggestions de code dans un certain nombre de contextes différents, avec différentes mesures de performance et de qualité. Pour améliorer les performances et pallier certaines limitations de la complétion de code Copilot, vous pouvez adopter différentes mesures. Pour plus d’informations sur les limitations de la complétion de code Copilot, consultez Limitations de la complétion de code GitHub Copilot.
Limitez vos demandes au sujet concerné
Copilot est exclusivement destiné à générer des complétions qui sont soit liées au code, soit du code lui-même. Par conséquent, limiter le contexte du contenu dans l’éditeur au code ou aux informations liées au codage peut permettre d’améliorer la qualité de la sortie du modèle.
Utilisez la complétion de code Copilot comme un outil et non comme un substitut
Bien que Copilot puisse être un outil puissant pour générer du code, il est important de l’utiliser comme un outil et non comme un substitut à la programmation humaine. Vous devez toujours passer en revue le code généré par Copilot avant d’accepter une suggestion, puis le valider afin de vous assurer qu’il répond à vos besoins et qu’il ne comporte aucune erreur ou faille de sécurité.
Important
Les utilisateurs assument tous les risques associés au code généré, y compris les failles de sécurité, les bogues et les violations d’adresses IP.
Utiliser des pratiques de codage sécurisé et de révision du code
Bien que la complétion de code Copilot puisse générer un code syntaxiquement correct, il n’est pas toujours sécurisé. Vous devez toujours respecter les meilleures pratiques en matière de codage sécurisé, notamment en évitant les mots de passe codés en dur ou les vulnérabilités liées à l’injection SQL, ainsi que les meilleures pratiques en matière de révision du code, afin de pallier les limitations de Copilot.
Rester informé
La complétion de code Copilot est encore une technologie relativement récente et susceptible d’évoluer avec le temps. Il est recommandé de se tenir informé des mises à jour ou des modifications apportées à l’outil ainsi que des nouveaux risques ou des bonnes pratiques en matière de sécurité qui peuvent apparaître. Les mises à jour d’extension automatisées sont activées par défaut dans Visual Studio Code, Visual Studio et la suite d’IDE JetBrains. Si les mises à jour automatiques sont activées, Copilot se mettra automatiquement à jour vers la dernière version lorsque vous ouvrirez votre IDE. Pour plus d’informations sur les mises à jour automatiques dans votre IDE, consultez la documentation de votre IDE ou éditeur de code préféré.
Limitations de la complétion de code GitHub Copilot
En fonction de facteurs tels que votre codebase et vos données d’entrée, vous pouvez constater différents niveaux de performances lors de l’interaction avec la complétion de code Copilot. Les informations suivantes ont pour but de vous aider à comprendre les limitations du système et les concepts clés relatifs aux performances qui s’appliquent à la complétion de code Copilot.
Étendue limitée
La complétion de code Copilot est entraînée sur une grande quantité de code, mais son champ d’application reste limité et peut ne pas être en mesure de gérer des structures de code plus complexes ou des langages de programmation obscurs. Pour chaque langage, la qualité des suggestions que vous recevez peut dépendre du volume et de la diversité des données d’entraînement pour ce langage. Par exemple, JavaScript est bien représenté dans les dépôts publics et est l’un des langages les mieux pris en charge par GitHub Copilot. Les langages moins représentés dans les référentiels publics peuvent être plus difficiles à prendre en charge pour Copilot. De plus, la complétion de code Copilot peut uniquement suggérer du code en fonction du contexte du code en cours d’écriture. Elle peut donc ne pas être en mesure d’identifier des problèmes de conception ou d’architecture plus importants.
Enfin, la complétion de code Copilot est destinée à générer du code et des sorties liées au code. L’utilisation de la complétion de code Copilot n’est pas destinée à générer des sorties en langage naturel.
Biais potentiels
Les données d’entraînement de Copilot sont extraites de dépôts de code existants, qui peuvent contenir des biais et des erreurs qui peuvent être perpétués par l’outil. De plus, la complétion de code Copilot peut être biaisée en faveur de certains langages de programmation ou styles de codage, ce qui peut entraîner des suggestions de code sous-optimales ou incomplètes.
Risques liés à la sécurité
Copilot génère du code en fonction du contexte du code en cours d’écriture, ce qui peut potentiellement exposer des informations sensibles ou des vulnérabilités s’il n’est pas utilisé avec précaution. Vous devez être prudent lorsque vous utilisez Copilot pour générer du code destiné à des applications sensibles en matière de sécurité et toujours vérifier et tester minutieusement le code généré.
Correspondances avec du code public
La complétion de code Copilot est capable de générer du nouveau code, ce qu’elle fait de manière probabiliste. Bien que la probabilité soit faible, Copilot peut générer des suggestions de code qui correspondent au code dans le jeu d’apprentissage.
Code erroné
L’une des limitations de Copilot est qu’il peut générer du code qui semble valide, mais qui n’est pas nécessairement correct sur le plan sémantique ou syntaxique, ou qui ne reflète pas fidèlement l’intention du développeur. Pour atténuer le risque d’avoir du code erroné, vous devez réviser et tester soigneusement le code généré, en particulier quand vous travaillez sur des applications critiques ou sensibles. Vous devez aussi vérifier que le code généré respecte les bonnes pratiques et les modèles de conception, et qu’il s’intègre dans l’architecture globale et le style du codebase.
Considérations relatives à la conformité et aux réglementations
Les utilisateurs doivent évaluer des obligations légales et réglementaires spécifiques potentielles lors de l’utilisation de services et de solutions IA, ce qui peut ne pas convenir à une utilisation dans chaque secteur ou scénario. En outre, les services ou solutions IA ne sont pas conçus pour et peuvent ne pas être utilisés de manière interdite en termes de service applicables et codes de conduite pertinents.
Étapes suivantes
Pour plus d’informations sur l’utilisation de la complétion de code Copilot, consultez :