Pourquoi les LLM surpassent la modération fondée sur des règles
Sarcasme. Sous-entendus codés. Usage abusif lié au contexte de la marque (« J’adore ce produit, mais je déteste le service client »). Nuances multilingues. Combinaisons image+légende où chaque élément passe seul, mais pas ensemble. La modération fondée sur des règles traite peut-être 60 % des cas de confiance et de sécurité. Les 40 % difficiles sont précisément ceux où les LLM excellent : ils comprennent le contexte, l’intention et l’écart entre les mots littéraux et le sens.
Les pipelines de modération modernes combinent les deux : des règles pour les 60 % simples (regex, listes de blocage d’URL, CSAM identifié par hachage) et un LLM pour les 40 % nécessitant un jugement.
Modération de texte — Claude Haiku 4.5
Haiku est peu coûteux et rapide — idéal pour la modération à haut volume :
import json
from openai import OpenAI
client = OpenAI(api_key="sk-kn-...", base_url="https://api.kunavo.com/v1")
POLICY = """You are a content moderator. Judge the content against these
categories: toxic, spam, harassment, sexual, violence, self_harm, deception,
brand_unsafe. Be conservative — when in doubt, flag for human review."""
# Claude enforces a json_schema response_format; json_object it does not.
VERDICT = {
"type": "object",
"properties": {
"verdict": {"type": "string", "enum": ["allow", "review", "block"]},
"categories": {"type": "array", "items": {"type": "string", "enum": [
"toxic", "spam", "harassment", "sexual", "violence",
"self_harm", "deception", "brand_unsafe"]}},
"confidence": {"type": "number"}, # 0.0-1.0
"rationale": {"type": "string"}, # one sentence
},
"required": ["verdict", "categories", "confidence", "rationale"],
"additionalProperties": False,
}
RESPONSE_FORMAT = {"type": "json_schema",
"json_schema": {"name": "verdict", "schema": VERDICT}}
def moderate_text(text: str) -> dict:
resp = client.chat.completions.create(
model="claude-haiku-4-5", # cheap + fast for high-volume
messages=[
{"role": "system", "content": POLICY},
{"role": "user", "content": text},
],
response_format=RESPONSE_FORMAT,
max_tokens=200,
)
return json.loads(resp.choices[0].message.content)Coût par appel : environ 0,0001–0,0003 $, selon la longueur de l’entrée. Pour 1 M d’événements de modération par mois : environ 100–300 $. Comparaison avec les API de modération commerciales (Perspective à environ 0,0005 $/appel, Hive à environ 0,002 $/appel, Sightengine à 0,003 $/appel) : la modération fondée sur un LLM est comparable ou moins chère, avec une compréhension contextuelle nettement meilleure.
Modération d’images — Claude Haiku 4.5
Pour les images, Claude Haiku 4.5 est le modèle de vision le moins cher du catalogue et il est suffisamment rapide pour être placé dans le parcours de publication :
def moderate_image(image_url: str) -> dict:
resp = client.chat.completions.create(
model="claude-haiku-4-5", # vision + cheap
messages=[
{"role": "system", "content": POLICY},
{"role": "user", "content": [
{"type": "text", "text": "Moderate this image:"},
{"type": "image_url", "image_url": {"url": image_url}},
]},
],
response_format=RESPONSE_FORMAT,
max_tokens=200,
)
return json.loads(resp.choices[0].message.content)Coût par image : environ 0,001–0,003 $. Modération combinée texte+image pour des plateformes sociales comptant 100 000 publications par jour : environ 3 000–9 000 $ par mois.
Le modèle de verdict à trois niveaux
- allow : faible probabilité de violation → publier immédiatement
- review : probabilité moyenne → placer dans la file d’un modérateur humain. La plupart des verdicts LLM se trouvent ici, mais leur examen est peu coûteux
- block : forte probabilité d’une violation grave (CSAM, menaces crédibles, doxxing) → rejeter + journaliser + transmettre
Ne bloquez pas automatiquement sur le seul verdict du LLM, sauf pour une catégorie de tolérance zéro. Les faux positifs vous font perdre des utilisateurs ; laissez les humains décider dans la zone grise.
Comparaison avec les alternatives
| Outil | Coût / 1 M d’appels | Atout |
|---|---|---|
| Perspective API (Google) | Gratuit (limité par le débit) | Évaluation de la toxicité en anglais |
| Hive Moderation | ~$2,000 | Image, vidéo, audio — solide |
| Sightengine | ~$3,000 | Spécialiste de l’image |
| OpenAI Moderation | Gratuit | Texte uniquement, catégories limitées |
| Kunavo + Haiku | environ 100–300 $ pour le texte / environ 1 000 $ pour l’image | Contextuel + multilingue + politique personnalisée |
L’avantage du LLM est la personnalisation de la politique. Hive et Sightengine vous imposent des catégories fixes. Avec Claude, vous rédigez la politique en anglais (ou dans n’importe quelle langue) et il s’adapte. Vous ajoutez une nouvelle catégorie restreinte ? Mettez à jour le prompt système. Aucun réentraînement du modèle.
Aspects de conformité
- DSA (Digital Services Act de l’UE) : impose aux plateformes de publier des rapports de transparence sur la modération. Le champ rationale du JSON ci-dessus est ce que vous journalisez
- CSAM : ne le faites jamais transiter par un LLM. Utilisez l’identification par hachage (NCMEC, IWF) — les LLM ne sont pas l’outil adapté au contenu illégal connu
- Données personnelles dans le contenu modéré : hachez-les ou pseudonymisez-les avant de les envoyer au LLM s’il s’agit de messages privés — consultez le guide de conformité
Pour commencer : inscription gratuite, puis consultez la référence /docs/chat pour savoir ce que response_format applique à chaque famille de modèles.
FAQ
How much does AI content moderation cost per call?
A text moderation call on Claude Haiku 4.5 costs about $0.0002, and an image-plus-text call on the same model about $0.001 — comparable to or cheaper than Hive or Sightengine.
Is an LLM better than a rule-based moderation system?
On clear-cut content both work. The difference shows on the hard 40% — sarcasm, dog whistles, brand-context misuse and multilingual nuance — where LLM moderation is substantially better than rules.
Should an AI moderation system auto-block content?
Only for zero-tolerance categories. The three-tier verdict pattern routes allow to publish, review to a human queue, and block to reject-and-log, which leaves the gray zone with humans.
How do I improve moderation accuracy over time?
Review the human-queue decisions weekly, identify mis-classifications, and update the system prompt. No model retraining is involved.