
Scaffold di ricerca sull'allineamento (in stile autoresearch) per i guardrail degli LLM: ricerca su un'unica superficie policy.md
Open source di Santander AI Lab. Una libreria di ricerca / harness di valutazione per i guardrail LLM / AI-safety (in stile autoresearch): cerca su un'unica superficie mutabile
policy.mdper minimizzare il tasso di successo degli attacchi (ASR) rispetto a una suite di valutazione fissa, con una soglia minima di superamento dei casi benigni.
Parte di Santander AI Open Source — progetti AI open source di Banco Santander (santander.com).
autoguardrails è un piccolo scaffold di ricerca sull'allineamento ispirato ad autoresearch di Karpathy.
Invece di cercare su train.py, questo repo cerca su policy.md.
L'idea è la stessa:
In questo repo, la metrica principale è il tasso di successo degli attacchi (ASR, più basso è meglio), con una soglia minima di superamento dei casi benigni, così il sistema non può vincere rifiutando tutto.
Per la sperimentazione quotidiana, tre file contano più di tutti:
program.md: le istruzioni del ciclo di proprietà umanapolicy.md: l'unico file che dovresti modificare tra un'esecuzione e l'altraresults.tsv: il registro delle esecuzioni in sola appendTutto il resto è codice fisso dell'harness o dati di valutazione fissi.
policy.mdeval_suite.jsonljudge_prompt.mdautoguardrails/ASR migliora e il superamento benigno non scende di più di 2 punti percentualiSe vuoi un modello mentale più vicino all'autoresearch originale, pensa a autoguardrails/ come al layer di supporto fisso e a policy.md come all'unico file sotto ricerca.
Esegui dalla radice del repository.
python -m autoguardrails baseline --reset --repeat 2 --notes "initial baseline"
Modifica solo policy.md.
Valuta il nuovo candidato.
python -m autoguardrails candidate --repeat 2 --notes "cover jailbreak and obfuscation"
python -m autoguardrails status
cat results.tsv
Se un candidato viene rifiutato, l'harness ripristina automaticamente policy.md all'ultima versione accettata.
Se preferisci un unico punto di ingresso, usa 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
Su Windows, esegui il wrapper da Git Bash o da un'altra shell compatibile con POSIX.
La configurazione predefinita usa uno stub locale deterministico così il repo funziona offline. Per eseguire esperimenti reali, punta il modello target e il modello giudice verso endpoint compatibili con OpenAI.
Variabili del modello target:
AUTOGUARDRAILS_TARGET_PROVIDER=openai_compatibleAUTOGUARDRAILS_TARGET_MODELAUTOGUARDRAILS_TARGET_API_BASEAUTOGUARDRAILS_TARGET_API_KEYVariabili del modello giudice:
AUTOGUARDRAILS_JUDGE_PROVIDER=openai_compatibleAUTOGUARDRAILS_JUDGE_MODELAUTOGUARDRAILS_JUDGE_API_BASEAUTOGUARDRAILS_JUDGE_API_KEYEsempio:
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"
Usa una configurazione del giudice congelata durante una serie di esecuzioni. Non cambiare i prompt del giudice o i modelli giudice a metà esperimento.
Un semplice ciclo di emulazione offline si presenta così:
policy.md.candidate.Un esempio di modifica candidata che migliora lo stub incluso è aggiungere una gestione esplicita per:
Questo ti dà una prima curva di miglioramento realistica senza modificare il valutatore.
program.md: istruzioni e vincoli dell'esperimentopolicy.md: policy dei guardrail mutabile sotto ricercajudge_prompt.md: prompt del giudice congelatoeval_suite.jsonl: casi di valutazione fissi, di attacco e benigniresults.tsv: registro delle esecuzionirun_autoguardrails.sh: wrapper di comodo attorno alla CLIautoguardrails/: harness Python fissatests/: controlli di regressione e sicurezza per l'harnessVedi autoguardrails/README.md per l'architettura del codice e tests/README.md per la strategia di test.
ruff, black, mypy, pytest, pytest-cov (vedi CONTRIBUTING.md).AUTOGUARDRAILS_* descritte sopra).I contributi sono benvenuti! Ti preghiamo di leggere le nostre Linee guida per i contributi e il Codice di condotta prima di iniziare.
ruff check ., black --check ., mypy autoguardrails e pytest prima di aprire una PR.policy.md è l'unica superficie mutabile; eval_suite.jsonl e judge_prompt.md sono congelati.Segnala le vulnerabilità di sicurezza in modo responsabile. Vedi la nostra Security Policy per sapere come segnalarle (non aprire un issue pubblico per le vulnerabilità). Contatto: [email protected] oppure usa GitHub Security Advisories.
Questo software è un progetto open source del Santander AI Lab, fornito "così com'è" sotto la sua licenza, senza garanzie o condizioni di alcun tipo. Non è un prodotto o servizio ufficiale di Banco Santander, non comporta alcun impegno di supporto in produzione e non costituisce consulenza finanziaria, legale o professionale.
"Santander" e il suo logo sono marchi registrati di Banco Santander, S.A. La licenza del progetto non concede alcun diritto di usarli oltre l'attribuzione fattuale.
Se ritieni di aver trovato una vulnerabilità di sicurezza, segui la nostra security policy — non aprire un issue pubblico. Sei responsabile di valutare l'idoneità di questo software per il tuo caso d'uso e di mantenere aggiornati i tuoi deployment.
Questo progetto è rilasciato sotto la Apache License 2.0 — vedi i file LICENSE e NOTICE per i dettagli.
Copyright (c) 2026 Santander Group
SPDX-License-Identifier: Apache-2.0
Se usi autoguardrails nella tua ricerca, ti preghiamo di citarlo:
@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}
}