satyamsaf3ai/xlm-roberta-guardrails
039
XLM-RoBERTa Content Moderation Guardrails
Multilingual content moderation model fine-tuned on satyamsaf3ai/merged_content_moderation_and_prompt_injection_new. Supports 100 languages. Classifies (prompt, response) pairs into 11 categories and outputs a binary safety flag.
Model Details
Labels
Evaluation Results
Overall
Per-class F1
Architecture
- Encoder: XLM-RoBERTa-large (24 transformer layers, hidden=1024)
- Safety head: Linear(1024 → 512) → GELU → Linear(512 → 1) — binary BCE loss
- Label head: Linear(1024 → 512) → GELU → Linear(512 → 11) — FocalLoss (γ=2, label smoothing=0.05)
- Loss: 0.5 × safetyloss + 0.5 × labelloss
- Class weights: inverse frequency weighting per category
Usage
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("satyamsaf3ai/xlm-roberta-guardrails")
inputs = tokenizer(
"user prompt here", "assistant response here",
return_tensors="pt", truncation=True, max_length=512
)See label_config.json for the full label2id / id2label mapping.
Training Data
Dataset: satyamsaf3ai/merged_content_moderation_and_prompt_injection_new
High-accuracy sampling strategy — USE ALL for small categories, cap large ones:
violent_crimes: 15,000 (capped — 209K available)non_violent_crimes: 15,000 (capped — 243K available)hate_and_harassment: 15,000 (capped — 117K available)child_sexual_exploitation: 16,063 (USE ALL)sexual_content: 28,794 (USE ALL)suicide_and_self_harm: 34,266 (USE ALL, 56% prompt-only)privacy: 20,000 (capped — 41K available)indiscriminate_weapons: 20,266 (USE ALL)misinformation_and_specialized_advice: 23,000 (USE ALL)pi_and_jailbreak: 33,570 (USE ALL, 77% prompt-only)- Benign: 50,000 (matches total unsafe ~220K)
