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 如何被誘導產生不安全行為,以及如何衡量此類弱點。

相關

  • 專案
  • 專案
  • 專案
  • 專案