
Dieses Repository enthält die offizielle Implementierung des Papers „[Safety in Batches? Understanding and Mitigating Safety Failures in Batch Prompting]“
Kihyun Kim, Hee-Seon Kim, Wonjun Lee, Changick Kim
Korea Advanced Institute of Science and Technology (KAIST)
2026.09 Unser Paper wurde bei der AACL-IJCNLP 2026 (Main) angenommen! 🎉2026.08 Das Paper ist auf arXiv verfügbar!2026.08 Der Code wurde veröffentlicht!Batch Prompting ist eine praktische Inferenzstrategie, bei der mehrere Anfragen in einem einzigen Aufruf gebündelt werden. Wir zeigen, dass sich ihr Erfolg hinsichtlich des Nutzens nicht auf die Sicherheit überträgt: Eine schädliche Frage, die isoliert zuverlässig abgelehnt wird, kann eine schädliche Antwort hervorrufen, wenn sie in einen Batch harmloser Fragen eingebettet wird.
Dieses Repository stellt den offiziellen Code bereit, um:
git clone https://github.com/96kihyun/batch_jailbreak.git
cd batch_jailbreak
conda create -n batch python=3.10 -y
conda activate batch
pip install -r requirements.txt
Für die lokale Modellinferenz und für die drei Judge-Modelle ist eine GPU erforderlich. Getestet mit Python 3.10 + PyTorch 2.4 + transformers==5.2.
Hinweis:
src/evaluate/llamaguard4/enthält eine mitgelieferte Kopie vontransformersfür LlamaGuard-4 (Llama4ForConditionalGeneration). Sie wird nur während des Ladens von LlamaGuard zusys.pathhinzugefügt.
Bearbeiten Sie configs/models.yaml mit lokalen HuggingFace-Checkpoint-Pfaden (Generatoren + Judges) und setzen Sie die API-Schlüssel in configs/api.yaml (oder über die Umgebungsvariablen OPENAI_API_KEY / GEMINI_API_KEY / ANTHROPIC_API_KEY / HF_TOKEN).
Erforderliche Daten & Modelle
data/context_dataset/gsm8k.jsonl (jede Zeile enthält einen "question"-Schlüssel)JailbreakBench/JBB-Behaviors, walledai/StrongREJECTPKU-Alignment/beaver-dam-7b, allenai/wildguardStandard: --harmful_dataset JBB, Batch-Größe n = 1..10, 313 Samples. Harmlose Slots werden aus GSM8K (single_math) gefüllt.
python -m src.utils.generate_batch_question_prompt
Ausgaben werden unter data/batch_prompt/single_math/{n}/pos_{k}.jsonl geschrieben.
| Flag | Standard | Beschreibung |
|---|---|---|
--harmful_dataset | JBB | JBB oder StrongREJECT |
--min_n / --max_n | 1 / 10 | inklusiver Bereich der Batch-Größe N |
--num_samples | 313 | Anzahl der schädlichen Prompts |
--seed | 42 | RNG-Seed |
--output_dir | ./data/batch_prompt | Ausgabewurzelverzeichnis |
python scripts/inference/run_inference_batch_prompt.py \
--model_name qwen \
--case single_math --n 9 --pos 2 \
--harmful_dataset JBB
Batch-Sweep über (model, case, batch_size, pos):
bash scripts/inference/run_inference_batch_prompt_eval.sh \
--dataset jbb --gpu_id 0 \
--models phi qwen --cases single_math \
--batch_sizes 12 --pos_values 1 2
python scripts/inference/run_inference_api.py \
--api gpt \
--input_file data/batch_prompt_jbb/single_math/12/pos_2.jsonl \
--model_name gpt --output_subdir batch_prompt_jbb/single_math/12/pos_2 \
--harmful_dataset JBB --extract_pos 2
Ausgaben werden unter result/inference/<model>/... als JSONL mit {prompt, response}-Paaren gespeichert.
Jede Antwort wird von LlamaGuard-4, WildGuard und Beaver-Dam bewertet und dann per Mehrheitsentscheid kombiniert:
python scripts/eval/run_ensemble.py \
--input_file result/inference/qwen/batch_prompt_jbb/single_math/12/qwen_single_math_n12_pos_2_response.jsonl \
--output_dir result/evaluation/batch_prompt_jbb/qwen/single_math/12/pos_2
Sie können die Bewertung auch im selben Durchlauf wie die Inferenz ausführen:
bash scripts/inference/run_inference_batch_prompt_eval.sh \
--dataset jbb --gpu_id 0 \
--models qwen --cases single_math \
--batch_sizes 12 --pos_values 2 \
--conda_env batch
# 1. data
python -m src.utils.generate_batch_question_prompt \
--harmful_dataset JBB --min_n 12 --max_n 12 --num_samples 100
# 2. inference
python scripts/inference/run_inference_batch_prompt.py \
--model_name llama --case single_math --n 12 --pos 2 --harmful_dataset JBB
# 3. evaluation
python scripts/eval/run_ensemble.py \
--input_file result/inference/llama/batch_prompt/llama_single_math_n12_pos_2_response.jsonl
Bitte erwägen Sie, unser Paper zu zitieren, wenn unsere Arbeit Ihre Forschung unterstützt.
@article{kim2026safety,
title={Safety in Batches? Understanding and Mitigating Safety Failures in Batch Prompting},
author={Kim, Kihyun and Kim, HeeSeon and Lee, Wonjun and Kim, Changick},
journal={arXiv preprint arXiv:2608.02681},
year={2026}
}
Bei Fragen zu unserem Paper oder Code senden Sie bitte eine E-Mail an [email protected].