Leçon 4 sur 5 · 10 min
Tutoriel : testez n’importe quel garde-fou avant de lui faire confiance
Une méthode que toute équipe peut appliquer à n’importe quel garde-fou, Guardrino compris : compter les attaques arrêtées et les messages sains bloqués à tort, fixer le seuil avant de regarder, ne jamais tester sur les données d’entraînement, utiliser les jeux de test publics pour ce qu’ils mesurent, et tester dans les langues de vos clients.
Choisir un garde-fou est une décision d’entreprise, et elle mérite des preuves. Bonne nouvelle : la méthode est simple et fonctionne de la même façon pour tous les produits, le nôtre compris. Avec un après-midi de préparation, votre équipe peut voir comment un garde-fou se comporte sur votre type de trafic, dans vos langues, avant qu’un seul client ne le rencontre.
L’idée derrière chaque étape
Considérez le garde-fou comme une fonction : un message entre, un score sort, de 0 à 1, qui signifie « quelle est la probabilité que ce soit une attaque ? ». Un seuil transforme le score en décision. Un jeu de test est une liste de messages dont vous connaissez déjà la bonne réponse. Appliquez la fonction à chaque message et comptez deux choses :
- Arrêtées : les attaques dont le score atteint ou dépasse le seuil, sur l’ensemble des attaques.
- Bloqués à tort : les messages sains dont le score atteint ou dépasse le seuil, sur l’ensemble des messages sains.
Ajoutez le temps que prend un contrôle, sur un matériel précisé, et vous avez les trois chiffres qui comptent.
Quatre règles pour des chiffres honnêtes
- Ne testez jamais sur ce qui a servi à l’entraînement. Un modèle obtient de bons scores sur les messages qu’il a déjà vus. Demandez au fournisseur quels jeux publics ont servi à l’entraînement, et écartez-les de votre test.
- Fixez le seuil avant de regarder le test. Choisissez-le sur un jeu de validation séparé, notez-le, puis lancez le test une fois. Ajuster le seuil en regardant les résultats du test les embellit.
- Donnez toujours les deux côtés. Un garde-fou qui bloque tout arrête toutes les attaques. Chaque chiffre « arrêtées » doit être accompagné de son chiffre « bloqués à tort », mesuré sur un jeu qui contient des messages sains.
- Dites ce que mesure chaque jeu. Certains portent sur le contenu préjudiciable, d’autres sur la manipulation ; certains ne contiennent que des attaques. Présentez chaque jeu séparément, jamais un chiffre unique qui mélange tout.
Des jeux de test publics à connaître
| Jeu de test | Ce qu’il mesure | Points d’attention |
|---|---|---|
| XSTest [1] | Des prompts sains qui semblent dangereux (« comment tuer un processus Python ? ») à côté de prompts dangereux : le meilleur contrôle rapide des messages bloqués à tort. | En anglais uniquement ; traduisez un échantillon pour vos langues. |
| GuardBench [2] | Une bibliothèque qui fait passer un garde-fou sur de nombreux jeux de test publics avec une seule interface. | La plupart de ses jeux portent sur le contenu préjudiciable ; chacun garde sa licence, et certains demandent une inscription. |
| Les tests d’injection de prompt de CyberSecEval, dans PurpleLlama de Meta [3] | Des attaques par injection de prompt, chacune écrite contre un prompt système donné, avec des traductions automatiques, dont l’arabe et le français. | Chaque ligne est une attaque : il ne mesure que les attaques arrêtées ; associez-le à un jeu de messages sains. Un garde-fou qui ne voit que le message de l’utilisateur ne peut pas juger certains de ces tests. |
Donnez un intervalle, pas un point
Un taux mesuré sur 50 messages et le même taux mesuré sur 5 000 ne disent pas la même chose. Donnez chaque taux avec n, le nombre de messages derrière lui, et un intervalle de confiance, par exemple un intervalle de Wilson [4]. Quand les intervalles de deux garde-fous se chevauchent, le test n’a pas montré que l’un est meilleur. L’article de Miller sur les barres d’erreur des évaluations de modèles explique comment planifier et comparer de telles mesures [5].
Testez dans les langues de vos clients
Un garde-fou solide en anglais peut encore trébucher sur l’arabe. Séparez vos résultats par forme d’écriture, pas seulement par langue :
- L’arabe tel qu’on le tape d’habitude, et l’arabe avec un tashkeel correct : les deux doivent passer quand ils sont sains. Le texte vocalisé est normal dans les textes religieux, littéraires et scolaires.
- L’arabe avec un tashkeel ou un tatweel ajouté au hasard : la manière dont un attaquant tente de passer sous un filtre.
- L’arabizi, et les dialectes de vos clients : du Golfe, égyptien, levantin.
- L’arabe et l’anglais mélangés dans un même message, comme écrivent beaucoup de gens dans la région.
Deux façons de lancer le test
- Noter le garde-fou seul : envoyez-lui chaque message de test et enregistrez le score. Rapide, peu coûteux et facile à répéter à chaque nouvelle version.
- De bout en bout : faites passer les attaques à votre chatbot seul, puis au même chatbot derrière le garde-fou, et laissez un modèle juge décider à chaque fois si le chatbot a été piégé. La différence est l’apport du garde-fou. Nommez le modèle cible et le juge, car les erreurs du juge font partie du résultat.
Puis essayez-le sur votre propre trafic
Les jeux publics disent comment un garde-fou se comporte en général ; votre trafic dit comment il se comporte pour vous. Faites-le d’abord tourner en mode observation : il enregistre ce qu’il aurait fait et ne bloque rien. Passez en revue ce qu’il aurait bloqué, ajustez la politique, et appliquez quand vous êtes satisfait. Ajoutez une campagne de red team, des attaques automatisées contre une copie de test de votre assistant, et transformez chaque attaque qui passe en nouveau cas de test.
Les questions à poser à tout fournisseur
- Quels jeux de test publics avez-vous utilisés, et certains faisaient-ils partie de vos données d’entraînement ?
- Comment avez-vous choisi le seuil, et sur quelles données ?
- Quel est le taux de blocage à tort, sur quels messages sains, dans quelles langues ?
- Sur combien de messages repose chaque chiffre, et quel est son intervalle de confiance ?
- Pouvons-nous refaire le test nous-mêmes ?
Guardrino est construit pour répondre publiquement à chacune de ces questions : chaque version est prévue avec un rapport sur des jeux de test publics et sur un jeu à nous tenu à l’écart, avec n, les intervalles et la règle du seuil, pour que chacun puisse le refaire. Guardrino est en développement ; sa page affichera ce rapport dès qu’une vraie version existera, et n’affiche rien d’ici là. Pour une méthode de comparaison plus poussée, voir la leçon Comparer les garde-fous équitablement (en anglais).
À retenir
- Comptez les attaques arrêtées et les messages sains bloqués à tort ; l’un sans l’autre ne veut rien dire.
- Ne testez jamais sur les données d’entraînement, et fixez le seuil avant de regarder le test.
- Utilisez chaque jeu de test public pour ce qu’il mesure, et donnez n et un intervalle de confiance pour chaque taux.
- Testez l’arabe sous toutes les formes qu’écrivent vos clients, puis confirmez sur votre trafic en mode observation.
Vérifiez vos connaissances
1. Un fournisseur n’annonce que le nombre d’attaques arrêtées par son garde-fou. Que manque-t-il ?
- Le logo
- Le nombre de messages sains bloqués à tort — Exact.
- Le nom du modèle
- Rien
Un garde-fou qui bloque tout arrête toutes les attaques ; le taux de blocage à tort en montre le coût.
2. Quand faut-il choisir le seuil ?
- Après avoir vu les résultats du test
- Sur un jeu de validation séparé, avant de lancer le test — Exact.
- Jamais
- C’est l’utilisateur final qui le choisit
Régler le seuil sur le jeu de test gonfle le résultat.
3. Pourquoi tester l’arabe avec un tashkeel correct et avec un tashkeel aléatoire ?
- C’est la même chose
- Le tashkeel correct est un texte normal qui doit passer ; le tashkeel aléatoire est une ruse courante qui doit être arrêtée — Exact.
- Seulement pour allonger le test
- Parce que l’anglais a un tashkeel
Le tashkeel ne doit jamais devenir un signe d’attaque, même si des attaquants s’en servent pour cacher des mots.
4. Un jeu de test ne contient que des attaques. Que peut-il mesurer ?
- Seulement le nombre d’attaques arrêtées — Exact.
- Seulement les messages bloqués à tort
- Les deux
- Aucun des deux
Associez-le à un jeu de messages sains pour mesurer l’autre côté.
Sources
- Röttger et al. (2023), XSTest: A Test Suite for Identifying Exaggerated Safety Behaviours in Large Language Models, arXiv:2308.01263
- GuardBench (AmenRa/guardbench, GitHub)
- Meta PurpleLlama, CyberSecEval (GitHub)
- Binomial proportion confidence interval, Wilson score interval (Wikipedia)
- Miller (2024), Adding Error Bars to Evals, arXiv:2411.00640
Mettez-le en pratique sur votre Mac
Essayez toutes les fonctionnalités gratuitement pendant 17 jours, sans carte bancaire.