
É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.
ruff, black, mypy, pytest, pytest-cov (voir CONTRIBUTING.md).AUTOGUARDRAILS_* décrites ci-dessus).Les contributions sont les bienvenues ! Veuillez lire nos Directives de contribution et notre Code de conduite avant de commencer.
ruff check ., black --check ., mypy autoguardrails et pytest avant d'ouvrir une PR.policy.md est la seule surface mutable ; eval_suite.jsonl et judge_prompt.md sont figés.Veuillez signaler les vulnérabilités de sécurité de manière responsable. Consultez notre Politique de sécurité pour savoir comment signaler (n'ouvrez pas un problème public pour les vulnérabilités). Contact : [email protected] ou utilisez les avis de sécurité GitHub.
Ce logiciel est un projet open source du Santander AI Lab, fourni « en l'état » sous sa licence, sans garanties ni conditions d'aucune sorte. Il ne s'agit pas d'un produit ou service officiel de Banco Santander, il n'implique aucun engagement de support de production et ne constitue pas un conseil financier, juridique ou professionnel.
« Santander » et son logo sont des marques déposées de Banco Santander, S.A. La licence du projet n'accorde aucun droit de les utiliser au-delà d'une attribution factuelle.
Si vous pensez avoir trouvé une vulnérabilité de sécurité, suivez notre politique de sécurité — n'ouvrez pas un problème public. Vous êtes responsable de l'évaluation de l'adéquation de ce logiciel à votre cas d'utilisation et de la mise à jour de vos propres déploiements.
Ce projet est sous licence Apache License 2.0 — voir les fichiers LICENSE et NOTICE pour les détails.
Copyright (c) 2026 Santander Group
SPDX-License-Identifier: Apache-2.0
Si vous utilisez autoguardrails dans vos recherches, veuillez le citer :
@software{autoguardrails2026,
author = {{Santander AI Lab}},
title = {autoguardrails: an autoresearch-style guardrail policy loop},
year = {2026},
url = {https://github.com/SantanderAI/autoguardrails},
license = {Apache-2.0}
}