Llama Guard : modération de contenu open source
Llama Guard est un modèle de classification spécialisé dans la détection de contenu dangereux ou inapproprié. Il permet d'ajouter une couche de sécurité à vos applications LLM sans dépendre d'un service propriétaire.
Fonctionnement
Llama Guard analyse une conversation (prompt + réponse) et classifie le contenu selon des catégories de risque prédéfinies :
- Violences et contenus graphiques
- Contenu sexuel
- Activités criminelles
- Armes et substances dangereuses
- Discours haineux
- Auto-mutilation
- Informations personnelles
Architecture d'intégration
Utilisateur → Prompt → [Llama Guard: check input] → LLM → Réponse → [Llama Guard: check output] → UtilisateurLlama Guard s'utilise en amont (filtrer les prompts malveillants) et en aval (filtrer les réponses problématiques).
Implémentation
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "meta-llama/Llama-Guard-3-8B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
def check_safety(conversation):
"""Vérifie si une conversation est safe."""
input_ids = tokenizer.apply_chat_template(
conversation,
return_tensors="pt"
).to(model.device)
output = model.generate(
input_ids=input_ids,
max_new_tokens=100
)
result = tokenizer.decode(output[0], skip_special_tokens=True)
return "safe" in result.lower()
# Utilisation
conversation = [
{"role": "user", "content": "Comment faire un gâteau au chocolat ?"}
]
is_safe = check_safety(conversation) # TrueIntégration avec Ollama
# Télécharger Llama Guard
ollama pull llama-guard3
# Vérifier un message
ollama run llama-guard3 "Analyse ce message: ..."Personnalisation des catégories
Llama Guard est paramétrable. Vous pouvez définir vos propres catégories de risque selon votre domaine :
- Application pour enfants : catégories plus strictes
- Plateforme médicale : autoriser les termes médicaux explicites
- Forum de discussion : catégories adaptées à votre politique de modération
Bonnes pratiques
- Utilisez Llama Guard sur les inputs ET les outputs
- Combinez avec des règles métier (regex, listes de mots)
- Loggez les détections pour améliorer votre pipeline
- Testez régulièrement avec des adversarial prompts
- La latence est faible (~100ms) donc utilisable en temps réel
Limites
- Pas parfait : des faux positifs et négatifs existent
- Biaisé vers l'anglais (moins efficace sur d'autres langues)
- Ne remplace pas une modération humaine pour les cas limites