このプロジェクトについて

garak(Generative AI Red-teaming & Assessment Kit)は、大規模言語モデルと対話システムの障害モードを調査するためのコマンドラインツールです。NVIDIAによって開発され、Apache 2.0ライセンスで公開されています。 機能 - LLMが幻覚、データ漏洩、プロンプトインジェクション、誤情報、有害な生成、脱獄などの望ましくない方法で失敗するかをチェックします。 - 静的、動的、適応型のプローブを組み合わせて、これらの障害モードを調査します。 - READMEでは、その役割をnmapやMetasploit Frameworkに例えていますが、LLMに適用されます。 サポート対象 - Hugging Face Hubの生成モデル(ローカルtransformersパイプライン、Inference API、プライベートInference Endpointsを含む)。 - OpenAIのチャットおよび補完モデル。 - Replicateのテキストモデルとプライベートエンドポイント。 - AWS Bedrockの基盤モデル(Converse API経由)。Anthropic Claude、Meta Llama、Amazon Titan、AI21 Labs、Cohere、Mistral AIなどのファミリーをカバー。 - Cohere、Groq、litellm、NVIDIA NIMエンドポイント、ggml/llama.cppモデル、およびRESTエンドポイントで到達可能なもの。 - プラグイン開発用の組み込みテストジェネレータ(test.Blank、test.Repeat)。 インストールと使用法 - PyPIからpipでインストールするか、GitHubのメインブランチから、またはソースからConda環境(Python 3.11〜3.13)にクローンしてインストール。 - 一般的な構文は `garak <options>`。ツールはターゲットモデルを必要とし、デフォルトでは各プローブの推奨検出器で全既知プローブを実行します。 - `--list_probes` で利用可能なプローブを一覧表示。`--target_type` と `--target_name` でモデルを選択。`--spec` でプローブファミリーや単一プラグインに実行を絞り込む。 - ホスト型プロバイダーのAPIキーは、OPENAI_API_KEY、HF_INFERENCE_TOKEN、REPLICATE_API_TOKEN、COHERE_API_KEY、GROQ_API_KEY、NIM_API_KEY、BEDROCK_API_KEYなどの環境変数で供給されます。 READMEで説明されているプローブ例 - blank、atkgen(自動攻撃生成)、badchars(知覚不能なUnicode摂動)、av_spam_scanning、continuation、dan(DANおよびDAN類似攻撃)、donotanswer、encoding(テキストエンコーディングによるプロンプトインジェクション)、gcg(敵対的サフィックス)、glitch(グリッチトークン)、grandma、goodside、leakreplay(トレーニングデータ再生)、lmrc(Language Model Risk Cards)、malwaregen、misleading、packagehallucination、promptinject、realtoxicityprompts、snowball(雪だるま式幻覚)、xss。 結果とログ - 各プローブについて、garakは進捗バーを表示し、検出器ごとに結果を評価する行を出力し、望ましくない動作が発生した場合に失敗率とFAILをマークします。 - ログには、デバッグ用のgarak.log、プローブ試行ごとのエントリを含む実行ごとのJSONLレポート、および脆弱性が発生した試行を詳述するヒットログが含まれます。 - analyse/analyse_log.pyの基本的な分析スクリプトは、最も多くのヒットを生んだプローブとプロンプトを出力します。 アーキテクチャと拡張性 - コードはプローブ、検出器、評価器、ジェネレータ、ハーネスに編成され、それぞれにプラグイン基底クラスを定義するbase.pyがあります。 - デフォルトの動作モードはプローブ単位ハーネスで、各プローブをインスタンス化し、そのprimary_detectorとextended_detectors属性を読み取って実行する検出器を決定します。 - 開発者は、garak.probes.base.TextProbeなどの基底クラスを継承し、テストジェネレータと検出器で対話的にテストし、--list_probes、--list_detectors、または--list_generatorsで一覧表示することで、新しいプラグインを書くことができます。 プロジェクトリソース - docs.garak.aiとreference.garak.io/readthedocsのドキュメント、Discordコミュニティ、garak.aiプロジェクトホーム、arXivプレプリント(2406.11036)、学術用の引用エントリがあります。