AI Coding Agents



Jérémie Decock

3 juillet 2025

Quelques rappels

Présentation précédente

Introduction à GitHub Copilot

https://slides.jdhp.org/github_copilot.html

Modes d'interaction dans Copilot

Auto-complétion

Suggestions de code en temps réel lors de la saisie dans l’éditeur.

Modes d'interaction dans Copilot

Chat

Interface conversationnelle pour poser des questions, demander des explications ou générer du code sur demande.

Chat

Trois modes d'accès

Chat view Ctrl+Alt+I
Conversation multi-tours dans un panneau dédié.
Chat view screenshot
Inline chat Ctrl+I
Démarre une conversation directement dans l’éditeur ou le terminal pour obtenir des suggestions en contexte. Inline chat screenshot
Quick Chat Ctrl+Shift+Alt+L
Posez une question rapide et reprenez immédiatement votre travail. Quick Chat screenshot

Historique des conversations

Undo


Utiliser Git en plus ("stage" les modifs avant de commencer un chat)

Mots-clés spéciaux

Raccourcis de prompt dans Copilot Chat

  • Slash commands (/...) : raccourcis pour les actions courantes.
    Ex : /fix pour proposer une correction, /explain pour expliquer du code, / pour lister toutes les commandes.
  • Chat Participant (@...) : améliore les réponses de l'IA en utilisant des connaissances spécifiques.
    Ex : @workspace, @vscode, @terminal, ... permettent d’interagir respectivement avec l'ensemble du code du projet, l’éditeur, le terminal, ...
  • Chat variables (#...) : ajoutent du contexte ou des outils au prompt.
    Ex : #codebase pour l’ensemble du code du projet, #file, #folder, #symbol pour cibler un fichier, un dossier ou un symbole précis.

Slash commands

  • Les slash commands sont des raccourcis de prompt utilisables dans Copilot Chat et la palette de commandes.
  • Syntaxe : /nom (ex : /explain, /fix, /test).
  • Chaque slash variable correspond à une action prédéfinie ou un template de prompt (ex : expliquer du code, corriger une erreur, générer des tests).
  • Permet de gagner du temps et de standardiser les requêtes fréquentes.
  • Peut être combinée avec une sélection de code ou du texte libre.

Slash commands

Chat Participants

Auto-complétion

Modes d’auto-complétion

Classique vs. Next Edit Suggest (NES)

  • Auto-complétion classique : complète le code directement à la position du curseur, en proposant une ou plusieurs suggestions immédiates.
  • Next Edit Suggest (NES) : suggère la prochaine modification pertinente, qui peut se situer ailleurs dans le fichier ou le projet (pas seulement au curseur).

Next Edit Suggestions (NES)

NES aide à corriger des erreurs simples comme les fautes de frappe. Il suggère des corrections lorsque des lettres sont manquantes ou inversées, par exemple cont x = 5 ou conts x = 5 au lieu de const x = 5.

NES peut aussi aider à corriger des erreurs de logique plus complexes, comme une expression ternaire inversée.

Copilot comprend qu'il fallait utiliser && au lieu de ||.

NES peut aussi suggérer des refactorings.

Comment activer le Next Edit Suggestion (NES)

Référence : https://code.visualstudio.com/docs/copilot/ai-powered-suggestions#_use-cases-for-next-edit-suggestions

Chat

Modes disponibles dans Copilot Chat

Ask, Edit, Agent

  • Ask : poser des questions, demander des explications, obtenir de l’aide ou des suggestions de code.
  • Edit : demander des modifications directes sur le code sélectionné (refactoring, correction, documentation, etc.).
  • Agent : confier une tâche complexe à l’agent IA, qui peut enchaîner plusieurs actions pour atteindre un objectif (création de fichiers, exécution de commandes, etc.).

Mode Chat : Ask

Questions, explications, suggestions

  • C'était le seul mode disponible dans GitHub Copilot avant 2025.
  • Permet de poser des questions0 sur le code, les outils ou les concepts.
  • Obtenir des explications sur des extraits de code, des erreurs ou des messages de compilation.
  • Demander des suggestions de code, des exemples ou des alternatives d’implémentation.
  • Idéal pour l’apprentissage, la compréhension rapide ou l’exploration de solutions.
  • Edition possible mais nécessite un copier/coller manuel :

Mode Chat : Edit

Modification directe du code

  • Permet de modifier le code sélectionné via une instruction en langage naturel.
  • Actions typiques : refactoring, correction de bugs, ajout de documentation, optimisation, etc.
  • L’IA applique la modification directement dans le fichier, avec possibilité d’aperçu ou d’annulation.
  • Idéal pour automatiser des changements répétitifs ou gagner du temps sur des tâches de maintenance.
  • Peut travailler sur plusiueurs fichiers mais ils doivent être sépcifiés manuellement avec le bouton "contexte" ou avec le mot-clé #file.

Mode Chat : Agent

Automatisation de tâches complexes


  • Permet de confier une tâche complète à l’IA (ex. : « Créer un nouveau module, ajouter les tests, documenter et committer »).
  • L’agent enchaîne plusieurs actions : création/modification de fichiers, exécution de commandes, navigation dans le projet, etc.
  • Peut utiliser des outils intégrés (terminal, extensions, plugins) pour accomplir la tâche.
  • Idéal pour automatiser des workflows : migration, refactoring global, génération de documentation, etc.
  • Le développeur supervise et valide chaque étape proposée par l’agent.

Edit ou Agent ?

3 raisons de préférer le mode
Agent

  • Autonomie : plus autonome (trouve seul les fichiers de contexte pertinents), utile pour résoudre efficacement des tâches que l'utilisateur ne sait pas forcément résoudre lui-même.
  • Outils : peut utiliser des outils.
  • Boucles de rétroactions : peut vérifier son implémentation (exécuter le code écrit, lancer des tests unitaires…), apprécier le succès de ses modifications et réitérer si besoin jusqu'à ce que ça fonctionne.

2 raisons de préférer le mode
Edit

  • Permet de mieux cadrer le LLM (contexte spécifié manuellement, étapes définies…), donc résultat moins aléatoire.
  • Consomme moins de tokens (et est plus rapide).

Limite de requêtes simultanées : par défaut, un agent GitHub Copilot peut effectuer jusqu’à 5 requêtes simultanées pour les utilisateurs Copilot Free, et 15 requêtes pour les autres abonnements.

Agent IA

Définition et différences


  • Assistant IA classique : répond à des questions, génère du texte ou du code, mais n'agit pas directement sur l'environnement.
  • Agent IA : peut agir de façon autonome :
    • modifie des fichiers, exécute des commandes, utilise des outils, etc.
    • enchaîne plusieurs actions pour atteindre un objectif donné.
  • Dans GitHub Copilot, un agent IA peut automatiser des tâches complexes, pas seulement suggérer du code.

Évolution du périmètre fonctionnel

  • Avant 2024 : IA limitées à la génération, modification ou compréhension de code à l’échelle de la fonction ou du fichier.
  • Interaction principalement textuelle : l’IA répond à une requête par une suggestion de code ou une explication.
  • Exemple : GitHub Copilot (2021-2023).
  • Depuis 2024 : apparition d’IA agentiques (Cursor, Windsurf, Copilot 2025…)
  • Capables de gérer des projets complets (multi-fichiers, navigation, refactoring global…)
  • Peuvent agir directement sur les fichiers, interagir avec la console, les outils de build, les débogueurs, etc.
  • Plus d’autonomie : enchaînement d’actions pour atteindre un objectif donné.
  • Limite : la gestion de projets très volumineux reste partielle.

"Vibe coding"

Origine et concept

Tweet d'Andrej Karpathy sur le vibe coding Andrej Karpathy

"Vibe coding"


  • Le développeur décrit une tâche ou une modification à effectuer (ex. : "Réduire la marge de la barre latérale de moitié").
  • L'agent IA propose une implémentation directement dans le code.
  • Le développeur valide sans lire les détails du code, en se basant uniquement sur le résultat visible ou fonctionnel.
  • En cas d'erreur, il demande des ajustements ou copie-colle les erreurs jusqu'à ce que le problème soit résolu.
  • Le processus favorise l'expérimentation plutôt que la rigueur.

"Vibe coding" ?


					Write three.js code for the coolest spinning 3d shape you can make.
					

Toy demo

"Vibe coding" 🤨

Big fails

Uh-oh... 😵‍💫

Merci à Cyril d'avoir risqué l'intégrité de son OS pour nous montrer que les modèles actuels ne sont pas encore prêts pour faire du "vibe coding" 😅

Quelques conseils intéressants

Les prompts réutilisables

  • Permettent de standardiser les requêtes et d’améliorer la productivité.
  • Créer des prompts réutilisables pour les tâches courantes de codage :
    • faire une revue de code (qualité, sécurité ou performances du code)
    • refactoriser du code
    • ajouter de la documentation
    • générer des tests unitaires
    • mettre à jour le changelog
    • corriger les fautes d'orthographe et de grammaire
    • etc.
  • Permettent de spécifier :
    • les conventions de code à utiliser
    • la stack technique à utiliser
    • les règles à respecter pour une revue de code
    • les outils à utiliser (ex. : linters, formatters, ...)
  • Documentation :

Les prompts réutilisables

  • Chaque "fichier prompt" définit un prompt directement exécutable dans Copilot Chat.
  • Les "fichiers prompt" sont des fichiers Markdown avec l'extension ".prompt.md"
  • VSCode supporte deux types de "fichiers prompt" :
    • Workspace prompt files :
      • Portée : le projet dans lequel le fichier est placé
      • Emplacement : le répertoire ".github/prompts" à la racine du projet
    • User prompt files :
      • Portée : l’utilisateur (tous les projets)
      • Emplacement : profils VSCode

Les prompts réutilisables

Exemple


					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Perform a REST API security review'
					---
					Perform a REST API security review:

					* Ensure all endpoints are protected by authentication and authorization
					* Validate all user inputs and sanitize data
					* Implement rate limiting and throttling
					* Implement logging and monitoring for security events
					

 

Les prompts réutilisables

Structure


					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Perform a REST API security review'
					---
					Perform a REST API security review:

					* Ensure all endpoints are protected by authentication and authorization
					* Validate all user inputs and sanitize data
					* Implement rate limiting and throttling
					* Implement logging and monitoring for security events
					

En-tête contenant les métadonnées (optionnel)

Les prompts réutilisables

Structure


					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Perform a REST API security review'
					---
					Perform a REST API security review:

					* Ensure all endpoints are protected by authentication and authorization
					* Validate all user inputs and sanitize data
					* Implement rate limiting and throttling
					* Implement logging and monitoring for security events
					

mode : le "chat mode" à utiliser pour le prompt, i.e. "ask", "edit" ou "agent" (par défaut)

Les prompts réutilisables

Structure


					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Perform a REST API security review'
					---
					Perform a REST API security review:

					* Ensure all endpoints are protected by authentication and authorization
					* Validate all user inputs and sanitize data
					* Implement rate limiting and throttling
					* Implement logging and monitoring for security events
					

tools : la liste d'outils que l'agent peut utiliser (évoqué à la fin de la présentation)

Les prompts réutilisables

Structure


					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Perform a REST API security review'
					---
					Perform a REST API security review:

					* Ensure all endpoints are protected by authentication and authorization
					* Validate all user inputs and sanitize data
					* Implement rate limiting and throttling
					* Implement logging and monitoring for security events
					

description : une brève description du prompt

Les prompts réutilisables

Structure


					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Perform a REST API security review'
					---
					Perform a REST API security review:

					* Ensure all endpoints are protected by authentication and authorization
					* Validate all user inputs and sanitize data
					* Implement rate limiting and throttling
					* Implement logging and monitoring for security events
					

Le prompt à exécuter

Les prompts réutilisables

Autres exemples


					---
					mode: 'edit'
					description: 'Add a comprehensive docstring.'
					---
					Add a comprehensive docstring to the provided code snippet:

					* Use the Numpy style.
					* The docstring should include a description of the function's purpose, its parameters, return values, and any exceptions it may raise.
					* It may also include notes and examples of usage if applicable.
					* Ensure that the docstring is clear and concise, following best practices for documentation.
					

Les prompts réutilisables

Autres exemples


					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Generate a new React form component'
					---
					Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates.

					Ask for the form name and fields if not provided.

					Requirements for the form:
					* Use form design system components: [design-system/Form.md](../docs/design-system/Form.md)
					* Use `react-hook-form` for form state management:
					* Always define TypeScript types for your form data
					* Prefer *uncontrolled* components using register
					* Use `defaultValues` to prevent unnecessary rerenders
					* Use `yup` for validation:
					* Create reusable validation schemas in separate files
					* Use TypeScript types to ensure type safety
					* Customize UX-friendly validation rules
					

Les prompts réutilisables

Faire référence à un fichier

Les liens relatifs Markdown permettent de référencer d'autres fichiers de l'espace de travail, fichiers "*.prompt.md" ou fichiers d'instructions dans le corps des prompts


					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Generate a new React form component'
					---
					Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates.

					Ask for the form name and fields if not provided.

					Requirements for the form:
					* Use form design system components: [design-system/Form.md](../docs/design-system/Form.md)
					* Use `react-hook-form` for form state management:
					* Always define TypeScript types for your form data
					* Prefer *uncontrolled* components using register
					* Use `defaultValues` to prevent unnecessary rerenders
					* Use `yup` for validation:
					* Create reusable validation schemas in separate files
					* Use TypeScript types to ensure type safety
					* Customize UX-friendly validation rules
					

Ces liens sont relatifs à l'emplacement du fichier "*.prompt.md"

Les prompts réutilisables

Faire référence à un fichier

  • Deux syntaxes pour référencer des fichiers dans les prompts :
    • "Liens Markdown" : [index](../index.ts)
    • "Chat variables" : #index.ts

					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Generate a new React form component'
					---
					Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates.

					Ask for the form name and fields if not provided.

					Requirements for the form:
					* Use form design system components: [design-system/Form.md](../docs/design-system/Form.md)
					* Use `react-hook-form` for form state management:
					* Always define TypeScript types for your form data
					* Prefer *uncontrolled* components using register
					* Use `defaultValues` to prevent unnecessary rerenders
					* Use `yup` for validation:
					* Create reusable validation schemas in separate files
					* Use TypeScript types to ensure type safety
					* Customize UX-friendly validation rules
					

Les prompts réutilisables

Faire référence à un fichier

  • Deux syntaxes pour référencer des fichiers dans les prompts :
    • "Liens Markdown" : [index](../index.ts)
    • "Chat variables" : #index.ts

					---
					mode: 'agent'
					tools: ['githubRepo', 'codebase']
					description: 'Generate a new React form component'
					---
					Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates.

					Ask for the form name and fields if not provided.

					Requirements for the form:
					* Use form design system components: #Form.md
					* Use `react-hook-form` for form state management:
					* Always define TypeScript types for your form data
					* Prefer *uncontrolled* components using register
					* Use `defaultValues` to prevent unnecessary rerenders
					* Use `yup` for validation:
					* Create reusable validation schemas in separate files
					* Use TypeScript types to ensure type safety
					* Customize UX-friendly validation rules
					

Les prompts réutilisables

Faire référence à un fichier

La référence à des fichiers .prompt.md permet de créer une hiérarchie de prompts !

Les prompts réutilisables

Faire référence à une variable

Un fichier "*.prompt.md" peut aussi contenir des variables avec la syntaxe ${variableName}

Variables d'espace de travail :
${workspaceFolder}, ${workspaceFolderBasename}

Variables de sélection :
${selection}, ${selectedText}

Variables de contexte de fichier :
${file}, ${fileBasename}, ${fileDirname}, ${fileBasenameNoExtension}

Variables d'entrée utilisateur :
${input:variableName}, ${input:variableName:placeholder}
☝️ Permet de passer des valeurs au prompt via le champ de saisie du chat
👉️ (i.e. permet de faire des templates de prompts)

Les prompts réutilisables

Créer un fichier prompt d'espace de travail

Vous pouvez créer directement un fichier .prompt.md dans le dossier .github/prompts de votre projet...

  1. Ou sinon, lancez la commande Chat: New Prompt File depuis la palette de commandes (Ctrl+Shift+P).
  2. Choisissez l’emplacement où créer le fichier prompt.
    Par défaut, seul le dossier .github/prompts est disponible.
    Vous pouvez ajouter d’autres dossiers de prompts pour votre espace de travail via le paramètre chat.promptFilesLocations.
  3. Entrez un nom pour votre fichier prompt.
  4. Rédigez le prompt en utilisant la syntaxe Markdown.

Référence: https://code.visualstudio.com/docs/copilot/copilot-customization#_create-a-workspace-prompt-file

Les prompts réutilisables

Créer un fichier prompt utilisateur

  1. Sélectionnez la commande Chat: New Prompt File dans la palette de commandes (Ctrl+Shift+P).
  2. Choisissez User Data Folder comme emplacement pour le fichier prompt.
    Si vous utilisez plusieurs profils VS Code, le fichier prompt sera créé dans le dossier de données utilisateur du profil courant.
  3. Entrez un nom pour votre fichier prompt.
    Sous Linux, il sera créé dans le dossier ~/.config/Code/User/prompts/ par défaut
  4. Rédigez le prompt en utilisant la syntaxe Markdown.

Référence: https://code.visualstudio.com/docs/copilot/copilot-customization#_create-a-workspace-prompt-file

Les prompts réutilisables

Utiliser un fichier prompt dans le chat

Plusieurs possibilités :

  • Lancez la commande Chat: Run Prompt depuis la palette de commandes (Ctrl+Shift+P) et sélectionnez un fichier prompt dans la liste.
  • Dans la vue Chat, tapez / suivi du nom du fichier prompt dans le champ de saisie du chat.
    Cette option permet de passer des informations supplémentaires dans le champ de saisie.
    Exemple : /create-react-form ou /create-react-form: formName=MyForm
  • Ouvrez le fichier prompt dans l'éditeur et cliquez sur le bouton "play" dans la barre de titre de l'éditeur.
    Vous pouvez choisir d'exécuter le prompt dans la session de chat courante ou d'ouvrir une nouvelle session.

Référence: https://code.visualstudio.com/docs/copilot/copilot-customization#_create-a-workspace-prompt-file

GitHub Copilot Instructions

Remarque : c'est l'équivalent dans GitHub Copilot des fichiers .cursor/rules (dans Cursor) et .windsurf/rules (dans Windsurf)

GitHub Copilot Instructions

Différences avec les fichiers "*.prompt.md"

copilot-instructions.md

  • Instructions ajoutées implicitement à toutes les requêtes
  • Définit des instructions générales sur le projet utiles pour toutes les tâches
  • Exemples : conventions de programmation à utiliser, stack technique, structure du projet, etc.
  • Le contenu de ce fichier ne doit pas être trop long (rester précis et concis) car ce sont des tokens en plus dans toutes les requêtes

*.prompt.md

  • Prompt réutilisable spécifique à une tâche précise
  • Complète ou spécialise les instructions globales
  • Exemple : lancer un refactoring, générer des tests unitaires, etc.

Vérifier ce qui est utilisé

Exemples d'instructions


					# Coding pattern preferences

					- Always prefer simple solutions
					- Avoid duplication of code whenever possible, which means checking for other areas of the codebase
						that might already have similar code and functionality
					- Write code that takes into account the different environments: dev, test, and prod
					- You are careful to only make changes that are requested or you are confident are well understood
						and related to the change being requested
					- When fixing an issue or bug, do not introduce a new pattern or technology without first exhausting
						all options for the existing implementation. And if you finally do this,
						make sure to remove the old implementation afterwards so we don't have duplicate logic.
					- Keep the codebase very clean and organized
					- Avoid writing scripts in files if possible, especially if the script is likely only to be run once
					- Avoid having files over 200-300 lines of code. Refactor at that point.
					- Mocking data is only needed for tests, never mock data for dev or prod
					- Never add stubbing or fake data patterns to code that affects the dev or prod environments
					- Never overwrite my .env file without first asking and confirming

					# Technical stack

					- Python for the backend
					- HTML/JS for the frontend
					- SQL databases, never JSON file storage
					- Separate databases for dev, test, and prod
					- Elasticsearch for search, using elastic.co hosting
					- Elastic.co will have dev and prod indexes
					- Python tests

					# Coding workflow preferences

					- Focus on the areas of code relevant to the task
					- Do not touch code that is unrelated to the task
					- Write thorough tests for all major functionality
					- Avoid making major changes to the patterns and architecture of how a feature works,
						after it has shown to work well, unless explicitly instructed
					- Always think about what other methods and areas of code might be affected by code changes
					

Source : https://www.youtube.com/watch?v=YWwS911iLhg

Exemples d'instructions

Exemple de workflow à tester

But: forcer un agent à adopter une approche "Test-Driven Development"

  1. Écrire le squelette du projet (structure, infra, etc.).
  2. Rédiger le fichier .github/copilot-instructions.md : y définir la stack technique du projet, les conventions, etc.
  3. Rédiger un PRD (Product Requirement Document) détaillé, idéalement avec l’aide d’une IA, au format Markdown.
    Ce document doit décrire précisément les fonctionnalités à implémenter, les cas d’utilisation, les exigences techniques, et l’ordre de réalisation.
  4. Générer un fichier TODO.md à partir du PRD, listant les fonctionnalités à développer dans l’ordre.
  5. Pour chaque fonctionnalité (traitée une par une) :
    1. Analyser le PRD et la TODO liste pour bien comprendre la fonctionnalité à développer.
    2. Spécifier précisément la tâche à réaliser et la faire valider par le développeur humain.
    3. Définir les tests à écrire avant d’implémenter le code (approche TDD).
    4. Écrire les tests unitaires correspondants.
    5. Implémenter la fonctionnalité.
    6. Exécuter les tests unitaires.
    7. Si les tests échouent, corriger le code jusqu’à validation.
    8. Si les tests passent, effectuer un git commit, réinitialiser le chat, mettre à jour le fichier TODO.md, puis passer à la fonctionnalité suivante.
  6. Refactoriser régulièrement le code pour améliorer sa lisibilité et sa maintenabilité.

Modèles

Qu'est-ce qu'un modèle en IA ?

Un "modèle" = une IA

Modes d'interaction dans Copilot

En 2024

Modèle Auto-complétion
Copilot-codex
(GPT-3.5 Turbo)
Modèle Chat
GPT-4

Modes d'interaction dans Copilot

En 2025

Modèle Auto-complétion
GPT-4o Copilot
(fine-tuning de GPT-4o mini)
Modèle Chat
GPT-4.1, GPT-4o, Claude Sonnet 3.5, Claude Sonnet 3.7, Claude Sonnet 3.7 Thinking, Claude Sonnet 4, Gemini 2.0 Flash, Gemini 2.5 Pro, o1, o3-mini, o4-mini, ...

Sélection du chat model dans VSCode

Mode "Chat"

Quel modèle choisir ?

Choosing the right AI model for your task

Comparing AI models using different tasks

Supported AI models in Copilot

Facturation Copilot

Modèles "premium"

Billing and availability of Copilot models

Facturation Copilot

Modèles "standards" vs "premium"


Comparatif des modèles

Fonctionnalités par modèle (juin 2025)

Model name Provider Release status Agent mode Ask mode Edit mode
GPT-4.1 OpenAI GA
GPT-4.5 OpenAI Public preview
GPT-4o OpenAI GA
o1 OpenAI Public preview
o3 OpenAI Public preview
o3-mini OpenAI GA
o4-mini OpenAI Public preview
Claude Opus 4 Anthropic GA
Claude Sonnet 3.5 Anthropic GA
Claude Sonnet 3.7 Anthropic GA
Claude Sonnet 3.7 Thinking Anthropic GA
Claude Sonnet 4 Anthropic GA
Gemini 2.5 Pro Google Public preview
Gemini 2.0 Flash Google GA

Légende : ✅ = mode disponible, ❌ = mode non disponible  |  GA = General Availability

Source : https://docs.github.com/en/copilot/reference/ai-models/supported-ai-models-in-copilot

Comparatif des modèles

Disponibilité par plan (juin 2025)

Modèles disponibles en chat Copilot Free Copilot Pro Copilot Pro+ Copilot Business Copilot Enterprise
GPT-4.1
GPT-4.5
GPT-4o
o1
o3
o3-mini
o4-mini
Claude Opus 4
Claude Sonnet 3.5
Claude Sonnet 3.7
Claude Sonnet 3.7 Thinking
Claude Sonnet 4
Gemini 2.5 Pro
Gemini 2.0 Flash

Légende : ✅ = disponible, ❌ = non disponible

Source : https://docs.github.com/en/copilot/reference/ai-models/supported-ai-models-in-copilot

Comparatif des modèles

"Multiplicateurs" par modèle (juin 2025)

Modèle Multiplicateur
abonnements payants
Multiplicateur
Copilot Free
GPT-4.1 0 1
GPT-4.5 50
GPT-4o 0 1
o1 10
o3 1
o3-mini 0.33 1
o4-mini 0.33
Claude Opus 4 10
Claude Sonnet 3.5 1 1
Claude Sonnet 3.7 1
Claude Sonnet 3.7 Thinking 1.25
Claude Sonnet 4 1
Gemini 2.5 Pro 1
Gemini 2.0 Flash 0.25 1

Légende : 1 = coût standard, 0 = inclus, ❌ = non applicable ou non disponible

Source : docs.github.com/en/copilot/reference/ai-models/supported-ai-models-in-copilot

Comparatif des modèles

Fonctionnalités par modèle (juin 2025)

Model name Release date Knowledge Cutoff Multimodal input
(text+images)
Web search File search Reasoning MCP compliant Context window (input)
GPT-4.1 2025-04 2024-06 1M
GPT-4.5 2025-02 2023-10 ? ? ? ? ? ?
GPT-4o 2024-05 2023-10 128k
o1 2024-09 2023-10 200k
o3 2025-04 2024-06 200k
o3-mini 2025-01 2023-10 200k
o4-mini 2025-04 2024-06 200k
Claude Opus 4 2025-05 2025-03 200k
Claude Sonnet 3.5 2024-06 2024-04 200k
Claude Sonnet 3.7 2025-02 2024-11 200k
Claude Sonnet 3.7 Thinking 2025-02 2024-11 200k
Claude Sonnet 4 2025-04 2025-03 200k
Gemini 2.5 Pro 2025-06 2025-01 1M
Gemini 2.0 Flash 2025-02 2024-08 1M

Légende : ✅ = mode disponible, ❌ = mode non disponible

Sources : https://platform.openai.com/docs/models, https://openai.com/index/new-tools-and-features-in-the-responses-api/, https://docs.anthropic.com/en/docs/about-claude/models/overview#model-comparison-table, https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/web-search-tool , https://ai.google.dev/gemini-api/docs/models, https://ai.google.dev/gemini-api/docs/function-calling

Ça représente quoi concrètement 200k tokens ?

Ordre de grandeur de la fenêtre de contexte

  • 200 000 tokens ≈ 150 000 mots ≈ 400-600 pages de texte (format livre technique)
  • En code source :
    • 30 000 à 50 000 lignes de code (dépend du langage et du style)
    • un projet Python ou JavaScript de taille moyenne à grande
  • Permet d’analyser plusieurs fichiers ou un projet entier en une seule requête (dans la limite de la fenêtre)
  • À titre de comparaison : GPT-3.5 Turbo (2023) avait une fenêtre de 4k à 16k tokens

200 000 tokens = 30 000 à 50 000 lignes de code…

C’est bien plus qu’il n’en faut pour couvrir un projet complet, non ?

Non 😅

Comparatif des modèles

Benchmarks 🏆️

Source: https://lmarena.ai/

Les modèles "Standards"

GPT-4o vs GPT-4.1

Accès illimité pour les licences payantes. À utiliser en priorité pour les tâches "simples".

  • GPT-4.1 🏆️
    • Plus récent : avril 2025
    • Fenêtre de contexte plus grande (1M tokens en entrée)
    • Connaissances plus récentes : juin 2024
    • Globalement plus performant
    • À utiliser par défaut 👈️

Model name Release date Knowledge Cutoff Multimodal input
(text+images)
Web search File search Reasoning MCP compliant Context window (input)
GPT-4.1 2025-04 2024-06 1M
GPT-4o 2024-05 2023-10 128k

Petite digression

Ne pas confondre GPT-4o et o4

  • Modèles multimodaux ("omni") : GPT-4o (o pour omni)
    • Capables de traiter texte, image, audio, vidéo
    • Exemple : GPT-4o (mai 2024), modèle par défaut dans Copilot
  • Modèles "raisonnants" : o1, o3, o4
    • Famille de modèles OpenAI axés sur le raisonnement et la planification
    • Utilisés pour l’orchestration d’agents ou de tâches multi-étapes
    • Exemples : o1 (2024), o3-mini, o4-mini (2025)
  • Attention à la confusion : GPT-4o (omni) ≠ GPT-o4 (modèle "o4")
    (Sam Altman lui-même reconnaît que la nomenclature OpenAI est très mauvaise !)

Autres fonctionnalités

Faire une revue de code automatisée

Utiliser Copilot pour la relecture et les commentaires

Utiliser des images dans Copilot Chat

  • Vous pouvez joindre des images à vos prompts pour demander à Copilot de les analyser ou de générer du code à partir de celles-ci.
  • Exemples d’utilisation :
    • Demander une explication sur une capture d’écran de code.
    • Générer du code à partir d’une maquette d’interface utilisateur.
    • Décrire un diagramme ou un flowchart et demander une analyse ou une génération de code.
    • Reproduire une page web à partir d’une capture d’écran.
  • Formats d’images supportés : JPEG (.jpg, .jpeg), PNG (.png), GIF (.gif), WEBP (.webp).

Source : https://docs.github.com/en/copilot/how-tos/chat/asking-github-copilot-questions-in-your-ide#using-images-in-copilot-chat

Joindre des images à un prompt de chat

Mise en œuvre

  1. Choisir un modèle compatible :
    Dans la zone de chat, sélectionnez un modèle qui supporte l’ajout d’images (i.e. : n'importe quel modèle sauf o3-mini).
  2. Ajouter une image :
    • Copiez-collez une image dans la fenêtre de chat.
    • Glissez-déposez une ou plusieurs images depuis l’explorateur de fichiers ou l’Explorer de VSCode.
    • Clic droit sur un fichier image dans l’Explorer VSCode → Copilot > Add File to Chat.
  3. Rédiger votre prompt :
    Saisissez votre question ou instruction pour accompagner l’image (ex : "explique ce diagramme", "détaille chaque image", "que signifie ce message d’erreur ?", etc.).

Source : https://docs.github.com/en/copilot/how-tos/chat/asking-github-copilot-questions-in-your-ide#using-images-in-copilot-chat

Source : https://x.com/AniBaddepudi/status/1905339694600339510

Indexation des projets (RAG)

Dépasser la limite de la fenêtre de contexte

  • Problème : Les modèles IA ont une fenêtre de contexte limitée (nombre maximal de tokens analysés en une fois).
  • Impossible d’analyser l’ensemble d’un gros projet ou de multiples fichiers en une seule requête.
  • Solution : RAG (Retrieval-Augmented Generation) :
    • Le projet est indexé (résumé, découpé en chunks, embeddings…)
    • À chaque requête, l’IA récupère dynamiquement les parties pertinentes du projet à injecter dans le contexte
    • Permet de répondre à des questions sur l’ensemble du code, même au-delà de la fenêtre de contexte du modèle

Modes d’indexation dans GitHub Copilot + VSCode

Locale, distante, basique

  • Indexation locale :
    • L’index est généré et stocké en local sur la machine du développeur
    • Peut être limitée par la puissance de la machine
  • Indexation distante :
    • L’index est généré et stocké sur github.com à chaque push
  • Indexation "basique" :
    • Cette indexation utilise des algorithmes plus simples pour rechercher dans votre code et a été optimisée pour fonctionner localement sur de grands projets.
    • Solution par défaut au delà de 2500 fichiers

Voir et réindexer l’index du projet

Contrôler l’indexation dans Copilot + VSCode

  • Vérifier le mode d’indexation utilisé
    Copilot indexing mode in VSCode
  • Réindexer manuellement un projet :
    • Avec la commande GitHub Copilot: Build Local Workspace Index
      (tapez plus simplement "copilot index" dans la command palette)
      (dans la "command palette" i.e. Ctrl + Shift + P)
    • L’indexation peut prendre un certain temps, en particulier pour les grands projets.
      Vous pouvez suivre la progression dans la barre de statut de VS Code.

Quelques alternatives à GitHub Copilot








Cline


Tabnine


Amazon Q Developer (anciennement CodeWhisperer)

Claude Code


Codex CLI



  • Sortie: Avril 2025
  • Interface en ligne de commande
  • https://github.com/openai/codex

Gemini Code Assist


Gemini CLI



Pythagora

Lovable

V0

Replit

Reflex

Bolt.new

Continue

  • Extension open source pour VSCode
  • Plus grand choix de modèles (open source, locaux, API)
  • Exemples de modèles open source/open weights supportés :
  • Plus transparent (comment sont construit les prompts, comment sont gérés les contextes, etc.)

Quelques conseils

  • Évitez les fils de discussion trop longs (ex. : 11k lignes) → baisse de performance
    • Le fil complet est ajouté au contexte de chaque requête (prompt)
    • Un prompt trop long rend le LLM moins performant
    • Privilégiez une tâche = un fil de discussion
    • Un "groupe" de questions = un fil de discussion
  • Utilisez @workspace / #codebase en mode Ask
  • Limite de requêtes simultanées : par défaut, un agent GitHub Copilot peut effectuer jusqu’à 5 requêtes simultanées pour les utilisateurs Copilot Free, et 15 requêtes pour les autres abonnements.
  • L'édition inline peut être très utile