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 パイプラインの実装が含まれており、それぞれ特定のセレクター、ミュータター、制約、評価者を接続しています。たとえば:
- 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など)を1行のヘルパーで。
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 が不安全な行動を引き出すプロンプトの仕組みをモジュール化・再現可能に探索し、その脆弱性を測定するための強力な手段を提供しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト