EasyJailbreak/EasyJailbreak

An easy-to-use Python framework to generate adversarial jailbreak prompts.

EasyJailbreak – 大型语言模型 jailbreak 攻击研究的 Python 框架

是什么 – EasyJailbreak 是一个开源的 Python 库,允许研究人员构建、运行和评估大型语言模型(LLM)的 jailbreak 攻击。它将典型的 jailbreak 工作流分解为可重用的组件(种子生成、选择器、变异器、约束、攻击者、评估器),并提供一系列现成的“配方”(如 ReNeLLM、GPTFuzz、AutoDAN、PAIR 等),复现了已发表的攻击方法。

为何重要 – 随着 LLM 在更多产品中部署,理解如何诱导其产生禁止行为(如提供有害指令)对安全性至关重要。EasyJailbreak 提供了一个统一的实验平台,使安全研究人员能够:

  • 在相同模型和数据集上比较多种攻击策略。
  • 无需重写整个管道即可插入新的变异或评估方法。
  • 生成可复现的 jailbreak 提示、模型响应和成功分数报告。

核心概念

阶段 角色
种子 攻击的初始恶意查询或提示。
选择器 选择下一轮最有希望的种子(如随机、MCTS、基于分数)。
变异器 变换种子(重述、翻译、添加噪声、加密等)。
约束 过滤变异后的提示(如移除无害或过长的提示)。
评估器 评分 jailbreak 的成功程度(生成式裁判、分类式裁判、模式匹配等)。
循环 选择器 → 变异器 → 约束 → 攻击(在目标模型上运行)→ 评估器 → 回到选择器。

内置攻击配方 – 该库提供了 11 种已发表 jailbreak 流水线的实现,每种都连接了特定的选择器、变异器、约束和评估器。例如:

  • ReNeLLM – 使用 ChangeStyleRephrase 等变异器,搭配生成式裁判评估器。
  • GPTFuzz – 使用 MCTS 或 UCB 选择器,搭配分类式裁判评估器。
  • AutoDAN, PAIR, JailBroken, Cipher, DeepInception, MultiLingual, GCG, TAP, CodeChameleon – 每种都有其独特的变异规则集。

安装

# 仅需现成攻击
pip install easyjailbreak

# 开发或添加新组件
git clone https://github.com/EasyJailbreak/EasyJailbreak.git
cd EasyJailbreak
pip install -e .

需要 Python ≥ 3.9。

快速开始(使用配方)

from easyjailbreak.attacker.PAIR_chao_2023 import PAIR
from easyjailbreak.datasets import JailbreakDataset
from easyjailbreak.models.huggingface_model import from_pretrained
from easyjailbreak.models.openai_model import OpenaiModel

# 加载模型
attack_model = from_pretrained('lmsys/vicuna-13b-v1.5', model_name='vicuna_v1.1')
target_model = OpenaiModel('gpt-4', api_keys='YOUR_KEY')
 eval_model   = OpenaiModel('gpt-4', api_keys='YOUR_KEY')

# 加载基准数据集
dataset = JailbreakDataset('AdvBench')

# 实例化 PAIR 攻击流水线
attacker = PAIR(attack_model, target_model, eval_model, dataset)

# 运行攻击并保存结果
attacker.attack(save_path='vicuna_gpt4_result.jsonl')

该调用处理整个选择器-变异器-评估器循环,并生成包含提示、模型回复和分数的 JSON-Lines 报告。

DIY – 构建自己的攻击者

  1. 加载任意模型(本地 HuggingFace 检查点、OpenAI 兼容 API、MiniMax 等)使用一行辅助函数。
  2. 通过 SeedRandom() 创建种子或提供自己的提示。
  3. 选择组件 – 导入选择器(RandomSelectPolicy)、变异器(Translate, ChangeStyle 等)、可选约束和评估器(Evaluator_GenerativeJudge)。
  4. 在自定义类或脚本中连接它们并运行循环。

文档与资源

  • 论文EasyJailbreak: A Unified Framework for Jailbreaking Large Language Models (arXiv 2403.12171) – 描述设计与实验结果。
  • 网站http://easyjailbreak.org/ – 跨模型 jailbreak 结果的交互式视图。
  • Read-the-Docshttps://easyjailbreak.github.io/EasyJailbreakDoc.github.io/ – 完整 API 参考。
  • 数据集:托管在 HuggingFace 上,位于 Lemhf14/EasyJailbreak_Datasets
  • 实验数据:11 个配方在 10 个 LLM 上的实验结果可通过提供的 Google Drive 链接下载。

引用

@misc{zhou2024easyjailbreak,
  title={EasyJailbreak: A Unified Framework for Jailbreaking Large Language Models},
  author={Weikang Zhou and Xiao Wang and Limao Xiong and ... and Xuanjing Huang},
  year={2024},
  eprint={2403.12171},
  archivePrefix={arXiv},
  primaryClass={cs.CL}
}

EasyJailbreak 因此是一个真正的、研究级别的 LLM 安全工具,而非简单的教程或列表。它为实践者提供了模块化、可复现的方式,用于探索 LLM 如何被诱导产生不安全行为,以及如何衡量此类漏洞。

相关

  • 项目
  • 项目
  • 项目
  • 项目