Partager cet article

Comme plus de 28 000 freelances, recevez des offres de mission tech à la messure de votre talent sur FreelanceRepublik.

Derniers articles

AccueilMétiers de la TechDéveloppeurQu'est-ce que GitHub Copilot, l’outil d’autocomplétion de code par IA ?

Qu’est-ce que GitHub Copilot, l’outil d’autocomplétion de code par IA ?

Vous avez sûrement entendu parler de GitHub Copilot, cet outil développé par GitHub permettant de générer du code via de l’intelligence artificielle et du deep learning.

Vous voulez en savoir plus sur cette techno qui paraît magique ? Comment elle fonctionne, techniquement, et quelles sont ces limites ?

C’est ce que nous allons voir dans cet article !

Qu’est-ce que GitHub Copilot ?

Pourquoi ce besoin ?

La programmation se divise en beaucoup de tâches différentes, certaines moins intéressantes que d’autres. Par exemple, les expressions régulières ou les fonctions répétitives ne font pas partie de ce que préfèrent les développeurs.

Souvent, ces derniers réutilisent du code qu’ils ont déjà écrit, ou cherchent sur internet des morceaux de code tout prêts – des snippets – pour palier à ce besoin.

C’est notamment pour répondre à cela que GitHub Copilot a été créé ; pour que les développeurs puissent se concentrer sur l’important : la construction du logiciel. C’est notamment ce qu’explique la techno sur son site officiel :

Spend less time creating boilerplate and repetitive code patterns, and more time on what matters: building great software. Write a comment describing the logic you want and GitHub Copilot will immediately suggest code to implement the solution.

Historique

Copilot est une solution technique très récente ; voyons-en un rapide historique.

En juin 2021, GitHub, service web d’hébergement et de gestion de code source appartenant à Microsoft, annonce GitHub Copilot, en version beta, disponible dans son IDE Visual Studio Code.

Puis, en Octobre de la même année, il devient disponible en tant que plugin sur la marketplace JetBrains (ensemble de suites logicielles pour développeurs), puis sur Neovim.

En juin 2022, GitHub annonce la sortie officielle et de son outil Copilot.

Copilot est aujourd’hui disponible sous forme d’abonnement payant, à 10$ le mois, ou 100$ l’année, après un essai gratuit de 60 jours. Il reste gratuit pour les étudiants et pour ceux qui travaillent des projets open-source importants.

Comment fonctionne GitHub Copilot ?

Logo de GitHub Copilot, l'outil d'autocomplétion de Microsoft

Le principe de GitHub Copilot

GitHub Copilot repose sur OpenAI Codex, modèle d’intelligence artificielle de génération de code développée par OpenAI, outil lui-même reposant sur GPT-3. GPT-3, pour Generative Pre-trained Transformer 3, utilise le deep learning pour générer non pas du code, mais du texte qui paraît naturel, comme s’il avait été écrit par des humains.

Codex est en quelque sorte un descendant de GPT-3, créant du code et non plus du texte.

Pour ce qui est de Copilot en lui-même, il parcourt des millions de repositories GitHub pour apprendre, via du machine learning, le code qui fonctionne et dans quels cas l’utiliser. Il restitue ensuite ces morceaux de code de manière intelligente, sous forme d’autocomplétion.

Par exemple, il suffit de taper un commentaire clair pour que Copilot génère une suggestion de code. Bien sûr, cela ne matche pas 100% du temps avec ce qu’attend exactement le développeur, mais environ la moitié des snippets suggérées répondraient bien à la problématique.

Langages et capacités

GitHub Copilot a donc été entraîné sur des milliards de lignes de code, et est aujourd’hui fonctionnel avec plusieurs langages de programmation. Il est le plus performant avec Python, mais il fonctionne aussi avec JavaScript, TypeScript, Ruby et Go.

Cet outil d’intelligence artificielle est installable sur différents IDE : Visual Studio, VS Code, Neovim et la suite JetBrains.

Exemples de code

Pour mieux comprendre comment fonctionne GitHub Copilot et réaliser son intérêt pour un développeur, le mieux est de voir quelques exemples tirés du site officiel.

Nous l’avons dit, Copilot est utilisé pour faire gagner du temps aux développeurs, en générant du code simple mais ennuyant à écrire pour le programmeur.

