EasyJailbreak/EasyJailbreak

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

EasyJailbreak – 大規模言語モデルの jailbreak 攻撃研究のための Python フレームワーク

何であるか – EasyJailbreak は、大規模言語モデル(LLM)に対する jailbreak 攻撃を構築・実行・評価できるオープンソースの Python ライブラリです。従来の jailbreak ワークフローを再利用可能なコンポーネント(シード生成、セレクター、ミュータター、制約、攻撃者、評価者)に分解し、ReNeLLM、GPTFuzz、AutoDAN、PAIR など、公開された攻撃を再実装した「レシピ」のコレクションを提供しています。

なぜ重要か – LLM がより多くの製品に導入される中で、モデルが禁止された行動(例:有害な指示の提供)を引き出す方法を理解することは、セキュリティ上極めて重要です。EasyJailbreak は統一された実験環境を提供し、セキュリティ研究者が:

  • 同じモデルとデータセット上で多数の攻撃戦略を比較できる。
  • パイプライン全体を再実装せずに、新しい変異や評価手法を組み込める。
  • jailbreak プロンプト、モデルの応答、成功スコアの再現可能なレポートを生成できる。

主要な概念

ステージ 役割
シード 攻撃を開始する初期の悪意あるクエリまたはプロンプト。
セレクター 次のラウンドに最も有望なシードを選択する(例:ランダム、MCTS、スコアベース)。
ミュータター シードを変形する(再表現、翻訳、ノイズ追加、暗号化など)。
制約 変形されたプロンプトをフィルタリングする(例:無害または長すぎるプロンプトを除外)。
評価者 jailbreak の成功度をスコアリングする(生成型ジャッジ、分類型ジャッジ、パターンマッチなど)。
ループ セレクター → ミュータター → 制約 → 攻撃(ターゲットモデルで実行) → 評価者 → セレクターへ戻る。

組み込み攻撃レシピ – ライブラリには、11の公開された jailbreak パイプラインの実装が含まれており、それぞれ特定のセレクター、ミュータター、制約、評価者を接続しています。たとえば:

  • ReNeLLMChangeStyleRephrase などのミュータターと生成型ジャッジ評価者を使用。
  • 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など)を1行のヘルパーで。
  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-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 が不安全な行動を引き出すプロンプトの仕組みをモジュール化・再現可能に探索し、その脆弱性を測定するための強力な手段を提供しています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト