
[ICLR 2026] - Dépôt officiel de l'article : "RedBench: A Universal Dataset for Comprehensive Red Teaming of Large Language Models"
Un framework complet pour évaluer la sécurité des grands modèles de langage (LLM) grâce à des tests systématiques d'attaque et de refus. RedEval fournit une plateforme unifiée, sécurisée et extensible pour évaluer la robustesse des LLM face aux prompts adverses et aux contenus nuisibles. Il fait partie de l'article "RedBench: A Universal Dataset for Comprehensive Red Teaming of Large Language Models", qui est un jeu de données universel pour le red teaming complet des LLM.
📦 Jeu de données : Le jeu de données RedBench est disponible publiquement sur HuggingFace à l'adresse knoveleng/redbench. Il inclut des prompts de red teaming complets couvrant plusieurs catégories et domaines de sécurité.
# Clone the repository
git clone https://github.com/knoveleng/redeval.git
cd redeval
# Install dependencies
pip install -r requirements.txt
# Copy and configure environment variables
cp .env.template .env
# Edit .env with your API keys
Modifiez le fichier .env avec vos identifiants :
OPENAI_API_KEY=your_openai_api_key_here
HUGGINGFACE_TOKEN=your_huggingface_token_here
# Set up environment
source ./sh/setup_env.sh
# Run with default models, you can edit .env to define models which you wanna run
python -m redeval.cli run-pipeline
# Run complete pipeline with specific models
python -m redeval.cli run-pipeline --models "Qwen/Qwen2.5-7B-Instruct" "gpt-4o-mini"
# Or run individual phases
./sh/generate_attack.sh
./sh/run_attack.sh
./sh/eval_attack.sh
RedEval évalue la sécurité des LLM selon deux approches complémentaires :
Teste la vulnérabilité des LLM face aux prompts adverses à l'aide de diverses techniques de jailbreak :
Évalue la capacité des LLM à refuser de manière appropriée les requêtes nuisibles sur plusieurs jeux de données de sécurité :
Calcule des métriques de sécurité complètes combinant les performances d'attaque et de refus.
redeval/
├── redeval/ # Core Python modules
│ ├── config.py # Environment & configuration management
│ ├── pipeline.py # Centralized pipeline orchestrator
│ ├── cli.py # Unified command-line interface
│ ├── exceptions.py # Custom exception handling
│ ├── generate_attack.py # Attack prompt generation
│ ├── run_attack.py # Attack execution
│ ├── eval_attack.py # Attack evaluation
│ ├── run_refuse.py # Refusal testing
│ ├── eval_refuse.py # Refusal evaluation
│ └── score.py # Metric calculation
├── sh/ # Shell script interfaces
│ ├── setup_env.sh # Environment setup
│ ├── generate_attack.sh # Attack generation script
│ ├── run_attack.sh # Attack execution script
│ ├── eval_attack.sh # Attack evaluation script
│ ├── run_refuse.sh # Refusal testing script
│ ├── eval_refuse.sh # Refusal evaluation script
│ └── score.sh # Scoring script
├── recipes/ # Configuration files
├── logs/ # Evaluation results
└── .env # Environment variables
graph TD
A[Generate Attack Prompts] --> B[Run Attack Tests]
B --> C[Evaluate Attack Results]
D[Run Refuse Tests] --> E[Evaluate Refuse Results]
C --> F[Calculate Final Scores]
E --> F
F --> G[Generate Reports]
Cloner le dépôt
git clone <repository-url>
cd redeval
Installer les dépendances
pip install -r requirements.txt
Configurer l'environnement
cp .env.template .env
# Edit .env with your API credentials
Vérifier l'installation
python -m redeval.cli --help
RedEval utilise des variables d'environnement pour une configuration sécurisée et flexible :
| Variable | Description | Exemple |
|---|---|---|
OPENAI_API_KEY | Clé API OpenAI | sk-proj-... |
HUGGINGFACE_TOKEN | Jeton HuggingFace | hf_... |
| Variable | Description | Défaut |
|---|---|---|
REDEVAL_OPEN_SOURCE_MODELS | Liste des modèles open source | "Qwen/Qwen2.5-7B-Instruct" |
REDEVAL_CLOSED_SOURCE_MODELS | Liste des modèles à source fermée | "gpt-4o-mini" |
Les fichiers de configuration du répertoire recipes/ contrôlent les paramètres d'évaluation :
attack/base-open.yml - Configuration d'attaque des modèles open sourceattack/base-close.yml - Configuration d'attaque des modèles à source ferméeattack/eval.yml - Configuration d'évaluation des attaquesrefuse/base-open.yml - Configuration de refus des modèles open sourcerefuse/base-close.yml - Configuration de refus des modèles à source ferméerefuse/eval.yml - Configuration d'évaluation des refusRedEval fournit une CLI unifiée pour toutes les opérations :
# Run full evaluation pipeline
python -m redeval.cli run-pipeline
# Run with specific models
python -m redeval.cli run-pipeline --models "Qwen/Qwen2.5-7B-Instruct" "gpt-4o-mini"
# Run specific phases only
python -m redeval.cli run-pipeline --phases generate_attack run_attack eval_attack
# Generate attack prompts
python -m redeval.cli generate-attack --config ./recipes/attack/base-close.yml
# Run attack evaluation
python -m redeval.cli run-attack --config ./recipes/attack/base-open.yml --model "Qwen/Qwen2.5-7B-Instruct"
# Evaluate attack results
python -m redeval.cli eval-attack --config ./recipes/attack/eval.yml --log-dir ./logs/attack/HarmBench/direct/model_name
# Run refusal tests
python -m redeval.cli run-refuse --config ./recipes/refuse/base-open.yml --model "Qwen/Qwen2.5-7B-Instruct"
# Evaluate refusal results
python -m redeval.cli eval-refuse --config ./recipes/refuse/eval.yml --log-dir ./logs/refuse/CoCoNot/base/model_name
# Calculate scores
python -m redeval.cli score --log-dir ./logs/attack/HarmBench/direct/model_name --keyword "unsafe"
Pour les utilisateurs qui préfèrent les scripts shell :
# Set up environment (run first)
source ./sh/setup_env.sh
# Run evaluation phases
./sh/generate_attack.sh # Generate attack prompts
./sh/run_attack.sh # Execute attacks
./sh/eval_attack.sh # Evaluate attack results
./sh/run_refuse.sh # Run refusal tests
./sh/eval_refuse.sh # Evaluate refusal results
./sh/score.sh # Calculate final scores
Pour un accès programmatique :
from redeval.pipeline import PipelineOrchestrator, PipelinePhase
from redeval.config import EnvironmentConfig
# Initialize configuration
config = EnvironmentConfig.from_env()
# Create pipeline orchestrator
orchestrator = PipelineOrchestrator(config)
# Run complete pipeline
orchestrator.run_complete_pipeline()
# Run specific phases
orchestrator.run_phase(PipelinePhase.GENERATE_ATTACK)
orchestrator.run_phase(PipelinePhase.RUN_ATTACK)
.env avec validationrun-pipelineExécute le pipeline d'évaluation complet ou des phases spécifiques.
Options :
--models : Liste des modèles à évaluer--phases : Phases spécifiques à exécuter--config-dir : Chemin du répertoire de configuration--log-dir : Répertoire de sortie pour les journauxgenerate-attackGénère des prompts d'attaque adverses.
Options :
--config : Chemin du fichier de configuration--num-samples : Nombre d'échantillons à générer--seed : Graine aléatoire pour la reproductibilitérun-attackExécute l'évaluation des attaques contre les modèles cibles.
Options :
--config : Chemin du fichier de configuration--model : Nom du modèle cible--num-samples : Nombre d'échantillons à traitereval-attackÉvalue les résultats des attaques à l'aide de modèles juge.
Options :
--config : Chemin du fichier de configuration--log-dir : Répertoire contenant les journaux d'attaquerun-refuseExécute les tests de capacité de refus.
Options :
--config : Chemin du fichier de configuration--model : Nom du modèle cible--num-samples : Nombre d'échantillons à tester--split : Division du jeu de données à utilisereval-refuseÉvalue les résultats des tests de refus.
Options :
--config : Chemin du fichier de configuration--log-dir : Répertoire contenant les journaux de refusscoreCalcule les scores de sécurité à partir des résultats d'évaluation.
Options :
--log-dir : Répertoire contenant les journaux d'évaluation--keyword : Mot-clé à rechercher dans les résultatsPipelineOrchestratorGestion centralisée du pipeline.
Méthodes :
run_complete_pipeline() : Exécute le pipeline d'évaluation completrun_phase(phase) : Exécute une phase spécifique du pipelineget_phase_status(phase) : Obtient le statut d'une phase du pipelineEnvironmentConfigGestion de l'environnement et de la configuration.
Méthodes :
from_env() : Charge la configuration depuis les variables d'environnementvalidate() : Valide l'exhaustivité de la configurationsetup_logging() : Configure le système de journalisationFork et clonage
git clone https://github.com/knoveleng/redeval.git
cd redeval
Créer l'environnement de développement
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
Configurer les hooks pre-commit
pip install pre-commit
pre-commit install
Ce projet est sous licence MIT - consultez le fichier LICENSE pour plus de détails.
Si vous trouvez ce projet utile, pensez à le citer dans vos recherches :
@inproceedings{
dang2026redbench,
title={RedBench: A Universal Dataset for Comprehensive Red Teaming of Large Language Models},
author={Quy-Anh Dang and Chris Ngo and Truong-Son Hy},
booktitle={ICLR 2026 Workshop on Principled Design for Trustworthy AI - Interpretability, Robustness, and Safety across Modalities},
year={2026},
url={https://openreview.net/forum?id=7pZXyk0d07}
}
| Variable | Description | Défaut |
|---|
REDEVAL_PROJECT_ROOT | Répertoire racine du projet | Répertoire actuel |
REDEVAL_LOG_DIR | Répertoire des journaux | ./logs |
REDEVAL_RECIPES_DIR | Répertoire de configuration | ./recipes |
REDEVAL_LOG_LEVEL | Niveau de journalisation | INFO |
REDEVAL_NUM_SAMPLES | Nombre d'échantillons d'évaluation | 10 |
REDEVAL_SEED | Graine aléatoire | 0 |