
Échafaudage de recherche d'alignement (style autoresearch) pour les garde-fous des LLM : recherche sur une surface `policy.md` unique
Open source par Santander AI Lab. Une bibliothèque / harnais d'évaluation de recherche sur les garde-fous LLM / IA-sécurité (style autoresearch) : elle explore une surface mutable unique
policy.mdpour minimiser le taux de réussite des attaques (ASR) face à une suite d'évaluation fixe, avec un plancher de réussite bénigne.
Fait partie de Santander AI Open Source — projets IA open source de Banco Santander (santander.com).
autoguardrails est un petit échafaudage de recherche sur l'alignement inspiré du autoresearch de Karpathy.
Au lieu de chercher sur train.py, ce dépôt cherche sur policy.md.
L'idée est la même :
Dans ce dépôt, la métrique principale est le taux de réussite des attaques (ASR, plus bas c'est mieux), avec un plancher de réussite bénigne pour empêcher le système de gagner en refusant tout.
Pour une expérimentation quotidienne, trois fichiers sont les plus importants :
program.md : les instructions appartenant à l'humain pour la bouclepolicy.md : le seul fichier que vous devez modifier entre les exécutionsresults.tsv : le journal d'exécution en ajout seulementTout le reste est du code de harnais fixe ou des données d'évaluation fixes.
policy.mdeval_suite.jsonljudge_prompt.mdautoguardrails/ASR s'améliore et que la réussite bénigne ne baisse pas de plus de 2 points de pourcentageSi vous voulez un modèle mental plus proche du autoresearch original, considérez autoguardrails/ comme la couche d'aide fixe et policy.md comme le seul fichier en cours de recherche.
Exécutez depuis la racine du dépôt.
python -m autoguardrails baseline --reset --repeat 2 --notes "initial baseline"
Modifiez uniquement policy.md.
Évaluez le nouveau candidat.
python -m autoguardrails candidate --repeat 2 --notes "cover jailbreak and obfuscation"
python -m autoguardrails status
cat results.tsv
Si un candidat est rejeté, le harnais restaure automatiquement policy.md à la dernière version acceptée.
Si vous préférez un point d'entrée unique, utilisez run_autoguardrails.sh :
sh run_autoguardrails.sh status
sh run_autoguardrails.sh evaluate
sh run_autoguardrails.sh baseline "initial baseline" 2
sh run_autoguardrails.sh candidate "cover jailbreak and obfuscation" 2
Sous Windows, exécutez le script depuis Git Bash ou un autre shell compatible POSIX.
La configuration par défaut utilise un stub local déterministe pour que le dépôt fonctionne hors ligne. Pour exécuter de vraies expériences, pointez le modèle cible et le modèle juge vers des points de terminaison compatibles OpenAI.
Variables du modèle cible :
AUTOGUARDRAILS_TARGET_PROVIDER=openai_compatibleAUTOGUARDRAILS_TARGET_MODELAUTOGUARDRAILS_TARGET_API_BASEAUTOGUARDRAILS_TARGET_API_KEYVariables du modèle juge :
AUTOGUARDRAILS_JUDGE_PROVIDER=openai_compatibleAUTOGUARDRAILS_JUDGE_MODELAUTOGUARDRAILS_JUDGE_API_BASEAUTOGUARDRAILS_JUDGE_API_KEYExemple :
export AUTOGUARDRAILS_TARGET_PROVIDER=openai_compatible
export AUTOGUARDRAILS_TARGET_MODEL=gpt-4.1-mini
export AUTOGUARDRAILS_TARGET_API_BASE=https://your-endpoint.example/v1
export AUTOGUARDRAILS_TARGET_API_KEY=your-target-key
export AUTOGUARDRAILS_JUDGE_PROVIDER=openai_compatible
export AUTOGUARDRAILS_JUDGE_MODEL=gpt-4.1-mini
export AUTOGUARDRAILS_JUDGE_API_BASE=https://your-endpoint.example/v1
export AUTOGUARDRAILS_JUDGE_API_KEY=your-judge-key
python -m autoguardrails baseline --reset --repeat 2 --notes "real-model baseline"
Utilisez une configuration de juge figée pendant une série d'exécutions. Ne changez pas les invites du juge ni les modèles de juge en cours d'expérience.
Un cycle simple d'émulation hors ligne ressemble à ceci :
policy.md.candidate.Un exemple de modification candidate qui améliore le stub fourni consiste à ajouter une gestion explicite pour :
Cela vous donne une première courbe d'amélioration réaliste sans modifier l'évaluateur.
program.md : instructions et contraintes de l'expériencepolicy.md : politique de garde-fou mutable sous recherchejudge_prompt.md : invite du juge figéeeval_suite.jsonl : cas d'évaluation d'attaques et bénins fixesresults.tsv : journal d'exécutionrun_autoguardrails.sh : script de commodité autour de l'interface en ligne de commandeautoguardrails/ : harnais Python fixetests/ : vérifications de régression et de sécurité pour le harnaisVoir autoguardrails/README.md pour l'architecture du code et tests/README.md pour la stratégie de test.