
Code de recherche reproduisant les expériences de jailbreak multi-tours sur les LLM (FITD, MRCJ, ActorAttack, X-Teaming) issues de l'article de systématisation SoK orienté intention.
Ce dépôt contient la version publiée du code utilisé pour les analyses de mécanismes dans SoK: Intent-Oriented Systematization of Multi-Turn LLM Jailbreaks.
Le dépôt a été épuré pour ne conserver que le code, les prompts, les fichiers de configuration et les jeux de données nécessaires aux expériences décrites dans l'Annexe A de l'article. Les journaux générés, les fichiers mis en cache, les environnements virtuels, les résultats précédents, les figures et les sorties d'analyse ad hoc ont été intentionnellement supprimés.
| Question de l'article | Méthode(s) | Catégorie | Répertoire local | Jeu(x) de données |
|---|---|---|---|---|
| RQ1 : Organisation vs. accumulation | FITD, MRCJ | DEA / SRA | Foot-in-the-door-Jailbreak/, Inc_Exp/MRCJ/ | JailbreakBench, MUCD, AdvBench |
| RQ2 : Composants d'amplification | ActorAttack | DEA | actorattack/ActorAttack/ | HarmBench |
| RQ3 : Forme de l'escalade | MRCJ | SRA | Inc_Exp/MRCJ/ | MUCD, AdvBench |
| RQ4 : Progression des sous-paradigmes | X-Teaming | SRA | x-teaming/ | Jeu de comportements de style JailbreakBench |
Foot-in-the-door-Jailbreak/ : implémentation FITD pour l'expérience RQ1 côté DEA sur l'organisation vs. accumulation.Inc_Exp/MRCJ/ : implémentation MRCJ pour la comparaison RQ1 côté SRA et les expériences RQ3 sur la forme de l'escalade.actorattack/ActorAttack/ : implémentation ActorAttack pour les ablations RQ2 sur le nombre d'acteurs et l'auto-dialogue.x-teaming/ : squelette X-Teaming et paramètres configs/exp3 pour l'expérience RQ4 sur la progression des sous-paradigmes A1/A2/A3.Chaque méthode conserve son fichier de dépendances d'origine :
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
Les clés API et les points de terminaison de service doivent être fournis via des variables d'environnement ou des fichiers de configuration locaux. Les fichiers .env contenant des secrets ne font pas partie de la publication.
FITD utilise le jeu de comportements JailbreakBench et sa configuration d'attaque multi-tour par défaut.
cd Foot-in-the-door-Jailbreak
python FITD.py
Pour la relecture basée sur les prompts :
python FITD_prompt.py --model_name gpt-4o --control True --max_length 10
MRCJ utilise des questions auxiliaires de style MUCD avec des niveaux de malveillance et des cibles finales AdvBench. L'article fixe quatre étapes d'escalade pour 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
Utilisez les noms de modèles pris en charge par MRCJ/train/train.py et MRCJ/test/test.py.
ActorAttack utilise les requêtes HarmBench. Faites varier --actors de 1 à 5 pour l'expérience sur le nombre d'acteurs. Fixez --actors 3 et désactivez l'auto-dialogue dans le code/la configuration pour l'ablation de l'auto-dialogue, conformément à la configuration de l'article.
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 utilise le squelette X-Teaming avec DeepSeek-V3 comme modèle attaquant et compare A1, A2 et A3 sous le même budget de tours.
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
Des configurations équivalentes sont disponibles pour les autres modèles cibles utilisés dans l'article.
L'article utilise GPT-4o comme juge automatisé avec une échelle de nocivité de 1 à 5. Un score de 4 ou plus est compté comme un jailbreak réussi. Les sorties générées et les rapports du juge ne sont pas inclus dans cette publication ; les réexécutions doivent écrire de nouveaux journaux/résultats localement.
Ce code est destiné uniquement à la reproduction contrôlée de la recherche. Le dépôt exclut intentionnellement les sorties d'expériences historiques, le bytecode mis en cache, les environnements virtuels, les notebooks, les secrets locaux et le code exploratoire non lié.