
PISmith: प्रॉम्प्ट इंजेक्शन डिफेंस के लिए रीइन्फोर्समेंट लर्निंग-आधारित रेड टीमिंग
यह PISmith: प्रॉम्प्ट इंजेक्शन रक्षाओं के लिए सुदृढीकरण लर्निंग-आधारित रेड टीमिंग का आधिकारिक कार्यान्वयन है।
PISmith का परीक्षण Python 3.10 और CUDA Version: 12.9 के साथ किया गया है।
1. Python 3.10 conda वातावरण बनाएँ
conda create -n PISmith python=3.10 -y
conda activate PISmith
2. निर्भरताएँ इंस्टॉल करें
pip install -r requirements.txt
3. (वैकल्पिक) Meta-SecAlign मॉडल चेकपॉइंट तैयार करें
secalign रक्षा को लक्षित करने वाले प्रयोगों के लिए, दी गई मर्ज स्क्रिप्ट चलाकर बेस मॉडल को SecAlign एडेप्टर के साथ डाउनलोड और मर्ज करें:
python merge_meta_secalign.py
यह HuggingFace से और डाउनलोड करता है, उन्हें मर्ज करता है, और परिणाम को में सहेजता है।
meta-llama/Llama-3.1-8B-Instructfacebook/Meta-SecAlign-8Bcheckpoints/Meta-SecAlign-8B-merged/PIArena विभिन्न प्रॉम्प्ट इंजेक्शन रक्षाओं के विरुद्ध प्रशिक्षण और मूल्यांकन का समर्थन करता है। लक्षित रक्षा का चयन करने के लिए defense तर्क का उपयोग करें।
समर्थित रक्षाएँ:
secalign, none, promptguard, promptarmor, sandwich, instructional, datasentinel, piguard, datafilter
bash scripts/train_piarena.sh <defense> [train_gpus] [target_gpu] [target_port]
| तर्क | डिफ़ॉल्ट | विवरण |
|---|---|---|
defense | secalign | प्रशिक्षण के लिए लक्षित रक्षा |
train_gpus | "1,2,3" | RL प्रशिक्षण के लिए GPU इंडेक्स |
target_gpu | 0 | लक्षित vLLM सर्वर के लिए GPU |
target_port | 8010 | लक्षित vLLM सर्वर के लिए पोर्ट |
उदाहरण:
# Train against SecAlign defense
bash scripts/train_piarena.sh secalign
# Train against no defense (plain LLM)
bash scripts/train_piarena.sh none
bash scripts/eval_piarena.sh <checkpoint> <defense> [target_port] [target_gpu] [attacker_gpu] [attacker_port] [num_samples]
| तर्क | डिफ़ॉल्ट | विवरण |
|---|---|---|
checkpoint | — | प्रशिक्षित हमलावर चेकपॉइंट का पथ |
defense | secalign | जिस रक्षा के विरुद्ध मूल्यांकन करना है |
target_port | 8000 | लक्षित vLLM सर्वर के लिए पोर्ट |
target_gpu | 0 | लक्षित vLLM सर्वर के लिए GPU |
attacker_gpu | 1 | हमलावर vLLM सर्वर के लिए GPU |
attacker_port | 8001 | हमलावर vLLM सर्वर के लिए पोर्ट |
num_samples | 10 | Pass@k: प्रति परीक्षण मामले में नमूनों की संख्या |
उदाहरण:
# Evaluate against SecAlign (default settings)
bash scripts/eval_piarena.sh checkpoints/piarena/checkpoint-500 secalign
# Evaluate against no piguard, pass@10
bash scripts/eval_piarena.sh checkpoints/piarena_none/checkpoint-500 piguard
GPT-4o-mini, GPT-4o, GPT-5-nano और स्थानीय vLLM लक्ष्यों का समर्थन करता है।
bash scripts/train_agentdojo.sh [target_type] [suites] [train_gpus]
# Default: GPT-4o-mini target on the firsr 7 injected task of workspace suite
bash scripts/train_agentdojo.sh
# Train on all suites (workspace, banking, travel, slack)
bash scripts/train_agentdojo.sh gpt4o-mini all
मूल्यांकन:
bash scripts/eval_agentdojo.sh <checkpoint> [target_type] [eval_suites] [num_samples] [target_defense]
# Example
bash scripts/eval_agentdojo.sh checkpoints/agentdojo/checkpoint-500 gpt4o-mini
AgentDyn, AgentDojo के ऊपर बनाया गया है। AgentDyn प्रयोग चलाने से पहले इसे अलग से इंस्टॉल करें:
git clone https://github.com/SaFo-Lab/AgentDyn.git
cd AgentDyn
pip install -e . --no-deps
प्रशिक्षण github, dailylife और shopping जैसे AgentDyn सुइट्स का समर्थन करता है।
bash scripts/train_agentdyn.sh [target_type] [suites] [train_gpus]
# Example
bash scripts/train_agentdyn.sh gpt5-nano github "0,1,2,3"
मूल्यांकन pass@k और सैंपल-स्तरीय औसत ASR दोनों को रिपोर्ट करता है, और डेटा-समानांतर हमलावर vLLM सर्विसिंग का समर्थन करता है:
ATTACKER_GPUS=0,1,2,3 ATTACKER_DP_SIZE=4 \
bash scripts/eval_agentdyn.sh checkpoints/agentdyn/checkpoint-500 gpt5-nano "github,dailylife,shopping" 5
स्थानीय vLLM लक्ष्य, GPT-4o-mini, या मल्टी-टार्गेट मोड का समर्थन करता है।
bash scripts/train_injecagent.sh [target_type] [train_gpus] [target_gpu] [target_port]
# Default: local vLLM target (Meta-SecAlign-8B)
bash scripts/train_injecagent.sh
# GPT-4o-mini API target
bash scripts/train_injecagent.sh gpt4o-mini
मूल्यांकन:
bash scripts/eval_injecagent.sh <checkpoint> [target_type] [target_gpu] [target_port] [eval_gpu] [num_samples]
# Example
bash scripts/eval_injecagent.sh checkpoints/injecagent/checkpoint-500
PISmith का मूल्यांकन स्टैटिक, सर्च-आधारित और RL-आधारित हमले श्रेणियों को शामिल करते हुए 7 बेसलाइनों के विरुद्ध किया जाता है। सभी RL-आधारित विधियाँ ASR@10 / ASR@1 रिपोर्ट करती हैं; स्टैटिक और सर्च-आधारित विधियाँ ASR@1 रिपोर्ट करती हैं।
| विधि | श्रेणी | औसत ASR@10 | औसत ASR@1 |
|---|---|---|---|
| Direct | स्टैटिक | — | 0.04 |
| Combined | स्टैटिक | — | 0.07 |
| TAP | सर्च-आधारित | — | 0.11 |
| PAIR | सर्च-आधारित | — | 0.16 |
| Strategy | सर्च-आधारित | — | 0.21 |
| Vanilla GRPO | RL-आधारित | 0.13 | 0.05 |
| RL-Hammer | RL-आधारित | 0.70 | 0.48 |
| PISmith (हमारा) | RL-आधारित | 1.00 | 0.87 |
PISmith ASR@1 का 13 बेंचमार्क्स पर औसत। उपयोगिता बिना किसी हमले के कार्य सटीकता को मापती है।
| रक्षा | प्रकार | उपयोगिता | PISmith ASR@1 |
|---|---|---|---|
| कोई रक्षा नहीं | — | 0.74 | 0.92 |
| Sandwich | रोकथाम | 0.74 | 0.91 |
| Instructional | रोकथाम | 0.73 | 0.92 |
| PromptArmor | रोकथाम | 0.74 | 0.92 |
| DataFilter | रोकथाम | 0.63 | 0.49 |
| PIGuard | फ़िल्टर | 0.72 | 0.82 |
| PromptGuard | फ़िल्टर | 0.66 | 0.89 |
| DataSentinel | फ़िल्टर | 0.55 | 0.52 |
अत्याधुनिक रक्षाओं के लिए एक साथ उच्च उपयोगिता (≥0.70) और कम ASR (≤0.60) प्राप्त करना चुनौतीपूर्ण बना हुआ है, जो एक मौलिक उपयोगिता–मजबूती ट्रेड-ऑफ को उजागर करता है।
| लक्षित मॉडल | Direct ASR@1 | PISmith ASR@10/1 |
|---|---|---|
| Meta-SecAlign-8B | 0.00 | 1.00 / 0.99 |
| GPT-4o-mini | 0.02 | 1.00 / 0.99 |
| GPT-4.1-nano | 0.01 | 1.00 / 1.00 |
| GPT-5-nano | 0.00 | 1.00 / 0.95 |
| लक्षित मॉडल | सर्वश्रेष्ठ स्टैटिक ASR@1 | PISmith ASR@10/1 |
|---|---|---|
| GPT-4o-mini | 0.23 | 0.78 / 0.62 |
| GPT-4.1-nano | 0.20 | 0.81 / 0.64 |
| GPT-5-nano | 0.01 | 0.38 / 0.24 |