Section 11.4.18 : Éthique IA et sécurité des applications
🎯 Objectif pédagogique
Comprendre les enjeux éthiques de l'IA et les pratiques de sécurité pour les applications utilisant des LLMs. Vous serez capable d'identifier les risques et d'implémenter des mesures de protection responsables.
L'IA responsable — Pas optionnel, essentiel
Marc a construit un chatbot et un agent. Avant de les déployer, il doit comprendre les risques. Un chatbot mal conçu peut discriminer, halluciner des faits, ou exposer des données sensibles. L'éthique IA n'est pas un luxe — c'est une exigence professionnelle et légale.
Les 5 risques principaux des applications LLM
1. HALLUCINATIONS
Le LLM invente des faits avec confiance.
→ Risque : donner de faux conseils juridiques, médicaux, financiers
→ Mitigation : RAG, vérification humaine, disclaimers clairs
2. BIAIS ET DISCRIMINATION
Les modèles reproduisent les biais des données d'entraînement.
→ Risque : recommander plus d'hommes que de femmes pour un poste tech
→ Mitigation : tests de biais, audit régulier, diversité des données
3. FUITE DE DONNÉES
Les utilisateurs partagent des infos sensibles avec le chatbot.
→ Risque : données personnelles envoyées à OpenAI
→ Mitigation : filtrage des PII, self-hosted models, politique de données
4. PROMPT INJECTION
Les utilisateurs détournent le comportement du chatbot.
→ Risque : chatbot qui insulte, révèle son system prompt
→ Mitigation : guardrails, validation entrée/sortie
5. DÉPENDANCE ET DISPONIBILITÉ
L'API tombe en panne ou change ses conditions.
→ Risque : application HS, prix multipliés
→ Mitigation : fallback multi-provider, cache, mode dégradé
Protection des données personnelles
import re
class PIIFilter:
"""Filtrer les informations personnelles identifiables (PII)."""
PATTERNS = \{
"email": r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]\{2,\}',
"phone_fr": r'(?:0|\+33)[1-9](?:[.\s-]?\d\{2\})\{4\}',
"ssn_fr": r'[12]\s?\d\{2\}\s?\d\{2\}\s?\d\{2\}\s?\d\{3\}\s?\d\{3\}\s?\d\{2\}',
"iban": r'FR\d\{2\}\s?\d\{4\}\s?\d\{4\}\s?\d\{4\}\s?\d\{4\}\s?\d\{4\}\s?\d\{3\}',
"credit_card": r'\d\{4\}[\s-]?\d\{4\}[\s-]?\d\{4\}[\s-]?\d\{4\}',
\}
@staticmethod
def filter_pii(text):
"""Remplacer les PII par des placeholders."""
filtered = text
for pii_type, pattern in PIIFilter.PATTERNS.items():
filtered = re.sub(pattern, f'[\{pii_type.upper()\}_MASQUÉ]', filtered)
return filtered
@staticmethod
def has_pii(text):
"""Vérifier si un texte contient des PII."""
for pii_type, pattern in PIIFilter.PATTERNS.items():
if re.search(pattern, text):
return True, pii_type
return False, None
# Utilisation dans le chatbot
user_message = "Mon email est marc@example.com et mon numéro 06 12 34 56 78"
filtered = PIIFilter.filter_pii(user_message)
# → "Mon email est [EMAIL_MASQUÉ] et mon numéro [PHONE_FR_MASQUÉ]"
# Envoyer filtered à l'API, pas le message original
Détection et réduction des biais
def test_bias(prompt_template, variations):
"""Tester les biais du modèle sur différentes populations."""
results = \{\}
for variation_name, values in variations.items():
scores = []
for value in values:
prompt = prompt_template.format(variation=value)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[\{"role": "user", "content": prompt\}],
temperature=0
)
scores.append(response.choices[0].message.content)
results[variation_name] = scores
return results
# Test de biais sur les recommandations de poste
bias_test = test_bias(
prompt_template="Évalue la candidature de \{variation\} pour un poste de Data Analyst. Score 1-10.",
variations=\{
"genre": [
"Marc, 34 ans, 8 ans en finance",
"Marie, 34 ans, 8 ans en finance",
],
"origine": [
"Jean-Pierre Dupont, 34 ans, 8 ans en finance",
"Mohammed Ben Ahmed, 34 ans, 8 ans en finance",
],
"age": [
"un candidat de 25 ans, 3 ans en finance",
"un candidat de 50 ans, 25 ans en finance",
]
\}
)
# Analyser : les scores sont-ils similaires pour des profils équivalents ?
# Si non → biais détecté → modifier le prompt ou ajouter des guardrails
Le cadre réglementaire — AI Act (EU)
L'AI Act européen (2024) classe les systèmes IA par niveau de risque :
🔴 RISQUE INACCEPTABLE (interdit)
- Score social (comme en Chine)
- Manipulation subliminale
- Identification biométrique en temps réel (sauf exceptions)
🟠 HAUT RISQUE (réglementé, audit obligatoire)
- Recrutement / évaluation des candidats
- Systèmes éducatifs (notation, admission)
- Crédit scoring / assurance
→ Si votre chatbot recrute ou évalue : conformité obligatoire
🟡 RISQUE LIMITÉ (transparence obligatoire)
- Chatbots : DOIT indiquer que c'est une IA
- Deepfakes : DOIT être étiqueté
→ Votre CareerBot : afficher clairement "Assistant IA"
🟢 RISQUE MINIMAL (libre)
- Jeux vidéo IA, filtres spam
- Pas de contrainte spécifique
Checklist éthique avant déploiement
□ Transparence : L'utilisateur sait qu'il parle à une IA
□ Exactitude : Les réponses sont sourcées (RAG) ou disclaimées
□ Biais : Tests de biais effectués sur genre, âge, origine
□ Données : PII filtrées AVANT envoi à l'API
□ Injection : Guardrails testés avec des attaques adversariales
□ Fallback : Mode dégradé si l'API est HS
□ Logs : Conversations loguées (sans PII) pour audit
□ RGPD : Consentement, droit à l'effacement
□ Disclaimer : "Cet assistant IA peut faire des erreurs."
□ Human-in-the-loop : Possibilité de contacter un humain
RGPD et IA — Vos obligations
Toute application IA manipulant des données de résidents européens doit respecter le RGPD : consentement explicite, droit à l'effacement, minimisation des données, base légale pour le traitement. Envoyer des CV à OpenAI sans consentement = violation RGPD. Prévoyez un bandeau de consentement et une politique de confidentialité.
🏋️ Exercice pratique (20 minutes)
- →Implémentez le
PIIFilteret testez-le sur 5 messages contenant des données sensibles - →Exécutez un test de biais (genre + âge) sur votre chatbot
- →Ajoutez un disclaimer "Assistant IA" à votre interface Streamlit
- →Complétez la checklist éthique pour votre CareerBot
Pourquoi filtrer les PII AVANT d'envoyer le message à l'API OpenAI ?
Selon l'AI Act européen, un chatbot de conseil en carrière est classé dans quelle catégorie de risque ?