
PISmith: Red Teaming basato su Apprendimento per Rinforzo per la Difesa da Prompt Injection
Un framework aperto per il red teaming di prompt injection basato su RL
💻 Codice · 🤗 Modelli · 📜 Paper
PIForge è la codebase condivisa per PISmith e Climbing the Hill. PISmith affronta il problema della ricompensa sparsa nel red teaming di prompt injection, aiutando gli attaccanti RL a esplorare e apprendere da attacchi rari ma riusciti. Basandosi su PISmith, Climbing the Hill utilizza il curriculum learning per affrontare il problema del cold start quando si fa red teaming su target frontier più robusti.
| Componente | Dove | Scopo |
|---|---|---|
| Benchmark | benchmarks/ | PIArena, InjecAgent, AgentDojo, AgentDyn e IPI Arena. |
| Core di training | train.py, core/, configs/ | Trainer RL condiviso e configurazioni dei benchmark. |
| Entry point | scripts/, eval/ | Uno script di training, uno script di curriculum e uno script di valutazione. |
Esegui i comandi dalla root del repository. Il training richiede Python 3.10 e GPU.
git clone https://github.com/albert-y1n/PIForge.git
cd PIForge
conda create -n piforge python=3.10 -y
conda activate piforge
pip install -r requirements.txt
I tre entry point condividono una piccola interfaccia:
bash scripts/train.sh <benchmark> <target> [train_gpus] [train.py overrides...]
bash scripts/train_curriculum.sh [curriculum]
bash scripts/eval.sh <benchmark> <attacker path or HF model ID> <target> [num_samples] [eval.py overrides...]
Usa variabili d'ambiente come ATTACKER_MODEL, TRAIN_SUITES, OUTPUT_DIR, LEARNING_RATE e NUM_TRAIN_EPOCHS per modificare un'esecuzione. DRY_RUN=1 stampa i comandi senza avviare i modelli.
Installa AgentDyn per il subset github di AgentDyn, che è la suite di training predefinita per le ricette AgentDojo/AgentDyn seguenti:
git clone https://github.com/SaFo-Lab/AgentDyn.git
pip install -e AgentDyn --no-deps
export OPENAI_API_KEY="your-openai-api-key"
Addestra con PISmith contro GPT-4o-mini o GPT-5-nano:
bash scripts/train.sh agentdyn gpt4o-mini
bash scripts/train.sh agentdyn gpt5-nano
Addestra verso GPT-5.6-Luna o GPT-5.6-Terra con curriculum RL. Ogni fase parte dal checkpoint dell'attaccante della fase precedente:
bash scripts/train_curriculum.sh nano-luna
bash scripts/train_curriculum.sh nano-luna-terra
Lo stesso entry point per singolo target continua il training da qualsiasi modello attaccante o checkpoint salvato:
ATTACKER_MODEL=checkpoints/agentdyn_curriculum/nano-luna-terra/stage_3_gpt-5.6-terra/checkpoint-XXX \
OUTPUT_DIR=checkpoints/muse_spark \
bash scripts/train.sh agentdyn muse-spark-1.2
Valuta direttamente un modello rilasciato su Hugging Face.
bash scripts/eval.sh agentdyn AlbertYin/agentdojo_attacker_qwen3_4b_5_nano gpt5-nano 10
bash scripts/eval.sh agentdyn AlbertYin/agentdojo_attacker_qwen3_4b_5.6_terra gpt-5.6-terra 10
Per le suite AgentDojo, scegli agentdojo e imposta TRAIN_SUITES o EVAL_SUITES su workspace, banking, travel o slack:
TRAIN_SUITES=workspace bash scripts/train.sh agentdojo gpt4o-mini
EVAL_SUITES=workspace bash scripts/eval.sh agentdojo AlbertYin/agentdojo_attacker_qwen3_4b_4o_mini gpt4o-mini 10
Prepara una volta il target locale Meta-SecAlign con python merge_meta_secalign.py. Poi addestra e valuta con il dataset InjecAgent:
bash scripts/train.sh injecagent secalign
bash scripts/eval.sh injecagent AlbertYin/injecagent_attacker_qwen3_4b_secalign secalign 10
Lo script avvia il target locale sulla GPU 0 e usa le GPU 1,2,3 per il training per impostazione predefinita. Imposta TARGET_GPU, TRAIN_GPUS o TARGET_URL per modificare questa configurazione.
La stessa preparazione di Meta-SecAlign si applica alla difesa secalign. PIArena usa il proprio dataset di benchmark:
bash scripts/train.sh piarena secalign
bash scripts/train.sh piarena none
bash scripts/eval.sh piarena AlbertYin/piarena_attacker_qwen3_4b_secalign secalign 10
Altre difese possono essere selezionate tramite il loro nome di configurazione, come promptguard o piguard. Imposta TARGET_GPU, TRAIN_GPUS o TARGET_URL per usare GPU diverse o un server target esistente.
Rilasciamo i nostri attaccanti addestrati nella collezione Hugging Face di PIForge.
PIForge è rilasciato sotto MIT License.