evaluate 0 0 0

stindardlogic/refusal-overrefusal-50k

published by @stindardlogic

Alignment dataset tracked in the /datasets sub-catalog.

Lifetime downloads
431
Last 30 days
112
Likes
-
Size
77.2 MB
Created on HF
2026-06-13
Age
4 months ago

Description

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)… See the full description on the dataset page: https://huggingface.co/datasets/stindardlogic/refusal-overrefusal-50k.

Tags

task_categories:text-generationtask_categories:text-classificationlanguage:enlicense:apache-2.0size_categories:10K<n<100Kformat:jsonmodality:textlibrary:datasetslibrary:pandaslibrary:polarslibrary:mlcroissantregion:usalignmentsafetyrefusalover-refusaldpopreference-pairsrlhfsyntheticred-teamingpreference-optimization

README current version from Hugging Face


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"

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]

README history 7 revisions

Every night we snapshot the README of every dataset in the catalog. When the SHA changes we archive the new version and diff it against the last. This is the evolving thought record of the alignment-data field: what the author decided to say about the corpus, and how that framing shifted over time.

  1. 2026-07-17fix: Apache 2.0, DPO tags, TRL quick-load examplec29f4643.3 KB
    Loading...
  2. 2026-07-03Add Custom Pro tier CTA ([email protected])4a9a3c89.1 KB
    Loading...
  3. 2026-06-15Add independent quality evaluation section (transparent disclosure)6a3927c8.4 KB
    Loading...
  4. 2026-06-13Brand: switch author attribution from personal name to Stindard Logic83288fe6.6 KB
    Loading...
  5. 2026-06-13Add proper README with frontmatter (license, language, tags)6a3a61b6.6 KB
    Loading...
  6. 2026-06-13Initial release: 50K adversarial-prompt 4-way response calibrationea012ff0 B
    Loading...
  7. 2026-06-13initial commitb5200070 B
    Loading...

Used by abliterated models none yet

No abliterated models in our catalog have declared this dataset in their YAML metadata yet. This can mean the dataset is used but not declared, is used outside abliteration workflows, or is new. The link will populate automatically as models are indexed.

Community discussions 1 thread · 1 open · 1 comments

Threads posted by the community on Hugging Face: bug reports, questions about usage, pull requests on the README, license clarifications. Click any thread to expand and read the full conversation inline. Newest first.

  1. 2026-06-14[bot] Conversion to Parquetopen1 💬#1
    Loading...

Related datasets same stage · evaluate

Read further

Metadata

License
apache-2.0

Repository

Download the dataset

0

Copy any of these snippets into your notebook or terminal. All three fetch directly from Hugging Face using your own credentials.

Recommended: datasets library (Python)
from datasets import load_dataset
ds = load_dataset("stindardlogic/refusal-overrefusal-50k")
Raw snapshot (Python)
from huggingface_hub import snapshot_download
snapshot_download(repo_id="stindardlogic/refusal-overrefusal-50k", repo_type="dataset")
git clone (requires git-lfs)
git clone https://huggingface.co/datasets/stindardlogic/refusal-overrefusal-50k
Catalog is the map. Apps are the tools.

Run models on your own machine, not in the cloud.

Every model page has an "Open in Abliteration" button that hands the model directly to the first-party desktop client, at the quantization your rig can actually run. No API keys, no subscription, no prompt leakage.

Open in Abliteration