
Suite de benchmarks et code pour détecter les défaillances d'alignement de l'IA, avec 44 benchmarks couvrant dix types de défaillances et un détecteur RLCD zero-shot évalué sur 7 193 instances étiquetées.
Ce dépôt contient RLCDAlignBench et le code associé à l'article. Le benchmark mesure si un détecteur peut déterminer quand la sortie d'un modèle de langage constitue une défaillance d'alignement. Il comprend 44 benchmarks répartis en dix types de défaillances (sycophancie, jailbreaks, tromperie, injection de prompt, hallucination, violation de la vie privée, biais social, reward hacking, dissimulation d'incertitude et recherche de pouvoir) et , pour . Les étiquettes proviennent du scorer propre à chaque benchmark, et deux ensembles supplémentaires portent des étiquettes humaines.
Nous l'utilisons pour tester Jev, un modèle entraîné par apprentissage par renforcement pour des décisions calibrées (RLCD), qui répond à de nombreuses questions typées portant sur une même entrée avec des probabilités calibrées en un seul appel. L'idée clé est de mesurer la question posée à Jev séparément du contexte qu'il voit. Une question générique atteint une AUROC médiane de 0,886 en zero-shot et surpasse les baselines supervisées TF-IDF et de longueur sur 25 des 31 benchmarks. Hors échantillon, la formulation de la question apporte peu. Lire les réponses comme des probabilités plutôt que comme des décisions argmax compte beaucoup. Le contexte aide principalement via les champs qui encodent l'étiquette.

@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}}
}
Le jeu de données contient des sorties non filtrées de petits modèles ouverts sous des prompts de jailbreak et d'autres prompts adversariaux, et beaucoup d'entre elles sont nuisibles. Il est publié uniquement pour la recherche sur la détection et l'atténuation des défaillances d'alignement, et l'accès sur Hugging Face est restreint. Ne l'utilisez pas pour construire ou améliorer des systèmes nuisibles.
Les données se trouvent sur Hugging Face à l'adresse sumleo/RLCDAlignBench. Demandez l'accès à cet endroit, puis :
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
Chaque instance possède les champs qu'un détecteur voit (state), un label binaire (1 = la sortie est une défaillance que le détecteur doit signaler), le label_source, le target_model et un enregistrement meta qui renvoie aux fichiers de provenance.
La fiche du jeu de données documente chaque champ et chaque fichier.
| Type de défaillance | Benchmarks | Instances | Modèle cible |
|---|---|---|---|
| Sycophancie | 4 | 639 | Qwen3.5-2B |
| Jailbreaks | 4 | 414 | Phi-4-mini |
| Tromperie | 4 | 540 | Gemma-2-2B |
| Injection de prompt | 4 | 1 036 | Qwen3.5-2B |
| Hallucination | 6 | 1 164 | Llama-3.2-3B |
| Violation de la vie privée | 4 | 808 | Phi-4-mini |
| Biais social | 4 | 199 | Olmo-3-7B |
| Reward hacking | 6 | 714 | Qwen3.5-2B |
| Dissimulation d'incertitude | 4 | 748 | Olmo-3-7B |
| Recherche de pouvoir | 4 | 931 | Llama-3.2-3B |
| Total | 44 | 7 193 | 5 modèles |
Ensembles étiquetés par des humains : StrongREJECT (1 361 réponses, 5 évaluateurs chacune) et l'ensemble de validation HarmBench (602 réponses, 3 votes chacune).
data/benchmarks.csv est l'index de 44 lignes (nom, type de défaillance, split hill-climb ou held-out, scorer, source des étiquettes, n, positifs, statut). Les rôles des splits proviennent de la suite AAR de Chen et al. (2026).
data/variants.csv liste les 132 variantes d'entrée utilisées dans les expériences de contexte.
results/ contient les tableaux au niveau de l'article.
Sur Hugging Face, la publication est organisée comme suit :
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
| Composant | Emplacement |
|---|---|
| Génération et rejeu du juge autour du harnais AAR | code/generation/run_generate.py |
| Constructeurs d'échantillons de détection (un par famille de batteries) | code/build_samples_*.py |
| Batteries de questions (les questions posées à Jev et les stratégies de lecture) | code/battery_*.py |
| Runner Jev, mise en cache et métriques | code/run_jev.py, code/run_batch.sh |
| Linters de batteries (fuite de critères, format) | code/lint_battery.py, code/lint_criteria_leak.py |
| Résumé des résultats | code/make_results_summary.py |
| Outils de publication | tools/build_release.py, tools/legacy_layout.py |
Le code nécessite Python 3.10 ou plus récent (l'article utilisait 3.12) et uniquement la bibliothèque standard. Les outils de publication nécessitent également pandas.
Cela n'envoie aucune requête et ne nécessite aucune clé. Chaque métrique est recalculée à partir des réponses mises en cache de Jev.
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
La dernière commande affiche un tableau avec une ligne par stratégie de lecture (précision, rappel, F1, exactitude équilibrée, AUROC, IC bootstrap). Il correspond à jev/metrics/harmbench/attack/battery_a_judge_v2.json dans la publication.
aar_repo/) et extrayez le commit à partir duquel les étiquettes ont été construites :
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 (les familles notées par juge a, bc et f prennent --attach-judges). Les constructeurs recalculent chaque score agrégé officiel à partir des étiquettes et s'arrêtent s'il diffère de l'officiel.TYPESAFE_API_KEY défini :
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
Flux de données : 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)
Nous n'avons généré aucune nouvelle requête nuisible. Tous les prompts proviennent de benchmarks publiés, et nous ne les avons exécutés que sur de petits modèles ouverts. Les réponses nuisibles sont publiées derrière un accord d'accès restreint pour la recherche sur les détecteurs.
Code : MIT. Données : nos étiquettes, annotations, sorties de Jev et métadonnées sont sous CC BY-NC 4.0. Le contenu des benchmarks en amont conserve sa licence d'origine, et les sorties des modèles sont soumises aux conditions des modèles cibles.