一个全面的框架,用于通过系统性攻击和拒绝测试评估大型语言模型(LLM)的安全性。RedEval 提供了一个统一、安全且可扩展的平台,用于评估 LLM 对抗对抗性提示和有害内容的鲁棒性。它是论文 "RedBench: A Universal Dataset for Comprehensive Red Teaming of Large Language Models" 的一部分,该论文是一个用于全面红队测试 LLM 的通用数据集。
📦 数据集:RedBench 数据集在 HuggingFace 上公开可用,地址为 knoveleng/redbench。它包含了跨多个安全类别和领域的全面红队测试提示。
# 克隆仓库
git clone https://github.com/knoveleng/redeval.git
cd redeval
# 安装依赖
pip install -r requirements.txt
# 复制并配置环境变量
cp .env.template .env
# 编辑 .env 文件,填入您的 API 密钥
编辑 .env 文件,填入您的凭证:
OPENAI_API_KEY=your_openai_api_key_here
HUGGINGFACE_TOKEN=your_huggingface_token_here
# 设置环境
source ./sh/setup_env.sh
# 使用默认模型运行,您可以编辑 .env 定义要运行的模型
python -m redeval.cli run-pipeline
# 使用特定模型运行完整流水线
python -m redeval.cli run-pipeline --models "Qwen/Qwen2.5-7B-Instruct" "gpt-4o-mini"
# 或者运行单独阶段
./sh/generate_attack.sh
./sh/run_attack.sh
./sh/eval_attack.sh
RedEval 通过两种互补方法评估 LLM 安全性:
使用各种越狱技术测试 LLM 对抗对抗性提示的脆弱性:
评估 LLM 在多个安全数据集上适当拒绝有害请求的能力:
计算结合攻击和拒绝性能的综合安全指标。
redeval/
├── redeval/ # 核心 Python 模块
│ ├── config.py # 环境与配置管理
│ ├── pipeline.py # 中心化流水线编排器
│ ├── cli.py # 统一命令行接口
│ ├── exceptions.py # 自定义异常处理
│ ├── generate_attack.py # 攻击提示生成
│ ├── run_attack.py # 攻击执行
│ ├── eval_attack.py # 攻击评估
│ ├── run_refuse.py # 拒绝测试
│ ├── eval_refuse.py # 拒绝评估
│ └── score.py # 指标计算
├── sh/ # Shell 脚本接口
│ ├── setup_env.sh # 环境设置
│ ├── generate_attack.sh # 攻击生成脚本
│ ├── run_attack.sh # 攻击执行脚本
│ ├── eval_attack.sh # 攻击评估脚本
│ ├── run_refuse.sh # 拒绝测试脚本
│ ├── eval_refuse.sh # 拒绝评估脚本
│ └── score.sh # 评分脚本
├── recipes/ # 配置文件
├── logs/ # 评估结果
└── .env # 环境变量
graph TD
A[生成攻击提示] --> B[运行攻击测试]
B --> C[评估攻击结果]
D[运行拒绝测试] --> E[评估拒绝结果]
C --> F[计算最终分数]
E --> F
F --> G[生成报告]
克隆仓库
git clone <仓库地址>
cd redeval
安装依赖
pip install -r requirements.txt
配置环境
cp .env.template .env
# 编辑 .env 文件,填入您的 API 凭证
验证安装
python -m redeval.cli --help
RedEval 使用环境变量进行安全灵活的配置:
| 变量 | 描述 | 示例 |
|---|---|---|
OPENAI_API_KEY | OpenAI API 密钥 | sk-proj-... |
HUGGINGFACE_TOKEN | HuggingFace 令牌 | hf_... |
| 变量 | 描述 | 默认值 |
|---|---|---|
REDEVAL_OPEN_SOURCE_MODELS | 开源模型列表 | "Qwen/Qwen2.5-7B-Instruct" |
REDEVAL_CLOSED_SOURCE_MODELS | 闭源模型列表 | "gpt-4o-mini" |
recipes/ 目录中的配置文件控制评估参数:
attack/base-open.yml - 开源模型攻击配置attack/base-close.yml - 闭源模型攻击配置attack/eval.yml - 攻击评估配置refuse/base-open.yml - 开源模型拒绝配置refuse/base-close.yml - 闭源模型拒绝配置refuse/eval.yml - 拒绝评估配置RedEval 为所有操作提供统一的 CLI:
# 运行完整评估流水线
python -m redeval.cli run-pipeline
# 使用特定模型运行
python -m redeval.cli run-pipeline --models "Qwen/Qwen2.5-7B-Instruct" "gpt-4o-mini"
# 仅运行特定阶段
python -m redeval.cli run-pipeline --phases generate_attack run_attack eval_attack
# 生成攻击提示
python -m redeval.cli generate-attack --config ./recipes/attack/base-close.yml
# 运行攻击评估
python -m redeval.cli run-attack --config ./recipes/attack/base-open.yml --model "Qwen/Qwen2.5-7B-Instruct"
# 评估攻击结果
python -m redeval.cli eval-attack --config ./recipes/attack/eval.yml --log-dir ./logs/attack/HarmBench/direct/model_name
# 运行拒绝测试
python -m redeval.cli run-refuse --config ./recipes/refuse/base-open.yml --model "Qwen/Qwen2.5-7B-Instruct"
# 评估拒绝结果
python -m redeval.cli eval-refuse --config ./recipes/refuse/eval.yml --log-dir ./logs/refuse/CoCoNot/base/model_name
# 计算分数
python -m redeval.cli score --log-dir ./logs/attack/HarmBench/direct/model_name --keyword "unsafe"
对于偏好 shell 脚本的用户:
# 设置环境(先运行)
source ./sh/setup_env.sh
# 运行评估阶段
./sh/generate_attack.sh # 生成攻击提示
./sh/run_attack.sh # 执行攻击
./sh/eval_attack.sh # 评估攻击结果
./sh/run_refuse.sh # 运行拒绝测试
./sh/eval_refuse.sh # 评估拒绝结果
./sh/score.sh # 计算最终分数
用于编程访问:
from redeval.pipeline import PipelineOrchestrator, PipelinePhase
from redeval.config import EnvironmentConfig
# 初始化配置
config = EnvironmentConfig.from_env()
# 创建流水线编排器
orchestrator = PipelineOrchestrator(config)
# 运行完整流水线
orchestrator.run_complete_pipeline()
# 运行特定阶段
orchestrator.run_phase(PipelinePhase.GENERATE_ATTACK)
orchestrator.run_phase(PipelinePhase.RUN_ATTACK)
.env 文件并包含验证run-pipeline运行完整评估流水线或特定阶段。
选项:
--models: 要评估的模型列表--phases: 要运行的特定阶段--config-dir: 配置目录路径--log-dir: 日志输出目录generate-attack生成对抗性攻击提示。
选项:
--config: 配置文件路径--num-samples: 要生成的样本数量--seed: 用于可重现性的随机种子run-attack对目标模型执行攻击评估。
选项:
--config: 配置文件路径--model: 目标模型名称--num-samples: 要处理的样本数量eval-attack使用评判模型评估攻击结果。
选项:
--config: 配置文件路径--log-dir: 包含攻击日志的目录run-refuse运行拒绝能力测试。
选项:
--config: 配置文件路径--model: 目标模型名称--num-samples: 要测试的样本数量--split: 要使用的数据集划分eval-refuse评估拒绝测试结果。
选项:
--config: 配置文件路径--log-dir: 包含拒绝日志的目录score根据评估结果计算安全得分。
选项:
--log-dir: 包含评估日志的目录--keyword: 要在结果中搜索的关键词PipelineOrchestrator中心化流水线管理。
方法:
run_complete_pipeline(): 执行完整评估流水线run_phase(phase): 执行特定流水线阶段get_phase_status(phase): 获取流水线阶段的状态EnvironmentConfig环境与配置管理。
方法:
from_env(): 从环境变量加载配置validate(): 验证配置完整性setup_logging(): 配置日志系统Fork 并克隆
git clone https://github.com/knoveleng/redeval.git
cd redeval
创建开发环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
设置 Pre-commit 钩子
pip install pre-commit
pre-commit install
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
如果您觉得本项目有用,请考虑在研究论文中引用它:
@inproceedings{
dang2026redbench,
title={RedBench: A Universal Dataset for Comprehensive Red Teaming of Large Language Models},
author={Quy-Anh Dang and Chris Ngo and Truong-Son Hy},
booktitle={ICLR 2026 Workshop on Principled Design for Trustworthy AI - Interpretability, Robustness, and Safety across Modalities},
year={2026},
url={https://openreview.net/forum?id=7pZXyk0d07}
}
| 变量 | 描述 | 默认值 |
|---|
REDEVAL_PROJECT_ROOT | 项目根目录 | 当前目录 |
REDEVAL_LOG_DIR | 日志目录 | ./logs |
REDEVAL_RECIPES_DIR | 配置目录 | ./recipes |
REDEVAL_LOG_LEVEL | 日志级别 | INFO |
REDEVAL_NUM_SAMPLES | 评估样本数量 | 10 |
REDEVAL_SEED | 随机种子 | 0 |