Voici un exemple en JavaScript, de génération de secondes, minutes, jours, etc. Il suffit de taper le code suivant :

const seconds = 3600
const minutes   seconds / 60

Pour que Copilot génère la suggestion suivante (ici en gras) :

const seconds = 3600
const minutes   seconds / 60
const hours = minutes / 60
const days = hours / 24
const weeks = days / 7
const months = days / 30
const years = months / 12

Un appui sur la touche ‘tab’ et le code est directement ajouté.

C’est un exemple simple, mais qui fait gagner du temps aux développeurs. Voyons maintenant un exemple un peu plus impressionnant, pour se rendre compte de la puissance de l’IA.

Pour récupérer un ensemble de tweets (limité par le paramètre ‘count’) d’un utilisateur avec un pseudo déterminé (‘screenName’), on écrira dans notre IDE :

const token = process.env["TWITTER_BEARER_TOKEN"]

const fetchTweetsFromUser = async (screenName, count) => {

Pour que Copilot propose cette solution :

const token = process.env["TWITTER_BEARER_TOKEN"]

const fetchTweetsFromUser = async (screenName, count) => {
  const response = await fetch(
    `https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=${screenName}&count=${count}`,
    {
      headers: {
        Authorization: `Bearer ${token}`,
      },
    }
  )
  const json = await response.json()
  return json
}

Entraîné via des milliers de repositories appelant les API Twitter, Copilot arrive à suggérer un appel à cette API, en passant les bons paramètres dans l’URL et avec le token défini, simplement grâce aux deux lignes de codes écrites.

Impressionant, non ?

Les problématiques autour de GitHub Copilot

développeur travaillant écrivant du code sur son ordinateur

Si GitHub Copilot présente de nombreux avantages, comme un gain de temps certain lors des phases de développement, il apporte avec lui son lot de problématiques :

  • les snippets de code récupérées peuvent être copyrightés, et donc légalement inutilisables ; mais cela est censé être pris en compte, Copilot doit théoriquement modifier au moins en partie le code récupéré ;
  • le code généré peut être sujet à des failles de sécurité car il est parfois récupéré tel qu’écrit par son développeur (ce n’est pas testé par l’outil de Microsoft) ;
  • Copilot pourrait nuire à l’apprentissage du code.

Ce dernier point est notamment important. Il a été démontré, lors d’une étude à l’université d’Auckland, qu’en moyenne, Codex – la technologie derrière Copilot – fournissait de meilleures réponses que les étudiants en programmation. Bien qu’il y ait une limite : cette IA répondant uniquement à de la logique pure, elle ne prend pas en compte le côté métier dans la génération du code – pour le moment.

Il faut donc rester vigilant sur ce point : veiller à ce que Copilot ne devienne pas un outil utilisé par défaut par les développeurs (notamment débutants), au risque de créer des lacunes dans l’apprentissage et qu’une certaine dépendance s’installe.

Conclusion : faut-il se mettre à Copilot ?

Comme nous l’avons vu tout au long de cet article, GitHub Copilot est un outil intelligent, qui peut remplacer une partie de la charge de travail lourde et peu intéressante qui incombe aux développeurs.

Cependant, il rencontre certaines limites, notamment de sécurité, de copyright, et de précision dans ses réponses. Ce sont toutefois des problèmes qui vont se résoudre avec le temps et l’amélioration de l’outil.

Alors, vous pouvez vous poser la question : faut-il s’y mettre ?

Si vous êtes un développeur avec de l’expérience : oui ! Copilot est facile à installer, ne requiert aucun paramétrage, et vient avec une version d’essai de 60 jours. Si l’outil ne vous plaît pas, vous n’aurez qu’à ne pas y souscrire après cette période. Mais il y a de fortes chances pour que, comme beaucoup de développeurs, vous continuiez à l’utiliser.

Si vous débutez dans la programmation, utiliser Copilot n’est peut-être pas la meilleure idée. Un développeur débutant a besoin de passer par la phase ennuyante et répétitive de création que remplace Copilot, pour apprendre et devenir plus efficace quand le code se complexifie.

Ces articles peuvent vous intéresser

Ne perdez plus de temps à prospecter en vain. Inscrivez-vous gratuitement sur FreelanceRepublik, et recevez de belles offres de missions tech. FreelanceRepublik est gratuit pour les freelances.