Skip to content

Prompt Engineering : Bonnes pratiques, mauvais usages et risques

Bonnes pratiques de prompt engineering

Pour maximiser la qualité des réponses et limiter les erreurs ou comportements inattendus, certaines pratiques sont essentielles :

  • Clarté et précision : formuler des instructions détaillées et sans ambiguïté. Plus le modèle comprend ce que vous attendez, mieux il répond.

  • Indiquer explicitement ce qu’il ne faut pas faire : inclure des instructions négatives pour éviter les contenus indésirables ou hors sujet. Par exemple, demander d’éviter les termes techniques ou les recommandations personnelles.

  • Contexte limité et pertinent : n’inclure que les informations nécessaires pour répondre correctement, afin de réduire le bruit et les risques d’erreurs.

  • Structuration des réponses : utiliser des formats explicites pour la sortie, comme des listes, des tableaux ou des résumés synthétiques.

  • Test et itération : vérifier plusieurs variantes de prompts pour identifier celui qui produit les résultats les plus fiables.

  • Séparation entre instructions et données utilisateur : ne jamais laisser le contenu utilisateur modifier directement les règles ou instructions du prompt.

Mauvais usages et risques liés aux prompts

Même avec des prompts bien construits, certaines pratiques peuvent engendrer des problèmes :

  • Ambiguïté ou instruction incomplète : entraîne des réponses vagues ou incorrectes.

  • Contexte excessif ou bruit : peut diluer l’information pertinente et réduire la précision de la réponse.

  • Fournir des instructions conflictuelles : le modèle peut se tromper s’il reçoit des consignes contradictoires.

  • Utilisation dans des cas critiques sans revue humaine : certaines décisions nécessitant sécurité, conformité ou expertise humaine ne doivent pas reposer uniquement sur un LLM.

Ces risques soulignent l’importance de la revue humaine et de l’application de règles strictes pour les prompts.

Principales familles d’attaques sur les prompts

Les modèles de langage sont puissants mais vulnérables à certaines manipulations. Comprendre les attaques sur les prompts permet d’anticiper et de sécuriser les systèmes.

1. Prompt Injection

Cette attaque consiste à insérer dans le texte ou les documents utilisés par le modèle des instructions destinées à détourner son comportement. L’attaquant cherche à faire ignorer les instructions initiales et à imposer ses propres consignes. Par exemple, un texte de référence pourrait contenir un message demandant au modèle de révéler des informations confidentielles, que le modèle suivrait si le contenu n’est pas filtré.

2. Jailbreaking

Le jailbreaking vise à contourner les protections internes du modèle. L’attaquant reformule sa demande ou exploite des ambiguïtés pour obtenir des réponses que le modèle refuserait normalement. Il exploite les limites des consignes de sécurité textuelles et peut provoquer la génération de contenu inapproprié.

3. Prompt Poisoning

L’empoisonnement consiste à altérer les données d’entraînement ou les documents utilisés pour le fine-tuning ou la génération augmentée par récupération (RAG). Le but est d’introduire des comportements indésirables dans le modèle, comme la production systématique de contenus biaisés ou malveillants.

4. Exfiltration et contextual leakage

Lorsqu’un LLM utilise des sources externes (documents internes, bases de connaissances), un prompt peut être conçu pour amener le modèle à extraire et renvoyer des informations sensibles. Cela pose un risque majeur pour la confidentialité des données.

5. Model Extraction et Fingerprinting

En multipliant les requêtes, un attaquant peut essayer de reconstruire la logique interne du modèle ou d’extraire ses paramètres, mettant en danger la propriété intellectuelle et la sécurité.

Mesures de protection

Pour réduire les risques liés aux prompts et aux attaques :

  • Filtrer et nettoyer le texte d’entrée pour séparer instructions et données utilisateur.

  • Limiter le contexte aux informations strictement nécessaires.

  • Séparer les instructions système des données afin que le contenu utilisateur ne puisse pas modifier les consignes.

  • Appliquer un contrôle des sorties : vérification automatique et humaine pour les contenus sensibles.

  • Restreindre les actions des agents et les permissions d’accès aux données.

  • Isoler les secrets et informations sensibles hors des prompts.

  • Monitorer et auditer les interactions, avec des mécanismes de détection d’anomalies et des tests de red-teaming.

Conclusion

Le prompt engineering est essentiel pour obtenir des réponses fiables et adaptées d’un modèle de langage. Cependant, il existe des risques majeurs liés aux mauvaises pratiques et aux attaques sur les prompts, comme les injections, jailbreaking ou empoisonnements. La clé pour utiliser les LLM en sécurité consiste à combiner bonnes pratiques de construction des prompts, revues humaines, séparation claire des instructions et des données, et contrôles techniques et organisationnels.

Cette approche permet de maximiser l’efficacité des prompts tout en réduisant les risques pour les utilisateurs et les systèmes.

--

Ce billet de blog fait partie du cours AWS AI Practitioner en français disponible sur Udemy et sur la plateforme LeCloudFacile.com.