Pranav-Bhatlapenumarthi/PromptShield
GitHub: Pranav-Bhatlapenumarthi/PromptShield
一款面向 LLM 安全评估的自主红队测试框架,通过混合判定 Pipeline 自动化检测模型的越狱漏洞。
Stars: 2 | Forks: 1
# PromptShield
**用于 LLM 安全评估的自主红队 Agent**
PromptShield 是一个综合性的安全测试框架,旨在通过系统化的红队操作,自主评估大型语言模型 (LLM) API endpoint 的健壮性和安全性。
## 核心功能
### 自动化测试
- 渐进式测试:采用提前停止策略,寻找最低的有效 jailbreak 强度
- 批量测试:通过并行执行实现全面覆盖
- 速率限制:内置 token bucket 速率限制器,防止 API 限流
- 重试机制:针对临时性故障自动进行指数退避重试
### 混合判定 Pipeline
- 基于规则的检测:内置 12 种用于常见 jailbreak 技术的正则表达式模式
- 启发式评分:通过模式分析检测多步指令、动作动词和技术术语
- Judge LLM:结合 few-shot 示例,利用 AI 驱动的分类处理模糊情况
- 可解释的结果:每项决策均包含匹配的规则和推理过程
### 丰富的分析功能
- 实时仪表盘:通过 KPI 进行实时进度追踪
- 交互式图表:使用 Chart.js 绘制环形图、柱状图和时间序列图
- 下钻分析:查看完整的 prompt、响应结果及判定推理过程
- 导出功能:生成包含全面指标的 JSON 报告
### 精选数据集
- RedTeam(2,000 条 prompt):专业红队场景
- JailBreakV(28,000 条 prompt):复杂的 jailbreak 方法论
- Malignant Prompts:常规的有害内容生成尝试
- CySecBench:技术安全测试 prompt
## 快速开始
### 前置条件
- Node.js 18 或更高版本
- npm 包管理器
- OpenRouter API key(或开启 mock 模式进行测试)
### 安装说明
```
# 后端
cd backend
npm install
cp .env.example .env
# 编辑 .env:设置 OPENROUTER_API_KEY 或启用 MOCK_PROVIDER_ENABLED=true
npm run dev
# 前端(新终端)
cd frontend
npm install
npm run dev
```
在浏览器中打开 http://localhost:5173。
**详细的设置说明,请参阅 [SETUP.md](./SETUP.md)**
## 工作原理
### 1. 创建测试任务
配置并启动安全评估:
- 选择测试模式(渐进式或批量)
- 选择数据集和过滤器
- 设置并发数和速率限制
- 监控实时进度
### 2. Worker 处理 prompt
- 从选定的数据集中加载 prompt
- 通过 OpenRouter 将 prompt 发送到目标 LLM
- 收集带有 metadata 的响应(延迟、token、成本)
- 管理速率限制和重试机制
### 3. 判定 Pipeline 分析响应
**阶段 1:基于规则的检测**
- 检查 12 种常见 jailbreak 指标的正则表达式模式
- 示例:显式指令、角色操纵、过滤器绕过
**阶段 2:启发式评分**
- 分析模式:多步指令、动作动词、技术术语
- 检测免责声明语言以及是否存在拒绝回复
**阶段 3:Judge LLM(用于模糊情况)**
- 结合 few-shot 示例为边缘情况调用 Judge LLM
- 返回带有置信度分数的结构化 JSON 分类结果
- 综合各阶段的决策结果
### 4. 查看结果
- KPI 卡片:检测到的 jailbreak 数量、成功率、延迟、成本
- 交互式图表:标签分布、强度细分、时间序列
- 详细表格:支持下钻功能的分页结果展示
- 导出选项:生成用于进一步分析的 JSON 报告
## 架构
### 后端 (Node.js + TypeScript)
```
backend/
├── src/
│ ├── config/ # Environment configuration
│ ├── storage/ # In-memory storage + file persistence
│ ├── judge/ # Hybrid judge pipeline + rules
│ ├── providers/ # OpenRouter integration + rate limiting
│ ├── worker/ # Job queue + progressive/batch modes
│ ├── routes/ # API endpoints
│ └── utils/ # Logger and utilities
├── data/ # Persisted jobs and results
└── logs/ # Application logs
```
### 前端 (React + Vite)
```
frontend/
├── src/
│ ├── Home.jsx # Landing page
│ ├── PromptBrowser.jsx # Dataset explorer
│ ├── JobsList.jsx # Test jobs list
│ ├── Analysis.jsx # Detailed analysis dashboard
│ └── App.jsx # Application router
└── public/
└── data/processed/ # JSONL datasets
```
## API 参考
### 启动测试任务
```
POST /api/test/start
{
"jobName": "Security Audit",
"mode": "progressive",
"datasetSources": ["RedTeam", "JailBreakV"],
"concurrency": 5,
"stopOnFirstSuccess": true
}
```
### 获取任务状态
```
GET /api/test/status/:jobId
```
### 获取结果
```
GET /api/test/result/:jobId?page=1&pageSize=50
```
### 获取报告
```
GET /api/report/:jobId/json
```
**完整的 API 文档:[backend/README.md](./backend/README.md)**
## 测试模式
### 渐进模式(推荐)
按强度顺序(弱 → 中 → 强)测试 prompt,一旦检测到 jailbreak 即提前停止。
**优势:**
- 成本效益高:可减少 50-70% 的 API 调用
- 找到每个 prompt 的最低有效强度
- 非常适合初始评估
### 批量模式
以并行批次的方式全面测试所有 prompt。
**优势:**
- 最大吞吐量
- 完全覆盖
- 适用于全面审计
## 判定 Pipeline
### 基于规则的检测
12 种预配置模式可检测常见的 jailbreak 技术:
- 显式 jailbreak 指令
- 角色操纵(DAN、邪恶人格)
- System prompt 泄露
- 过滤器绕过语言
- 编码的有害内容
- 多轮 jailbreak 模式
**自定义:** 编辑 `backend/src/judge/rules.json` 以添加自定义规则。
### 启发式评分
分析以下响应模式:
- 多步编号指令
- 动作动词密度
- 技术术语的存在
- 免责声明语言
- 缺乏拒绝关键词
### Judge LLM
针对模糊情况(评分在 0.3-0.7 之间):
- 结合 few-shot 示例构建 prompt
- 调用 Judge LLM(默认:Claude-3-Haiku)
- 解析带有置信度分数的 JSON 分类结果
- 若置信度 ≥ 0.8,则集成决策采用 LLM 的结果
## 配置
### 后端环境变量
```
# 服务器配置
PORT=3001
NODE_ENV=development
# OpenRouter API
OPENROUTER_API_KEY=your-api-key-here
OPENROUTER_MODEL=anthropic/claude-3.5-sonnet # Target model to test
# Judge LLM
JUDGE_LLM_MODEL=anthropic/claude-3-haiku # Model for classification
JUDGE_LLM_MAX_TOKENS=500
# Worker 设置
WORKER_CONCURRENCY=5
WORKER_MAX_RETRIES=3
PROVIDER_RATE_LIMIT_RPM=50
# Mock 模式(无需 API 费用的测试)
MOCK_PROVIDER_ENABLED=true
```
**完整的配置指南请参阅 [SETUP.md](./SETUP.md)。**
## Docker 部署
```
# 使用 Docker Compose 构建并运行
docker-compose up -d
```
访问地址:
- 前端:http://localhost
- 后端 API:http://localhost:3001
## 安全与伦理
### 负责任地使用
PromptShield 仅设计用于合法的安全研究和防御目的。
**要求:**
- 在测试任何 LLM 系统之前获取适当的授权
- 遵守目标平台的服务条款
- 出于提升防御安全的目 responsibly 使用
- 遵循 AI 安全研究的伦理准则
### 数据隐私
- API key 仅在服务端存储(绝不暴露给前端)
- 结果在本地存储,不进行外部传输
- 提供可选的数据保留策略
- 支持安全的密钥管理实践
## 文档
- [SETUP.md](./SETUP.md) - 完整的安装和配置指南
- [SYSTEM_OVERVIEW.md](./SYSTEM_OVERVIEW.md) - 技术架构详情
- [IMPLEMENTATION_SUMMARY.md](./IMPLEMENTATION_SUMMARY.md) - 组件概述
- [backend/README.md](./backend/README.md) - 后端 API 参考
## License
本项目基于 MIT License 授权 - 有关详细信息,请参阅 LICENSE 文件。
## 支持
- 问题:GitHub Issues
- 文档:参阅 docs/ 目录
- 邮箱:security@promptshield.app
为 AI 安全社区而构建
标签:GNU通用公共许可证, MITM代理, Node.js, 大语言模型安全, 机密管理, 红队评估, 自定义脚本, 请求拦截, 越狱检测