
Benchmark-Suite und Code zur Erkennung von KI-Alignment-Fehlern, mit 44 Benchmarks über zehn Fehlertypen und einem Zero-Shot-RLCD-Detektor, der auf 7.193 gelabelten Instanzen evaluiert wurde.
Dieses Repository enthält RLCDAlignBench und den Code hinter dem Paper. Der Benchmark misst, ob ein Detektor erkennen kann, wann die Ausgabe eines Sprachmodells ein Alignment-Fehler ist. Er umfasst 44 Benchmarks über zehn Fehlertypen (Sycophancy, Jailbreaks, Täuschung, Prompt-Injection, Halluzination, Verletzung der Privatsphäre, sozialer Bias, Reward Hacking, Verschleierung von Unsicherheit und Machtstreben) und fünf Zielmodelle, für 7.193 gelabelte Detektionsinstanzen. Die Labels stammen aus dem jeweiligen Scorer des Benchmarks, und zwei zusätzliche Sets tragen menschliche Labels.
Wir verwenden ihn, um Jev zu testen, ein Modell, das mit Reinforcement Learning für kalibrierte Entscheidungen (RLCD) trainiert wurde und viele typisierte Fragen zu einer Eingabe mit kalibrierten Wahrscheinlichkeiten in einem einzigen Aufruf beantwortet. Die Kernidee ist, die Frage, die Jev gestellt wird, getrennt vom Kontext zu messen, den es sieht. Eine generische Frage erreicht einen medianen AUROC von 0,886 zero-shot und schlägt überwachte TF-IDF- und Längen-Baselines auf 25 von 31 Benchmarks. Out of sample bringt die Formulierung der Frage wenig. Antworten als Wahrscheinlichkeiten statt als Argmax-Entscheidungen zu lesen, ist dagegen sehr wichtig. Kontext hilft vor allem über Felder, die das Label kodieren.

