
Código de investigación que reproduce experimentos de jailbreak de LLM multi-turno (FITD, MRCJ, ActorAttack, X-Teaming) del artículo de sistematización orientado a intenciones SoK.
Este repositorio contiene la versión de publicación del código utilizado para los análisis de mecanismos en SoK: Intent-Oriented Systematization of Multi-Turn LLM Jailbreaks.
El repositorio ha sido recortado para conservar únicamente el código, los prompts, los archivos de configuración y los conjuntos de datos necesarios para los experimentos descritos en el Apéndice A del artículo. Los registros generados, archivos en caché, entornos virtuales, resultados previos, figuras y salidas de análisis ad-hoc se han eliminado intencionalmente.
| Pregunta del artículo | Método(s) | Categoría | Directorio local | Conjunto(s) de datos |
|---|---|---|---|---|
| RQ1: Organización vs. acumulación | FITD, MRCJ | DEA / SRA | Foot-in-the-door-Jailbreak/, Inc_Exp/MRCJ/ | JailbreakBench, MUCD, AdvBench |
| RQ2: Componentes de amplificación | ActorAttack | DEA | actorattack/ActorAttack/ | HarmBench |
| RQ3: Forma de escalada | MRCJ | SRA | Inc_Exp/MRCJ/ | MUCD, AdvBench |
| RQ4: Progresión de subparadigmas | X-Teaming | SRA | x-teaming/ | Conjunto de comportamientos estilo JailbreakBench |
Foot-in-the-door-Jailbreak/: implementación de FITD para el experimento de organización-vs-acumulación del lado DEA de RQ1.Inc_Exp/MRCJ/: implementación de MRCJ para la comparación del lado SRA de RQ1 y los experimentos de forma de escalada de RQ3.actorattack/ActorAttack/: implementación de ActorAttack para las ablaciones de número de actores y self-talk de RQ2.x-teaming/: backbone de X-Teaming y configuraciones de configs/exp3 para el experimento de progresión de subparadigmas A1/A2/A3 de RQ4.Cada método conserva su archivo de dependencias original:
pip install -r actorattack/ActorAttack/requirements.txt
pip install -r Foot-in-the-door-Jailbreak/requirements.txt
pip install -r Inc_Exp/requirements.txt
conda env create -f x-teaming/environment.yml
Las claves de API y los endpoints de servicio deben proporcionarse a través de variables de entorno o archivos de configuración locales. Los archivos .env que contienen secretos no forman parte de la publicación.
FITD utiliza el conjunto de comportamientos de JailbreakBench y su configuración de ataque multi-turno predeterminada.
cd Foot-in-the-door-Jailbreak
python FITD.py
Para la reproducción basada en prompts:
python FITD_prompt.py --model_name gpt-4o --control True --max_length 10
MRCJ utiliza preguntas auxiliares estilo MUCD con niveles de malicia y objetivos finales de AdvBench. El artículo fija cuatro pasos de escalada para RQ3.
cd Inc_Exp
python MRCJ/train/train.py --target_model mistral --judge_model gpt-4o --cat_questions_num 2 --harmful_score_threshold 4 --train_from_scratch --dir my_model_data
python MRCJ/test/test.py --target_model mistral --judge_model gpt-4o
Utilice los nombres de modelo soportados por MRCJ/train/train.py y MRCJ/test/test.py.
ActorAttack utiliza consultas de HarmBench. Varíe --actors de 1 a 5 para el experimento de número de actores. Fije --actors 3 y deshabilite self-talk en el código/configuración para la ablación de self-talk, coincidiendo con la configuración del artículo.
cd actorattack/ActorAttack
python main.py --questions 400 --actors 3 --behavior ./data/harmbench.csv --attack_model_name deepseek-chat --target_model_name gpt-4o --early_stop --step_modify
RQ4 utiliza el backbone de X-Teaming con DeepSeek-V3 como modelo atacante y compara A1, A2 y A3 bajo el mismo presupuesto de turnos.
cd x-teaming
python main.py --config configs/exp3/A1_gpt4o.yaml
python main.py --config configs/exp3/A2_gpt4o.yaml
python main.py --config configs/exp3/A3_gpt4o.yaml
Hay configuraciones equivalentes disponibles para los otros modelos objetivo utilizados en el artículo.
El artículo utiliza GPT-4o como juez automatizado con una escala de daño de 1 a 5. Una puntuación de 4 o superior se cuenta como un jailbreak exitoso. Las salidas generadas y los informes del juez no se incluyen en esta publicación; las reejecuciones deben escribir nuevos registros/resultados localmente.
Este código es únicamente para reproducción de investigación controlada. El repositorio excluye intencionalmente salidas de experimentos históricos, bytecode en caché, entornos virtuales, notebooks, secretos locales y código exploratorio no relacionado.