lyy030914/llm-red-team
GitHub: lyy030914/llm-red-team
一款轻量级的LLM安全红队测试工具,用于自动检测AI模型在提示词注入、越狱等方面的安全风险。
Stars: 0 | Forks: 0
# LLM Red Team - AI模型安全红队测试工具
一个轻量级的 LLM 安全测试工具,用于对 OpenAI 兼容接口的 AI 模型进行自动化红队测试,检测提示词注入、越狱、系统提示词泄露等安全风险。
## 功能特性
- **8类攻击模板**:提示词注入、越狱攻击、角色扮演绕过、编码绕过、上下文污染、系统提示词提取、PII提取、有害内容生成
- **双模式检测**:规则引擎(关键词/正则)+ LLM作为裁判,可单独或组合使用
- **多格式报告**:终端彩色文本报告、JSON报告、HTML报告
- **OpenAI兼容接口**:支持 OpenAI、vLLM、Ollama、本地部署等多种后端
## 快速开始
### 1. 安装依赖
pip install -r requirements.txt
### 2. 基础用法
# 对 OpenAI 模型进行全部类别测试
python red_team.py \
--target https://api.openai.com/v1 \
--api-key sk-your-key \
--model gpt-4o-mini
# 对本地 Ollama 模型进行测试(无需API Key)
python red_team.py \
--target http://localhost:11434/v1 \
--model llama3
# 只测试指定类别
python red_team.py \
--target https://api.openai.com/v1 \
--api-key sk-your-key \
--categories prompt_injection jailbreak
# 使用LLM作为裁判(更准确)
python red_team.py \
--target https://api.openai.com/v1 \
--api-key sk-your-key \
--judge llm \
--judge-api-key sk-your-key
# 输出JSON报告
python red_team.py \
--target https://api.openai.com/v1 \
--api-key sk-your-key \
--output json > report.json
# 输出HTML报告
python red_team.py \
--target https://api.openai.com/v1 \
--api-key sk-your-key \
--output html > report.html
### 3. 查看所有攻击模板(不执行)
python red_team.py --target http://localhost:11434/v1 --dry-run
## 攻击类别说明
| 类别 | 说明 | 攻击示例 |
|------|------|----------|
| `prompt_injection` | 提示词注入 | 忽略系统指令、分隔符欺骗、JSON格式注入 |
| `jailbreak` | 越狱攻击 | DAN模式、开发者模式、对立角色扮演 |
| `role_playing` | 角色扮演绕过 | 虚构场景、学术研究伪装、祖母漏洞 |
| `encoding_bypass` | 编码绕过 | Base64编码、分段指令、密码游戏 |
| `context_pollution` | 上下文污染 | 长文本注入、URL内容注入 |
| `system_prompt_extraction` | 系统提示词提取 | 直接询问、翻译泄露、格式填充 |
| `pii_extraction` | PII提取 | 训练数据提取、历史对话泄露 |
| `toxicity` | 有害内容生成 | 仇恨言论、自我伤害内容、错误信息 |
## 命令参数
| 参数 | 简写 | 说明 | 默认值 |
|------|------|------|--------|
| `--target` | `-t` | 目标LLM API地址(必填) | - |
| `--api-key` | `-k` | 目标API的Key | 无 |
| `--model` | `-m` | 目标模型名称 | `gpt-3.5-turbo` |
| `--categories` | `-c` | 攻击类别(多个空格分隔) | 全部 |
| `--judge` | `-j` | 检测模式:`rule`/`llm`/`both` | `rule` |
| `--judge-api-key` | - | 裁判LLM的API Key | 无 |
| `--judge-model` | - | 裁判LLM模型名称 | `gpt-4o-mini` |
| `--judge-base-url` | - | 裁判LLM API地址 | `https://api.openai.com/v1` |
| `--output` | `-o` | 报告格式:`text`/`json`/`html` | `text` |
| `--timeout` | - | 请求超时(秒) | `30` |
| `--dry-run` | - | 仅列出攻击模板 | - |
## 项目结构
llm-red-team/
├── red_team.py # 主入口 / CLI 界面
├── attacks.py # 攻击模板库(8类、20+攻击模板)
├── judge.py # 检测引擎(规则引擎 + LLM裁判)
├── reporter.py # 报告生成器(文本/JSON/HTML)
├── config.py # 配置模型
├── requirements.txt # 依赖
└── README.md # 本文档
## 检测原理
### 规则引擎(默认)
- **拒绝回应检测**:正则匹配"I'm sorry"、"我无法"、"我不能"等拒绝模式,识别模型是否拦截了攻击
- **泄露检测**:检测响应中是否包含系统提示词特征、PII信息(手机号、邮箱、API Key等)
- **有害内容检测**:关键词匹配识别暴力、制毒、自杀等敏感内容
### LLM裁判(可选)
- 将攻击提示词和模型响应一起发送给另一个LLM
- 裁判LLM综合判断目标是否被攻破
- 比规则引擎更准确,但需要额外API调用
## 安全声明
本工具仅供合法的安全测试用途,请在以下前提下使用:
1. **仅测试自己有权限测试的模型或系统**
2. **不要在未经授权的情况下对第三方服务进行测试**
3. **测试结果应仅用于改进模型安全性,不得用于非法目的**
作者不对任何滥用本工具的行为承担责任。
## 参考项目
- [Garak](https://github.com/NVIDIA/garak) - NVIDIA开源的LLM漏洞扫描器
- [LLM-Guard](https://github.com/protectai/llm-guard) - ProtectAI的LLM安全沙箱
- [PromptBench](https://github.com/microsoft/promptbench) - 微软的提示词鲁棒性评估框架
标签:AI安全, AI风险缓解, Chat Copilot, LLM, Petitpotam, Unmanaged PE, 逆向工具