chaithanyakrishnasn/llm-security-lab
GitHub: chaithanyakrishnasn/llm-security-lab
一个用于测试和评估 LLM 提示注入防御能力的 Python 基准测试项目。
Stars: 0 | Forks: 0
# LLM 安全实验室
一个用于测试 LLM 工作流中提示注入弹性的 Python 小型基准测试项目。
该项目会对安全系统提示进行重复的攻击模拟,应用简单的防御策略,通过模拟后端或 OpenAI 兼容 API 生成模型响应,并使用基于规则的评估器和基于 LLM 的评估器对结果进行评分。
## 功能
- 从 `prompts.py` 加载安全的基础系统提示。
- 生成 `easy`、`medium` 和 `hard` 难度级别的对抗性提示注入变体。
- 应用 `warning_prefix` 和 `strict_policy` 等防御策略。
- 通过 `llm.py` 调用模型后端。
- 使用以下方式评估每个响应:
- 关键词驱动的检测器
- 返回结构化 JSON 的 LLM 裁判
- 将基准记录写入 `logs/results.json`。
- 打印汇总指标,包括妥协率、不一致率、防御策略对比以及难度细分。
## 项目结构
- `main.py` 运行完整的基准测试循环。
- `attacker.py` 定义攻击家族和基于难度的变体。
- `defender.py` 应用提示级别的防御策略。
- `llm.py` 提供模拟模型和 OpenAI 兼容 API 客户端。
- `evaluator.py` 包含基于规则的评估器和 LLM 裁判流程。
- `prompts.py` 存储基础系统提示和种子攻击模式。
- `logger.py` 将运行结果追加到 `logs/results.json`。
- `config.py` 从环境变量加载运行时配置。
## 依赖要求
- Python 3.11+
- `python-dotenv`
安装依赖:
```
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
## 配置
该项目默认在模拟模式下完整运行。要使用真实的 OpenAI 兼容端点,请创建 `.env` 文件:
```
API_KEY=your_api_key
MODEL_NAME=gpt-4.1-mini
EVALUATOR_MODEL_NAME=gpt-4.1-mini
BASE_URL=https://api.openai.com/v1
RANDOM_SEED=7
```
项目使用的环境变量:
- `API_KEY`:设置后启用真实 API 调用。
- `MODEL_NAME`:生成模型名称。
- `EVALUATOR_MODEL_NAME`:评估器模型名称。默认为 `MODEL_NAME`。
- `BASE_URL`:OpenAI 兼容 API 基础 URL。
- `RANDOM_SEED`:用于确定性模拟基准测试的种子。
如果未设置 `API_KEY`,生成和评估都会回退到 `llm.py` 中的本地模拟实现。
## 运行基准测试
```
python3 main.py
```
每次运行会打印:
- 运行元数据
- 当前激活的防御策略
- 每个攻击变体及模型响应
- 基于规则的和基于 LLM 的评估器输出
- 按防御策略和攻击难度分组的最终摘要
结果会追加到:
```
logs/results.json
```
## 备注
- 当前的基准测试有意设计为轻量级且在模拟模式下具有确定性。
- 真实 API 集成使用最小的聊天补全请求,并在请求或解析失败时回退到模拟后端。
- 评估器目前依赖简单启发式规则加上格式为 JSON 的 LLM 判断,因此它适用于实验,但尚未达到生产级安全测试框架的标准。
标签:AI安全测试, ETW劫持, OpenAI兼容API, Python, 关键词检测, 反取证, 安全评估, 密钥泄露防护, 对抗样本, 提示注入, 攻击仿真, 无后门, 日志记录, 机器学习安全, 模型评估器, 模拟后端, 环境配置, 结构化JSON, 规则评估器, 逆向工具, 防御策略, 难度分级, 集群管理