
Pipeline di ricerca che costruisce esperienze di successo verificate e le organizza in registri di formazione per avvelenare progressivamente le competenze del modello attraverso le fasi HTS, LEGSA e GCTIR.
SkillPoison studia come esperienze di successo verificate possano avvelenare le skill persistenti apprese dagli agenti LLM auto-miglioranti. Combina la Selezione Gerarchica dei Task, l'Attribuzione Locale Basata su Evidenze e il Rinforzo Induttivo Cross-Esperienza per rafforzare comportamenti localmente validi oltre le loro condizioni originali di applicabilità. Le esecuzioni originali dei task e i risultati di verifica rimangono invariati; le evidenze di attribuzione sono allegate come metadati per la formazione nativa delle skill. Su tre benchmark, il paper riporta tassi di successo dell'attacco fino al 95,71%.
skillpoison/
├── assets/
│ └── framework.png
├── configs/
│ └── main.yaml
├── core/
│ ├── ceir/
│ ├── evaluation/
│ ├── hts/
│ ├── lega/
│ ├── utils/
│ ├── config.py
│ └── pipeline.py
├── prompts/
│ ├── lega/
│ ├── counterfactual_audit.txt
│ ├── counterfactual_generation.txt
│ └── target_audit.txt
├── scripts/
│ ├── run_attack_audit.py
│ ├── run_evaluation.py
│ └── run_skillpoison.py
├── .env.example
├── .gitignore
├── LICENSE
├── README.md
└── requirements.txt
| Dataset | Task di Formazione | Task di Valutazione |
|---|---|---|
| HANS | 15 | 100 |
| PAWS | 15 | 210 |
| DS1000 | 15 | 100 |
HANS utilizza un sottoinsieme di valutazione basato su euristica di sottosequenza; PAWS utilizza un pool fisso di valutazione principale. La valutazione DS1000 seleziona 100 task Pandas che restituiscono DataFrame da 191 task idonei, dopo aver escluso gli ID dei task di formazione. Il campionamento è stratificato per tipo di perturbazione con seed 42: Origin 32, Semantic 32, Difficult-Rewrite 27 e Surface 9. Gli ID dei task di formazione e di valutazione non si sovrappongono all'interno di ciascun dataset. Mantenere le istanze di valutazione fisse tra le condizioni confrontate.
La configurazione predefinita utilizza deepseek-v4-flash, temperatura 0.3 e un budget di formazione di 15 record per condizione.
cd skillpoison
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export MODEL_API_KEY="..."
export MODEL_BASE_URL="..."
export MODEL_NAME="..."
python scripts/run_skillpoison.py \
--config configs/main.yaml \
--input candidate_experiences.jsonl \
--out outputs/run
python scripts/run_skillpoison.py \
--config configs/main.yaml \
--input recorded_experiences.json \
--out outputs/replay \
--replay
python scripts/run_evaluation.py \
--attack attack_records.jsonl \
--out outputs/run/metrics.json
python scripts/run_attack_audit.py \
--input attack_records.jsonl \
--out outputs/run/attack_audit.jsonl