01 IA responsable
Copilot est un assistant : hallucinations, biais et limites
1.2 GitHub Copilot est un assistant, pas une source de vérité
Définition
GitHub Copilot est un outil d’assistance basé sur l’IA générative. Il peut proposer :
- du code ;
- des tests ;
- des explications ;
- des commandes ;
- de la documentation ;
- des idées de refactoring ;
- des suggestions de correction.
Mais ses réponses sont des suggestions, pas des garanties.
Ce que Copilot sait faire très bien
Copilot est très utile pour :
- générer du boilerplate ;
- écrire des tests unitaires ;
- expliquer du code existant ;
- proposer un refactoring ;
- générer des exemples d’utilisation ;
- accélérer l’écriture de documentation ;
- aider à comprendre une erreur ;
- proposer plusieurs approches.
Ce que Copilot ne garantit pas
Copilot ne garantit pas que le code est :
- sécurisé ;
- optimal ;
- conforme aux règles de l’organisation ;
- juridiquement acceptable ;
- exempt de bugs ;
- compatible avec toutes les versions ;
- aligné avec ton architecture ;
- adapté à ton contexte métier.
Exemple concret
Tu demandes :
Create a Python function to hash passwords.Copilot pourrait proposer :
import hashlib
def hash_password(password):
return hashlib.md5(password.encode()).hexdigest()Le code fonctionne techniquement. Mais il est mauvais pour un vrai système de sécurité.
Pourquoi ?
- MD5 est obsolète.
- Il n’y a pas de salt.
- Il n’y a pas de mécanisme de ralentissement comme bcrypt, scrypt ou Argon2.
- C’est dangereux pour stocker des mots de passe.
Une meilleure réponse serait d’utiliser une librairie adaptée :
from passlib.hash import bcrypt
def hash_password(password: str) -> str:
return bcrypt.hash(password)
def verify_password(password: str, hashed_password: str) -> bool:
return bcrypt.verify(password, hashed_password)Le point important :
Un code qui fonctionne n’est pas forcément un code responsable.
1.4 Les hallucinations de Copilot
Définition
Une hallucination se produit quand un modèle d’IA génère une réponse qui semble crédible, mais qui est fausse, inventée ou non vérifiée.
En développement, ça peut prendre plusieurs formes :
- fonction inexistante ;
- API obsolète ;
- librairie inventée ;
- mauvaise syntaxe ;
- fausse explication ;
- commande dangereuse ;
- configuration invalide ;
- comportement mal interprété.
Exemple 1 : API inventée
Tu demandes :
Write Terraform code to enable advanced autoscaling for this cloud service.Copilot peut générer :
resource "aws_super_autoscaling_policy" "main" {
enabled = true
}Le code a l’air plausible. Mais la ressource n’existe pas.
Bonne réaction :
Vérifier dans :
- la documentation officielle ;
- l’autocomplétion Terraform ;
terraform validate;- les tests ;
- la CI.
Exemple 2 : Librairie obsolète
Copilot propose :
const request = require("request");Mais la librairie request est dépréciée.
Meilleure approche :
const response = await fetch("https://api.example.com/data");ou utiliser une librairie maintenue selon le contexte.
Exemple 3 : Explication fausse
Tu donnes à Copilot :
def add_item(item, items=[]):
items.append(item)
return itemsCopilot pourrait expliquer trop rapidement :
This function creates a new list every time.Mais c’est faux. En Python, l’argument par défaut mutable est partagé entre les appels.
Le bug :
print(add_item("a")) # ['a']
print(add_item("b")) # ['a', 'b']Version correcte :
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items1.5 Les biais dans les réponses de l’IA
Définition
Un biais est une tendance systématique qui peut influencer une réponse de manière injuste, incomplète ou incorrecte.
Les modèles IA apprennent à partir de grands volumes de données. Ces données peuvent contenir :
- du vieux code ;
- des mauvaises pratiques ;
- des biais sociaux ;
- des exemples non sécurisés ;
- des conventions dépassées ;
- des patterns non adaptés à ton contexte.
Exemple informatique
Tu demandes :
Generate a secure login form.Copilot pourrait générer un formulaire qui :
- ne protège pas contre le brute force ;
- n’ajoute pas de CSRF token ;
- stocke mal les sessions ;
- ne valide pas correctement les inputs ;
- ignore l’accessibilité ;
- n’inclut pas de MFA.
Le biais ici n’est pas forcément social. C’est un biais vers des exemples simples, souvent incomplets.
Exemple métier
Tu demandes :
Create a function to detect suspicious users.Copilot pourrait proposer des règles simplistes :
if user.country in ["X", "Y", "Z"]:
risk_score += 50C’est potentiellement discriminatoire ou juridiquement problématique.
Meilleur prompt :
Create a risk scoring function based only on user behavior signals such as failed login attempts, impossible travel, device changes, and suspicious transaction patterns. Avoid using protected attributes or demographic data.À retenir pour le GH-300
- Une hallucination est une réponse plausible mais fausse ou inventée : elle peut compiler.
- Les biais viennent des données : code ancien, mauvaises pratiques, biais sociaux, exemples simples et incomplets.
- On tranche avec une source de vérité : documentation officielle, tests, exécution, review.
- Une explication assurée n’est pas une preuve.
Questions de la leçon
Chargement de la question…
Pour finir
À retenir
- Une hallucination est une réponse plausible mais fausse ou inventée : elle peut compiler.
- Les biais viennent des données : code ancien, mauvaises pratiques, biais sociaux, exemples simples et incomplets.
- On tranche avec une source de vérité : documentation officielle, tests, exécution, review.
- Une explication assurée n’est pas une preuve.
Objectif GH-300
- Risques et limites de l’IA générative (Describe risks and limitations of Generative AI tools)
Achèvement
Il reste à faire : .