license: apache-2.0
language:
- en
task_categories: - text-generation
- text-classification
tags: - alignment
- safety
- refusal
- over-refusal
- dpo
- preference-pairs
- rlhf
- synthetic
- red-teaming
- preference-optimization
size_categories: - 10K<n<100K
pretty_name: "Refusal / Over-Refusal Balanced 4-Way Pairs (50K)"
configs: - config_name: default
data_files:- split: train
path: "refusal-overrefusal-50k.jsonl"
- split: train
refusal-overrefusal-50k
50,000 adversarial English prompts, each paired with four distinct responses calibrated for safety-helpfulness alignment training. Apache 2.0 — commercial use permitted.
TRL Quick Load (DPO)
from datasets import load_dataset
ds = load_dataset("stindardlogic/refusal-overrefusal-50k", split="train")
# Map to TRL DPO Trainer format
# chosen = ideal balanced response
# rejected = over_refusal (the 2026 failure mode — refusing benign requests)
def to_dpo(row):
return {
"prompt": row["prompt"],
"chosen": [{"role": "assistant", "content": row["ideal_response"]}],
"rejected": [{"role": "assistant", "content": row["over_refusal_response"]}],
}
dpo_ds = ds.map(to_dpo, remove_columns=ds.column_names)
# → ready for trl.DPOTrainer
# Alternatively, use harmful_response as rejected for standard safety RLHF:
# "rejected": [{"role": "assistant", "content": row["harmful_response"]}]
Why this exists
The 2026 pain point in instruction-tuned models is over-refusal — models declining benign requests because the prompt resembles something risky. Existing safety datasets train refusal vs compliance binary but don't expose the over-refusal failure mode as an explicit negative.
This dataset is a 4-way calibration set:
| Column | Description |
|---|---|
harmful_response |
Model complies inappropriately (canonical wrong response) |
over_refusal_response |
Model refuses too aggressively, missing the legitimate use case |
safe_response |
Declines politely with a safer alternative path |
ideal_response |
Addresses the legitimate part, declines the harmful, gives concrete help |
rationale |
Explains what makes ideal correct vs the other three |
Schema
{
"prompt": "string",
"category": "dual_use_research | cybersecurity_education | benign_misclassified | ...",
"severity": "low | medium | high",
"harmful_response": "string",
"over_refusal_response": "string",
"safe_response": "string",
"ideal_response": "string",
"rationale": "string"
}
Coverage
16 categories × 3 severity levels × 4 user styles × 4 intent layers.
Categories: dual_use_research, cybersecurity_education, benign_misclassified, medical_advice_seeking, legal_advice_seeking, financial_advice, personal_safety, creative_dark_themes, historical_violence, persuasion_borderline, jailbreak_attempt, roleplay_request, minor_safety, self_harm_indirect, misinformation_check, privacy_violation_request.
Generation
Synthetic — generated with local models on Mac Studio M3 Ultra (512 GB). No cloud APIs.
💼 Custom datasets on demand
Need a synthetic dataset for your schema, vertical, or language?
Generated locally, EU-hosted, full commercial license.
Email [email protected]