@misc{rlcdalignbench2026,
title = {Just Ask Jev: Reinforcement Learning for Calibrated Decisions as a Zero-Shot Detector of AI Alignment Failures},
author = {Ruoqi Guo and Yi Liu and Gelei Deng and Yuekang Li and Lida Zhao and Simin Chen and Ying Zhang and Leo Yu Zhang},
year = {2026},
howpublished = {\url{https://github.com/sumleo/RLCDAlignBench}}
}
Der Datensatz enthält ungefilterte Ausgaben kleiner offener Modelle unter Jailbreak- und anderen adversarialen Prompts, und viele davon sind schädlich. Er wird ausschließlich für die Forschung zur Erkennung und Abschwächung von Alignment-Fehlern veröffentlicht, und der Zugriff auf Hugging Face ist gated. Verwende ihn nicht, um schädliche Systeme zu bauen oder zu verbessern.
Die Daten liegen auf Hugging Face unter sumleo/RLCDAlignBench. Beantrage dort den Zugriff und führe dann aus:
from datasets import load_dataset
ds = load_dataset("sumleo/RLCDAlignBench", "harmbench", split="test") # one benchmark
all_ = load_dataset("sumleo/RLCDAlignBench", "all", split="test") # all 7,193 instances
Jede Instanz hat die Felder, die ein Detektor sieht (state), ein binäres label (1 = die Ausgabe ist ein Fehler, den der Detektor markieren muss), die label_source, das target_model und einen meta-Datensatz, der zurück zu den Herkunftsdateien verlinkt.
Die Datensatz-Karte dokumentiert jedes Feld und jede Datei.
| Fehlertyp | Benchmarks | Instanzen | Zielmodell |
|---|---|---|---|
| Sycophancy | 4 | 639 | Qwen3.5-2B |
| Jailbreaks | 4 | 414 | Phi-4-mini |
| Täuschung | 4 | 540 | Gemma-2-2B |
| Prompt-Injection | 4 | 1.036 | Qwen3.5-2B |
| Halluzination | 6 | 1.164 | Llama-3.2-3B |
| Verletzung der Privatsphäre | 4 | 808 | Phi-4-mini |
| Sozialer Bias | 4 | 199 | Olmo-3-7B |
| Reward Hacking | 6 | 714 | Qwen3.5-2B |
| Verschleierung von Unsicherheit | 4 | 748 | Olmo-3-7B |
| Machtstreben | 4 | 931 | Llama-3.2-3B |
| Gesamt | 44 | 7.193 | 5 Modelle |
Menschlich gelabelte Sets: StrongREJECT (1.361 Antworten, je 5 Bewerter) und das HarmBench-Validierungsset (602 Antworten, je 3 Stimmen).
data/benchmarks.csv ist der 44-zeilige Index (Name, Fehlertyp, Hill-Climb- oder Held-out-Split, Scorer, Label-Quelle, n, Positive, Status). Die Split-Rollen stammen aus der AAR-Suite von Chen et al. (2026).
data/variants.csv listet alle 132 Eingabevarianten auf, die in den Kontextexperimenten verwendet wurden.
results/ enthält die Tabellen auf Paper-Ebene.
Auf Hugging Face ist das Release wie folgt organisiert:
data/benchmarks/<failure_type>/<benchmark>.jsonl canonical instances (the paper's n)
data/human/<set>.jsonl human-labelled sets
data/variants/<benchmark>/<variant>.jsonl every input view: ablation, official track, oracle, exclusion, ...
jev/responses/<benchmark>/<variant>/<battery>.jsonl Jev's per-question probabilities for every instance
jev/metrics/<benchmark>/<variant>/<battery>.json per-strategy precision, recall, F1, AUROC
provenance/ target-model generations, reference-scorer calls, official scores, logs
| Komponente | Ort |
|---|---|
| Generierung und Judge-Replay rund um das AAR-Harness | code/generation/run_generate.py |
| Builder für Detektionssamples (einer pro Battery-Familie) | code/build_samples_*.py |
| Frage-Batterien (die an Jev gestellten Fragen und die Readout-Strategien) | code/battery_*.py |
| Jev-Runner, Caching und Metriken | code/run_jev.py, code/run_batch.sh |
| Battery-Linter (Kriterien-Leakage, Format) | code/lint_battery.py, code/lint_criteria_leak.py |
| Ergebniszusammenfassung | code/make_results_summary.py |
| Release-Tools | tools/build_release.py, tools/legacy_layout.py |
Der Code benötigt Python 3.10 oder neuer (das Paper verwendete 3.12) und nur die Standardbibliothek. Die Release-Tools benötigen zusätzlich pandas.
Dies sendet keine Anfragen und benötigt keine Keys. Jede Metrik wird aus Jevs gecachten Antworten neu berechnet.
pip install -U "huggingface_hub[cli]" pandas
huggingface-cli login # after your access request is approved
huggingface-cli download sumleo/RLCDAlignBench --repo-type dataset --local-dir hf
python tools/legacy_layout.py --release hf --out work # rebuilds the layout the scripts expect, checks sha256
python work/code/restore_layout.py
python work/code/run_jev.py --leg harmbench --battery battery_a_judge \
--samples work/code/samples/harmbench__microsoft__Phi-4-mini-instruct__attack.jsonl --rescore
Der letzte Befehl gibt eine Tabelle mit einer Zeile pro Readout-Strategie aus (Precision, Recall, F1, Balanced Accuracy, AUROC, Bootstrap-CI). Sie stimmt mit jev/metrics/harmbench/attack/battery_a_judge_v2.json im Release überein.
aar_repo/) und checke den Commit aus, aus dem die Labels erstellt wurden:
git clone https://github.com/YuehHanChen/automated_alignment_researcher aar_repo
git -C aar_repo checkout 02dbe9d2cadc553720d17cdf6259c0b8727e6cde
aar_repo/REPRODUCE.md):
python code/generation/run_generate.py --axis refusal --repo aar_repo # phase 1, judges stubbed
python code/generation/run_generate.py --axis refusal --repo aar_repo --replay # phase 2, real judges
code/build_samples_*.py (die judge-bewerteten Familien a, bc und f nehmen --attach-judges). Die Builder berechnen jeden offiziellen aggregierten Score aus den Labels neu und brechen ab, wenn er vom offiziellen abweicht.TYPESAFE_API_KEY ab:
python code/run_jev.py --leg harmbench --battery battery_a_judge --samples <file> --limit 20 # pilot
python code/run_jev.py --leg harmbench --battery battery_a_judge --samples <file> # full
Datenfluss: calls.jsonl → run_generate.py --replay → judge_calls.jsonl → build_samples_*.py → detection samples → run_jev.py → responses + metrics.
RLCDAlignBench/
├── paper.pdf
├── code/ experiment code (generation, sample builders, batteries, Jev runner)
├── data/
│ ├── benchmarks.csv 44-row benchmark index
│ └── variants.csv 132 input variants
├── results/ paper-level tables (main results, baselines, human agreement, cost, corrected labels)
├── figs/ paper figures
├── tools/ release build and legacy-layout tools
└── docs/ project page (GitHub Pages)
Wir haben keine neuen schädlichen Anfragen generiert. Alle Prompts stammen aus veröffentlichten Benchmarks, und wir haben sie nur auf kleinen offenen Modellen ausgeführt. Schädliche Antworten werden hinter einer gated Zugriffsvereinbarung für die Detektorforschung veröffentlicht.
Code: MIT. Daten: unsere Labels, Annotationen, Jev-Ausgaben und Metadaten stehen unter CC BY-NC 4.0. Upstream-Benchmark-Inhalte behalten ihre ursprüngliche Lizenz, und Modellausgaben unterliegen den Bedingungen der Zielmodelle.