07 Données et architecture

Limites des LLM et de Copilot

7.9 Limites des LLMs 🧠⚠️

Définition

Un LLM est un modèle de langage capable de générer du texte ou du code à partir d’un contexte.

Mais un LLM ne “comprend” pas le monde comme un humain.

Il prédit des réponses probables à partir de son entraînement et du contexte fourni. Il ne vérifie pas que sa réponse est vraie : il ne peut donc pas garantir qu’elle est correcte, même quand elle est bien écrite.

Limite 1 : Hallucinations 👻

Un LLM peut inventer :

  • une API ;
  • une fonction ;
  • une option CLI ;
  • une librairie ;
  • un comportement ;
  • une explication ;
  • une configuration.

Exemple

Copilot propose :

Bash
aws enable-super-secure-vpc-mode --auto

La commande semble plausible.

Mais elle peut être inventée.

Bonne réaction :

Texte
Vérifier dans la documentation officielle avant utilisation.

Limite 2 : Contexte incomplet 🕳️

Si Copilot n’a pas le bon contexte, il répond avec ce qu’il a.

Exemple

Tu demandes :

Texte
Fix the payment bug.

Sans issue, sans test, sans erreur, sans fichier, Copilot peut deviner.

Meilleur prompt :

Texte
Fix the payment bug described in this failing test.
Use PaymentService.ts and RetryPolicy.ts.
Do not change the public API.

Limite 3 : Mauvais raisonnement métier 🧾

Copilot peut générer du code qui fonctionne techniquement mais viole une règle métier.

Exemple

Règle métier :

Texte
Un utilisateur désactivé ne doit pas recevoir d’email de reset password.

Copilot peut ignorer cette règle si elle n’est pas dans le contexte.

Limite 4 : Sécurité insuffisante 🔐

Copilot peut générer :

  • requêtes SQL non paramétrées ;
  • permissions trop larges ;
  • secrets hardcodés ;
  • validation d’input faible ;
  • stockage de mot de passe non sécurisé.

Limite 5 : Code obsolète 📦

Copilot peut proposer :

  • anciennes API ;
  • librairies dépréciées ;
  • patterns dépassés ;
  • syntaxe plus supportée ;
  • versions non compatibles.

Limite 6 : Trop grande confiance dans la réponse

Le style d’une réponse IA peut être très confiant.

Mais :

Texte
Réponse confiante ≠ réponse correcte.

À retenir

Les LLMs sont utiles, mais ils ont besoin de :

Texte
contexte + contraintes + validation humaine + tests + review

7.10 Limites spécifiques de GitHub Copilot 🧩

Limite 1 : Copilot ne voit pas forcément tout ton projet

Copilot peut utiliser du contexte, mais il ne connaît pas automatiquement :

  • toute ton architecture ;
  • toutes tes conventions internes ;
  • toutes tes règles métier ;
  • tous tes secrets ;
  • toutes tes dépendances ;
  • tous tes incidents ;
  • tout ton historique de décisions.

Le contexte a aussi une taille limitée : tout ne tient pas dans une demande. GitHub signale par exemple que, pour une très grande pull request, une partie du contenu peut ne pas tenir dans l’appel, ce qui rend certaines suggestions moins précises. Même logique pour un Space : Copilot ne traite qu’une partie de ce qu’il contient, d’où l’intérêt de choisir ce qu’on lui donne. Enfin, la qualité des suggestions varie selon le langage : elle dépend du volume et de la diversité du code disponible pour l’entraînement.

Limite 2 : Le contexte dépend de la surface utilisée

Copilot dans l’IDE, Copilot Chat sur GitHub.com, Copilot CLI, Copilot Code Review et Copilot cloud agent n’utilisent pas forcément exactement le même contexte.

Exemple :

Texte
IDE inline suggestion → contexte local autour du curseur
Copilot Chat IDE → fichiers ouverts, sélection, conversation
Copilot CLI → dossier trusted et interaction terminal
GitHub.com → repo, PR, issue selon permissions
Cloud agent → issue/repo/branche/semantic search selon configuration

GitHub précise par exemple que pendant une session Copilot CLI, Copilot peut tenter de lire, modifier et exécuter des fichiers dans le dossier courant et ses sous-dossiers si le dossier est trusted. (docs.github.com)

Limite 3 : Les features peuvent dépendre des policies

Une fonctionnalité peut être indisponible parce que :

  • le plan ne l’inclut pas ;
  • l’admin l’a désactivée ;
  • l’organisation l’interdit ;
  • l’enterprise impose une policy ;
  • le contexte ne permet pas son usage.

Limite 4 : Content exclusions

Les content exclusions peuvent empêcher certains contenus d’être utilisés par Copilot.

GitHub documente la configuration des content exclusions au niveau repository, organisation ou enterprise. (docs.github.com)

Mais il faut toujours connaître les limites selon les fonctionnalités.

Ne réponds jamais :

Texte
Content exclusions protègent tout, partout, dans tous les cas.

C’est trop simpliste.

Limite 5 : Copilot peut être influencé par mauvais contexte

Si tu ouvres un fichier obsolète, expérimental ou incorrect, Copilot peut s’en inspirer.

Exemple :

Texte
old_auth_service.ts
legacy_auth_service.ts
auth_service.ts

Si tu demandes :

Texte
Implement authentication following the existing project style.

Copilot peut se tromper de référence.

Bonne pratique :

  • ouvrir le bon fichier ;
  • fermer les mauvais ;
  • préciser explicitement la source de vérité.

Limite 6 : Copilot ne remplace pas les outils spécialisés

Copilot ne remplace pas :

  • SAST ;
  • secret scanning ;
  • dependency scanning ;
  • tests ;
  • CI/CD ;
  • code review humaine ;
  • documentation officielle ;
  • validation architecture ;
  • pentest ;
  • analyse compliance.

Il peut aider, mais il ne remplace pas ces contrôles.

À retenir pour le GH-300

  • Un LLM prédit des réponses probables : il ne vérifie pas leur vérité et ne peut pas garantir qu’elles soient correctes, même quand elles sont assurées.
  • Hallucination, contexte incomplet, règle métier absente : ce sont des conséquences de ce fonctionnement, pas des pannes.
  • Le contexte est limité en taille et dépend de la surface : ce qui n’y entre pas n’est pas pris en compte.
  • Un mauvais fichier ouvert peut influencer la réponse : on désigne la source de vérité.

D3 · Données et architecture de GitHub Copilot · 10–15 %