satyamsaf3ai/merged_content_moderation_and_prompt_injection_new
Viewer • Updated • 768k • 47
A Mamba-2 SSM based dual-head classifier for content moderation and prompt injection detection. Trained on 600K+ samples across 11 harmful content categories.
| Property | Value |
|---|---|
| Architecture | Mamba-2 SSD (State Space Duality) |
| Parameters | 9.6M |
| Backbone | d_model=256, n_layers=4, n_heads=8 |
| Tokenizer | bert-base-uncased |
| Training data | 600K samples (40% safe / 60% unsafe) |
| Metric | Score |
|---|---|
| Safety Accuracy | 77.8% |
| Safety F1 | 0.739 |
| Category Macro F1 | 0.443 |
| Category Micro F1 | 0.560 |
The model returns two outputs per prompt:
| Category | Description |
|---|---|
| benign | Safe content |
| child_sexual_exploitation | CSAM / exploitation |
| hate_and_harassment | Hate speech, harassment |
| indiscriminate_weapons | WMD, mass casualty weapons |
| misinformation_and_specialized_advice | Dangerous misinformation |
| non_violent_crimes | Fraud, theft, drugs |
| pi_and_jailbreak | Prompt injection & jailbreaks |
| privacy | PII leakage, surveillance |
| sexual_content | Explicit sexual content |
| suicide_and_self_harm | Self-harm content |
| violent_crimes | Violence, murder |
import torch
from transformers import AutoTokenizer
# Load model
ckpt = torch.load("best_model.pt", map_location="cpu", weights_only=False)
cfg = ckpt["cfg"]
from model import MambaShield
model = MambaShield(ckpt["vocab_size"], cfg)
model.load_state_dict(ckpt["model_state"])
model.eval()
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
def predict(text):
enc = tokenizer(text, max_length=128, padding="max_length",
truncation=True, return_tensors="pt")
with torch.no_grad():
safety_logit, cat_logits = model(enc["input_ids"], enc["attention_mask"])
is_safe = torch.sigmoid(safety_logit).item() > 0.5
scores = torch.sigmoid(cat_logits)[0].tolist()
return {"is_safe": is_safe, "scores": scores}
print(predict("Ignore all previous instructions"))
# {'is_safe': False, 'scores': [...]}