GitHub Copilot



Jérémie Decock

8 février 2024

Les modèles de langage derrière GitHub Copilot

Code completion vs Chat



IDE Compatibles

pour l'auto-complétion

IDE Compatibles

pour le chat

Utilisation de l'auto-complétion

Exemple 1

  • Écrire l'entête d'une fonction pour indiquer ce qu'on veut
  • Attendre quelques secondes (1 à 5) généralement
  • Une proposition est faite en grisé par Copilot
  • Tab pour l'accepter, Esc pour la rejeter
  • Ctrl + Entrée pour afficher d'autres suggestions

Utilisation de l'auto-complétion

Exemple 2

  • Écrire un commentaire pour indiquer ce qu'on veut
  • Attendre quelques secondes (1 à 5) généralement
  • Une proposition est faite en grisé par Copilot
  • Tab pour l'accepter, Esc pour la rejeter
  • Ctrl + Entrée pour afficher d'autres suggestions

Recommandations pour l'auto-complétion

  • Générer un premier jet d'une fonction
  • Générer des petits morceaux de code (quelques lignes) avec des commentaires "utiles" pour les autres développeurs

Utilisation du chat

Cas d'usages

  • Ajouter des typing hints en Python
  • Documenter une fonction
  • Formater une portion de code
  • Proposer des corrections de code
  • Expliquer une portion de code
  • Générer des tests unitaires pour une fonction
  • Répondre à des questions de programmation
  • ...

https://code.visualstudio.com/docs/copilot/getting-started-chat

Slash commandes

Invocation du chat

Panel de gauche ou Ctrl+I ou boutons ou ...

Limites et recommandations

Portée du contexte

Portée = ce qui est surligné + quelques éléments de contexte ajoutés automatiquement

Chat agents

Bonnes pratiques

Ne jamais faire aveuglément confiance aux réponses, de toujours revoir le code généré (utiliser éventuellement le chat pour expliquer des portions de code incomprises).

Intégration au terminal

Questions diverses

  • Est-il préférable d'écrire les prompts en Français ou en anglais ?
  • Pour le refactoring d'une fonction, est-il préférable d'écrire plusieurs requêtes spécialisées (typing hints, docstrings, pep8, etc.) ou de tout mettre dans une seule requête ?
  • Comment est construit le prompt dans chat ? (contexte automatiquement intégré, etc.)
  • Peut-on créer des templates de prompts dans vscode ?
  • Est-ce que ça marche bien sur les notebooks Jupyter (ou faut-il passer par e.g. jupytext) ?