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 – 使用 ChangeStyle 與 Rephrase 等變異器,搭配生成式裁判評估器。
- 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 – 建構自己的攻擊者
- 加載任意模型(本地 HuggingFace 檢查點、OpenAI 相容 API、MiniMax 等)使用一行輔助函數。
- 透過
SeedRandom()建立種子或提供自己的提示。 - 選擇元件 – 導入選擇器(
RandomSelectPolicy)、變異器(Translate,ChangeStyle等)、可選約束與評估器(Evaluator_GenerativeJudge)。 - 在自訂類別或腳本中連接它們並執行循環。
文件與資源
- 論文:EasyJailbreak: A Unified Framework for Jailbreaking Large Language Models (arXiv 2403.12171) – 描述設計與實驗結果。
- 網站:http://easyjailbreak.org/ – 跨模型 jailbreak 結果的互動式視圖。
- Read-the-Docs:https://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 如何被誘導產生不安全行為,以及如何衡量此類弱點。
相關
- 專案
- 專案
- 專案
- 專案