
इस रिपॉज़िटरी में पेपर "[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 हमारा पेपर AACL-IJCNLP 2026 (Main) में स्वीकृत हो गया है! 🎉2026.08 पेपर arXiv पर उपलब्ध है!2026.08 कोड जारी कर दिया गया है!बैच प्रॉम्प्टिंग एक व्यावहारिक इन्फरेंस रणनीति है जो कई क्वेरीज़ को एक ही कॉल में पैक करती है। हम दिखाते हैं कि उपयोगिता के लिए इसकी सफलता सुरक्षा तक नहीं बढ़ती: एक हानिकारक प्रश्न जिसे अकेले में विश्वसनीय रूप से अस्वीकार किया जाता है, वह बेनाइन प्रश्नों के बैच में एम्बेड किए जाने पर हानिकारक प्रतिक्रिया उत्पन्न कर सकता है।
यह रिपॉज़िटरी निम्नलिखित के लिए आधिकारिक कोड प्रदान करती है:
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
लोकल मॉडल इन्फरेंस और तीन जज मॉडल के लिए GPU आवश्यक है। Python 3.10 + PyTorch 2.4 + transformers==5.2 के साथ परीक्षण किया गया।
नोट:
src/evaluate/llamaguard4/में LlamaGuard-4 (Llama4ForConditionalGeneration) के लिएtransformersकी एक वेंडर की गई प्रति शामिल है। इसेsys.pathमें केवल तब जोड़ा जाता है जब LlamaGuard लोड हो रहा हो।
configs/models.yaml को लोकल HuggingFace चेकपॉइंट पथों (जनरेटर + जज) के साथ संपादित करें, और configs/api.yaml में API कुंजियाँ सेट करें (या env वेरिएबल्स OPENAI_API_KEY / GEMINI_API_KEY / ANTHROPIC_API_KEY / HF_TOKEN के माध्यम से)।
आवश्यक डेटा और मॉडल
data/context_dataset/gsm8k.jsonl (प्रत्येक पंक्ति में एक "question" कुंजी होती है)JailbreakBench/JBB-Behaviors, walledai/StrongREJECTPKU-Alignment/beaver-dam-7b, allenai/wildguardडिफ़ॉल्ट: --harmful_dataset JBB, बैच आकार n = 1..10, 313 नमूने। बेनाइन स्लॉट GSM8K (single_math) से भरे जाते हैं।
python -m src.utils.generate_batch_question_prompt
आउटपुट data/batch_prompt/single_math/{n}/pos_{k}.jsonl के अंतर्गत लिखे जाते हैं।
python scripts/inference/run_inference_batch_prompt.py \
--model_name qwen \
--case single_math --n 9 --pos 2 \
--harmful_dataset JBB
(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
आउटपुट result/inference/<model>/... के अंतर्गत {prompt, response} जोड़ों के साथ JSONL के रूप में सहेजे जाते हैं।
प्रत्येक प्रतिक्रिया को LlamaGuard-4, WildGuard, और Beaver-Dam द्वारा स्कोर किया जाता है, फिर बहुमत मत द्वारा संयोजित किया जाता है:
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
आप इन्फरेंस के समान लूप में मूल्यांकन भी चला सकते हैं:
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
यदि हमारा कार्य आपके शोध में सहायक हो, तो कृपया हमारे पेपर का उद्धरण देने पर विचार करें।
@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}
}
हमारे पेपर या कोड के बारे में किसी भी प्रश्न के लिए, कृपया [email protected] पर ईमेल करें।
| Flag | Default | Description |
|---|
--harmful_dataset | JBB | JBB या StrongREJECT |
--min_n / --max_n | 1 / 10 | बैच आकार N की समावेशी सीमा |
--num_samples | 313 | हानिकारक प्रॉम्प्ट की संख्या |
--seed | 42 | RNG सीड |
--output_dir | ./data/batch_prompt | आउटपुट रूट |