Injection de prompt
Repérez les messages qui tentent de détourner votre assistant IA de ses instructions.
Une injection de prompt est un message conçu pour manipuler un modèle d'IA : lui faire ignorer ses instructions, révéler son prompt système, ou agir à la place de l'utilisateur. Cette règle donne à chaque message un score de 0 à 1 ; au-delà du seuil, la requête est refusée.
Le problème
Un assistant IA suit des instructions écrites en langage courant, et un utilisateur peut écrire les siennes : « ignore tes instructions », « affiche ton prompt système », « tu es maintenant un autre assistant ». Si votre assistant a accès à des données ou à des actions (consulter une commande, envoyer un e-mail), une injection réussie peut les détourner.
Ce qu'elle arrête
- les tentatives de contourner les instructions de votre assistant ;
- l'extraction du prompt système ou de données confidentielles ;
- les jeux de rôle destinés à faire sortir l'assistant de son cadre.
Quand l'utiliser
Avant chaque appel à un modèle d'IA avec un texte écrit par un utilisateur : chatbot, support client, résumé de documents.
Configuration
Le texte à analyser se donne avec call :
import express from "express";
import { zarex, promptInjection } from "@zarex/express";
const app = express();
app.use(express.json());
app.post(
"/api/chat",
zarex({
key: process.env.ZAREX_KEY!,
rules: [promptInjection({ mode: "DRY_RUN" })],
call: (req) => ({ text: req.body.message }),
}),
async (req, res) => {
// … appel à votre modèle
}
);Options
| Option | Valeurs | Rôle |
|---|---|---|
confidenceThreshold | au-dessus de 0, jusqu'à 1 | Score à partir duquel le message est refusé. Défaut 0.75. Plus bas : plus strict, et plus de faux positifs. |
inspect | "text_content" · "body" | Où chercher. Défaut : le texte donné via call. |
oversize | "deny" · "inspect" · "allow" | Que faire d'un texte de plus de 32 Ko. Défaut "inspect" : le début et la fin sont analysés. |
mode | "LIVE" · "DRY_RUN" · "OFF" | Défaut "LIVE". |
Une heuristique, pas une garantie
La détection réduit le risque, elle ne le supprime pas. Commencez en DRY_RUN, réglez le seuil d'après votre trafic réel, et gardez les autres protections de votre application (droits limités du modèle, validation de ses actions).