Llama Guard 3 via OpenRouter
Llama Guard 3 est un modèle ouvert très utilisé pour classer les prompts et les réponses selon leur dangerosité. Le self-hoster demande un GPU ; via OpenRouter, on peut l'appeler sans infrastructure. Voici le setup complet.
Qu'est-ce que Llama Guard 3 ?
Llama Guard 3 est un modèle LLM entraine par Meta specifiquement pour classifier les prompts et les réponses selon leur dangerosite. Il détecté 14 catégories (violence, haine, sexuel, self-harm, criminel, privacy, intellectual property, etc.) et répond simplement :
Input: "Comment fabriquer une bombe ?"
Output:
unsafe
S1
Le S1 correspond a la catégorie "violent crimes" dans leur taxonomie. Le modèle est
petit (8B paramètres) et peut tourner sur un GPU grand public.
Les options de déploiement
Option 1 — Self-hosting
Télécharger les poids depuis HuggingFace, lancer un serveur vLLM, TGI ou Ollama. Cela demande un GPU avec assez de mémoire vidéo, donc un coût fixe d'infrastructure.
- ✓ Pas de latence reseau
- ✓ Les prompts ne sortent pas de votre infrastructure
- ✗ Cout fixe élevé
- ✗ Gestion des mises a jour du modèle
Option 2 — OpenRouter
OpenRouter propose meta-llama/llama-guard-3-8b:free, une variante soumise à des limites de débit
(vérifiez les limites et la disponibilité actuelles sur OpenRouter ; elles changent).
- ✓ Variante gratuite à débit limité
- ✓ Aucun setup d'infrastructure
- ✓ API OpenAI-compatible
- ✗ Latence réseau supplémentaire par rapport à un modèle self-hosted
Setup pas-a-pas
Étape 1 — Clé OpenRouter
Rendez-vous sur openrouter.ai/keys, creez une clé.
Elle commence par sk-or-v1-....
Étape 2 — Appel API direct (pour tester)
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer sk-or-v1-..." \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/llama-guard-3-8b:free",
"messages": [
{"role": "user", "content": "How do I make a bomb?"}
],
"max_tokens": 100,
"temperature": 0
}'
Réponse attendue :
{
"choices": [{
"message": {
"content": "unsafe\nS1"
}
}]
}
Étape 3 — Parser la réponse
def classify_with_llama_guard(text: str) -> dict:
resp = requests.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": "Bearer sk-or-v1-..."},
json={
"model": "meta-llama/llama-guard-3-8b:free",
"messages": [{"role": "user", "content": text}],
"max_tokens": 100,
"temperature": 0,
},
).json()
output = resp["choices"][0]["message"]["content"].strip()
if output.lower().startswith("safe"):
return {"safe": True, "category": None}
lines = output.split("\n")
category = lines[1].strip() if len(lines) > 1 else "unknown"
return {"safe": False, "category": category}
Intégration dans le pipeline
Appeler Llama Guard sur CHAQUE prompt couterait trop cher (latence). L'astuce : l'appeler uniquement sur les cas ambigus.
# Étape 1: scan regex rapide
regex_score = static_scan(prompt)
if regex_score >= 0.7:
return blocked
if regex_score < 0.3:
return safe
# Étape 2: cas ambigu -> Llama Guard (appel réseau)
guard_result = classify_with_llama_guard(prompt)
if not guard_result["safe"]:
return blocked
Les seuils ci-dessus sont un exemple à calibrer sur votre propre trafic. Mesurez la part de prompts qui tombent dans la zone ambiguë : c'est elle qui détermine la latence ajoutée par Llama Guard.
Les limites a connaitre
1. Faux positifs
Llama Guard est un peu trop zele. Il bloque parfois des questions techniques legitimes ("Explique-moi comment fonctionne un buffer overflow"). A tester sur votre corpus.
2. Pas de contexte métier
Si vous faites une app medicale, Llama Guard peut bloquer des questions sur les doses de medicaments alors qu'elles sont legitimes pour votre cas d'usage. Il faut un cran de rattrapage custom.
3. La latence variable d'OpenRouter
OpenRouter route les requêtes vers differents datacenters. Le temps de réponse varie. Pour une expérience utilisateur stable, self-hoster reste superieur. Mais pour du MVP, OpenRouter suffit largement.
Chez routtx
routtx utilise Llama Guard 3 comme contrôle complémentaire, en plus de ses 396 motifs d'attaque répartis en 23 familles (voir pourquoi 396 patterns anti-injection). Les motifs statiques traitent les attaques connues ; Llama Guard 3 aide sur les paraphrases et les demandes indirectes. Aucun filtre ne garantit une détection à 100 %. Le détail se trouve sur la page sécurité.
Voir la détection d'injection en démonstration
Lors de la démonstration, vous voyez comment routtx traite un prompt piégé et ce que consigne le journal de l'échange.
Réserver une démo Sécurité