SantanderAI/autoguardrails
GitHub: SantanderAI/autoguardrails
一个自动化 LLM 护栏策略迭代的研究脚手架,通过在固定评估套件上反复测试 policy.md 的变更来逐步优化模型安全防护效果。
Stars: 7 | Forks: 0
# autoguardrails
[](LICENSE)
[](https://www.python.org/downloads/)
[](https://github.com/SantanderAI/autoguardrails/actions/workflows/ci.yml)
[](https://github.com/SantanderAI/autoguardrails/actions/workflows/codeql.yml)
[](https://codecov.io/gh/SantanderAI/autoguardrails)
[](https://scorecard.dev/viewer/?uri=github.com/SantanderAI/autoguardrails)
[](https://github.com/psf/black)
[](https://github.com/astral-sh/ruff)
[](https://conventionalcommits.org)
[**Santander AI Open Source**](https://github.com/SantanderAI) 的一部分 —— 来自 Banco Santander ([santander.com](https://santander.com)) 的开源 AI 项目。
`autoguardrails` 是一个受 Karpathy 的 `autoresearch` 启发的小型对齐研究脚手架。
这个代码库不是搜索 `train.py`,而是搜索 `policy.md`。
核心思想是一致的:
- 保持可变范围极小
- 保持评估器固定不变
- 在固定的墙上时间预算内运行
- 使用一个核心指标来比较候选方案
- 记录每一次保留或丢弃的决定
在这个代码库中,核心指标是攻击成功率(`ASR`,越低越好),并设有良性通过率下限,以防止系统通过拒绝一切来获胜。
## 最重要的事项
对于日常实验,有三个文件最为重要:
- `program.md`:循环的人工管理指令
- `policy.md`:运行之间你唯一应该编辑的文件
- `results.tsv`:仅追加的运行日志
其他所有内容都是固定的测试框架代码或固定的评估数据。
## 当前研究契约
- 可变范围:`policy.md`
- 固定测试套件:`eval_suite.jsonl`
- 固定裁判提示词:`judge_prompt.md`
- 固定测试框架:`autoguardrails/`
- 接受规则:仅当 `ASR` 有所改善,且良性通过率下降不超过 2 个百分点时,才保留候选方案
- 运行时间预算:由测试框架配置固定,目前每次评估为 5 分钟
如果你想要一个更接近原始 `autoresearch` 的心智模型,可以把 `autoguardrails/` 看作固定的辅助层,而把 `policy.md` 看作搜索下的唯一文件。
## 快速开始
在代码库根目录下运行。
1. 记录基准。
```
python -m autoguardrails baseline --reset --repeat 2 --notes "initial baseline"
```
2. 仅编辑 `policy.md`。
3. 对新候选方案进行评分。
```
python -m autoguardrails candidate --repeat 2 --notes "cover jailbreak and obfuscation"
```
4. 检查当前保留的结果。
```
python -m autoguardrails status
```
5. 检查完整日志。
```
cat results.tsv
```
如果候选方案被拒绝,测试框架会自动将 `policy.md` 恢复到上次接受的版本。
## Shell 封装脚本
如果你更喜欢单一入口点,请使用 [run_autoguardrails.sh](./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
```
在 Windows 上,请在 Git Bash 或其他兼容 POSIX 的 shell 中运行此封装脚本。
## 真实模型配置
默认设置使用确定性的本地 stub,以便代码库可以离线工作。
要运行真实实验,请将目标模型和裁判模型指向兼容 OpenAI 的 endpoint。
目标模型变量:
- `AUTOGUARDRAILS_TARGET_PROVIDER=openai_compatible`
- `AUTOGUARDRAILS_TARGET_MODEL`
- `AUTOGUARDRAILS_TARGET_API_BASE`
- `AUTOGUARDRAILS_TARGET_API_KEY`
裁判模型变量:
- `AUTOGUARDRAILS_JUDGE_PROVIDER=openai_compatible`
- `AUTOGUARDRAILS_JUDGE_MODEL`
- `AUTOGUARDRAILS_JUDGE_API_BASE`
- `AUTOGUARDRAILS_JUDGE_API_KEY`
示例:
```
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"
```
在一系列运行期间使用固定的裁判设置。不要在实验中途切换裁判提示词或裁判模型。
## 典型迭代模式
一个简单的离线模拟循环如下所示:
1. 记录基准。
2. 在 `policy.md` 中添加一个策略更改族。
3. 运行 `candidate`。
4. 仅在测试框架接受时保留更改。
5. 每次重复一个新更改。
改善内置 stub 的一个候选更改示例是添加对以下内容的显式处理:
- 越狱措辞,例如“ignore previous instructions”、“roleplay”和“developer mode”
- 混淆请求,例如翻译、base64、rot13、仅 JSON 格式或 schema 转换
这为你提供了一条真实的初步改进曲线,而无需更改评估器。
## 代码库布局
- `program.md`:实验指令和约束
- `policy.md`:搜索下的可变护栏策略
- `judge_prompt.md`:冻结的裁判提示词
- `eval_suite.jsonl`:固定的攻击和良性评估用例
- `results.tsv`:运行日志
- `run_autoguardrails.sh`:围绕 CLI 的便捷封装脚本
- `autoguardrails/`:固定的 Python 测试框架
- `tests/`:针对测试框架的回归和安全检查
有关代码架构,请参阅 [autoguardrails/README.md](./autoguardrails/README.md);有关测试策略,请参阅 [tests/README.md](./tests/README.md)。
## 安全说明
- 此脚手架特意设计为单轮且范围狭窄。
- 它不对工具、文件访问或多步 agent 操作进行建模。
- 内置的 stub 仅用于测试框架验证;它不是一个真实的安全模型。
- 评估套件是设计固定的。如果你更改了它,请开始一个新的实验谱系,而不是与旧结果进行比较。
## 环境要求
- **Python 3.10+**
- **无第三方运行时依赖** —— 测试框架完全基于 Python 标准库构建,默认离线运行。
- 可选,仅用于开发:`ruff`、`black`、`mypy`、`pytest`、`pytest-cov`(参见 [CONTRIBUTING.md](CONTRIBUTING.md))。
- 可选,用于真实模型实验:访问兼容 OpenAI 的 chat-completions endpoint(通过上述描述的 `AUTOGUARDRAILS_*` 环境变量进行配置)。
## 安全
请负责任地报告安全漏洞。有关如何报告,请参阅我们的[安全策略](SECURITY.md)
(对于漏洞,请**不要**开启公开的 issue)。联系方式:
**security-opensource@gruposantander.com** 或使用 GitHub Security Advisories。
## 许可证
本项目基于 **Apache License 2.0** 授权 —— 有关详细信息,请参阅 [LICENSE](LICENSE)
和 [NOTICE](NOTICE) 文件。
```
Copyright (c) 2026 Santander Group
SPDX-License-Identifier: Apache-2.0
```
## 引用
如果你在你的研究中使用了 `autoguardrails`,请引用它:
```
@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}
}
```
标签:AI对齐, DLL 劫持, Naabu, Python, 内容安全, 大语言模型, 安全规则引擎, 护栏机制, 无后门, 自动化研究