
[ICLR 2026] - Repository ufficiale del paper: "RedBench: A Universal Dataset for Comprehensive Red Teaming of Large Language Models"
Un framework completo per valutare la sicurezza dei Large Language Model (LLM) attraverso test sistematici di attacco e rifiuto. RedEval fornisce una piattaforma unificata, sicura ed estensibile per valutare la robustezza degli LLM contro prompt avversari e contenuti dannosi. Fa parte dell'articolo "RedBench: A Universal Dataset for Comprehensive Red Teaming of Large Language Models", un dataset universale per il red teaming completo degli LLM.
📦 Dataset: Il dataset RedBench è disponibile pubblicamente su HuggingFace all'indirizzo knoveleng/redbench. Include prompt di red teaming completi in molteplici categorie e domini di sicurezza.
# Clona il repository
git clone https://github.com/knoveleng/redeval.git
cd redeval
# Installa le dipendenze
pip install -r requirements.txt
# Copia e configura le variabili d'ambiente
cp .env.template .env
# Modifica .env con le tue chiavi API
Modifica il file .env con le tue credenziali:
OPENAI_API_KEY=your_openai_api_key_here
HUGGINGFACE_TOKEN=your_huggingface_token_here
# Configura l'ambiente
source ./sh/setup_env.sh
# Esegui con i modelli predefiniti, puoi modificare .env per definire i modelli che vuoi eseguire
python -m redeval.cli run-pipeline
# Esegui la pipeline completa con modelli specifici
python -m redeval.cli run-pipeline --models "Qwen/Qwen2.5-7B-Instruct" "gpt-4o-mini"
# Oppure esegui le singole fasi
./sh/generate_attack.sh
./sh/run_attack.sh
./sh/eval_attack.sh
RedEval valuta la sicurezza degli LLM attraverso due approcci complementari:
Verifica la vulnerabilità degli LLM a prompt avversari utilizzando varie tecniche di jailbreak:
Valuta la capacità degli LLM di rifiutare in modo appropriato richieste dannose attraverso molteplici dataset di sicurezza:
Calcola metriche di sicurezza complete combinando le prestazioni sia di attacco che di rifiuto.
redeval/
├── redeval/ # Moduli Python principali
│ ├── config.py # Gestione ambiente e configurazione
│ ├── pipeline.py # Orchestratore centralizzato della pipeline
│ ├── cli.py # Interfaccia a riga di comando unificata
│ ├── exceptions.py # Gestione personalizzata delle eccezioni
│ ├── generate_attack.py # Generazione dei prompt di attacco
│ ├── run_attack.py # Esecuzione degli attacchi
│ ├── eval_attack.py # Valutazione degli attacchi
│ ├── run_refuse.py # Test di rifiuto
│ ├── eval_refuse.py # Valutazione del rifiuto
│ └── score.py # Calcolo delle metriche
├── sh/ # Interfacce script di shell
│ ├── setup_env.sh # Configurazione dell'ambiente
│ ├── generate_attack.sh # Script di generazione degli attacchi
│ ├── run_attack.sh # Script di esecuzione degli attacchi
│ ├── eval_attack.sh # Script di valutazione degli attacchi
│ ├── run_refuse.sh # Script di test del rifiuto
│ ├── eval_refuse.sh # Script di valutazione del rifiuto
│ └── score.sh # Script di punteggio
├── recipes/ # File di configurazione
├── logs/ # Risultati della valutazione
└── .env # Variabili d'ambiente
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]
Clona il Repository
git clone <repository-url>
cd redeval
Installa le Dipendenze
pip install -r requirements.txt
Configura l'Ambiente
cp .env.template .env
# Modifica .env con le tue credenziali API
Verifica l'Installazione
python -m redeval.cli --help
RedEval utilizza variabili d'ambiente per una configurazione sicura e flessibile:
| Variabile | Descrizione | Esempio |
|---|---|---|
OPENAI_API_KEY | Chiave API OpenAI | sk-proj-... |
HUGGINGFACE_TOKEN | Token HuggingFace | hf_... |
| Variabile | Descrizione | Predefinito |
|---|---|---|
REDEVAL_OPEN_SOURCE_MODELS | Elenco modelli open-source | "Qwen/Qwen2.5-7B-Instruct" |
REDEVAL_CLOSED_SOURCE_MODELS | Elenco modelli closed-source | "gpt-4o-mini" |
I file di configurazione nella directory recipes/ controllano i parametri di valutazione:
attack/base-open.yml - Configurazione attacco per modelli open-sourceattack/base-close.yml - Configurazione attacco per modelli closed-sourceattack/eval.yml - Configurazione valutazione attacchirefuse/base-open.yml - Configurazione rifiuto per modelli open-sourcerefuse/base-close.yml - Configurazione rifiuto per modelli closed-sourcerefuse/eval.yml - Configurazione valutazione del rifiutoRedEval fornisce una CLI unificata per tutte le operazioni:
# Esegui la pipeline di valutazione completa
python -m redeval.cli run-pipeline
# Esegui con modelli specifici
python -m redeval.cli run-pipeline --models "Qwen/Qwen2.5-7B-Instruct" "gpt-4o-mini"
# Esegui solo fasi specifiche
python -m redeval.cli run-pipeline --phases generate_attack run_attack eval_attack
# Genera i prompt di attacco
python -m redeval.cli generate-attack --config ./recipes/attack/base-close.yml
# Esegui la valutazione degli attacchi
python -m redeval.cli run-attack --config ./recipes/attack/base-open.yml --model "Qwen/Qwen2.5-7B-Instruct"
# Valuta i risultati degli attacchi
python -m redeval.cli eval-attack --config ./recipes/attack/eval.yml --log-dir ./logs/attack/HarmBench/direct/model_name
# Esegui i test di rifiuto
python -m redeval.cli run-refuse --config ./recipes/refuse/base-open.yml --model "Qwen/Qwen2.5-7B-Instruct"
# Valuta i risultati dei test di rifiuto
python -m redeval.cli eval-refuse --config ./recipes/refuse/eval.yml --log-dir ./logs/refuse/CoCoNot/base/model_name
# Calcola i punteggi
python -m redeval.cli score --log-dir ./logs/attack/HarmBench/direct/model_name --keyword "unsafe"
Per gli utenti che preferiscono gli script di shell:
# Configura l'ambiente (esegui prima)
source ./sh/setup_env.sh
# Esegui le fasi di valutazione
./sh/generate_attack.sh # Genera i prompt di attacco
./sh/run_attack.sh # Esegue gli attacchi
./sh/eval_attack.sh # Valuta i risultati degli attacchi
./sh/run_refuse.sh # Esegue i test di rifiuto
./sh/eval_refuse.sh # Valuta i risultati del rifiuto
./sh/score.sh # Calcola i punteggi finali
Per l'accesso programmatico:
from redeval.pipeline import PipelineOrchestrator, PipelinePhase
from redeval.config import EnvironmentConfig
# Inizializza la configurazione
config = EnvironmentConfig.from_env()
# Crea l'orchestratore della pipeline
orchestrator = PipelineOrchestrator(config)
# Esegui la pipeline completa
orchestrator.run_complete_pipeline()
# Esegui fasi specifiche
orchestrator.run_phase(PipelinePhase.GENERATE_ATTACK)
orchestrator.run_phase(PipelinePhase.RUN_ATTACK)
.env con validazionerun-pipelineEsegue la pipeline di valutazione completa o fasi specifiche.
Opzioni:
--models: Elenco dei modelli da valutare--phases: Fasi specifiche da eseguire--config-dir: Percorso della directory di configurazione--log-dir: Directory di output per i loggenerate-attackGenera prompt di attacco avversari.
Opzioni:
--config: Percorso del file di configurazione--num-samples: Numero di campioni da generare--seed: Seme casuale per la riproducibilitàrun-attackEsegue la valutazione degli attacchi contro i modelli target.
Opzioni:
--config: Percorso del file di configurazione--model: Nome del modello target--num-samples: Numero di campioni da elaborareeval-attackValuta i risultati degli attacchi utilizzando modelli giudice.
Opzioni:
--config: Percorso del file di configurazione--log-dir: Directory contenente i log degli attacchirun-refuseEsegue i test sulla capacità di rifiuto.
Opzioni:
--config: Percorso del file di configurazione--model: Nome del modello target--num-samples: Numero di campioni da testare--split: Suddivisione del dataset da utilizzareeval-refuseValuta i risultati dei test di rifiuto.
Opzioni:
--config: Percorso del file di configurazione--log-dir: Directory contenente i log dei test di rifiutoscoreCalcola i punteggi di sicurezza dai risultati della valutazione.
Opzioni:
--log-dir: Directory contenente i log di valutazione--keyword: Parola chiave da cercare nei risultatiPipelineOrchestratorGestione centralizzata della pipeline.
Metodi:
run_complete_pipeline(): Esegue la pipeline di valutazione completarun_phase(phase): Esegue una fase specifica della pipelineget_phase_status(phase): Ottiene lo stato di una fase della pipelineEnvironmentConfigGestione dell'ambiente e della configurazione.
Metodi:
from_env(): Carica la configurazione dalle variabili d'ambientevalidate(): Valida la completezza della configurazionesetup_logging(): Configura il sistema di loggingFork e Clone
git clone https://github.com/knoveleng/redeval.git
cd redeval
Crea l'Ambiente di Sviluppo
python -m venv venv
source venv/bin/activate # Su Windows: venv\Scripts\activate
pip install -r requirements.txt
Configura i Pre-commit Hook
pip install pre-commit
pre-commit install
Questo progetto è concesso in licenza sotto la Licenza MIT - consulta il file LICENSE per i dettagli.
Se trovi utile questo progetto, considera di citarlo nella tua ricerca:
@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}
}
| Variabile | Descrizione | Predefinito |
|---|
REDEVAL_PROJECT_ROOT | Directory principale del progetto | Directory corrente |
REDEVAL_LOG_DIR | Directory dei log | ./logs |
REDEVAL_RECIPES_DIR | Directory di configurazione | ./recipes |
REDEVAL_LOG_LEVEL | Livello di logging | INFO |
REDEVAL_NUM_SAMPLES | Numero di campioni di valutazione | 10 |
REDEVAL_SEED | Seme casuale | 0 |