コンテンツにスキップ

LLM Guard - LLM セキュリティツールキットチートシート

LLM Guard - LLM セキュリティツールキットチートシート

LLM Guard (Protect AIによる)は、LLMアプリケーション向けのオープンソースセキュリティツールキットです。入力スキャナー(モデルに到達する前にユーザープロンプトに適用) および出力スキャナー(モデルの応答にユーザーに到達する前に適用) のライブラリを提供し、プロンプト注入、ジェイルブレイク、毒性、PII漏洩、秘密、禁止されたトピック、その他多くを検出および軽減します。スキャナーはコンテンツをサニタイズ、リスクをスコアリング、安全でないリクエストをブロックでき、本番LLMアプリの実用的なガードレールレイヤーです。

インストール

方法コマンド
pippip install llm-guard
ONNX付き (高速)pip install "llm-guard[onnxruntime]"
API サーバー (Docker)公式 llm-guard-api イメージを実行
初回実行スキャナーモデル (transformers) をダウンロード
確認python -c "import llm_guard; print('ok')"

2つのスキャニングステージ

ステージ適用対象目的
入力スキャナーユーザープロンプト悪質/安全でない入力がモデルに到達するのを防止
出力スキャナーモデル応答安全でない/漏洩する出力がユーザーに到達するのを防止

入力のスキャン

from llm_guard import scan_prompt
from llm_guard.input_scanners import PromptInjection, Toxicity, Secrets

scanners = [PromptInjection(), Toxicity(), Secrets()]
sanitized, results, risk = scan_prompt(scanners, user_prompt)

if any(not ok for ok in results.values()):
    raise ValueError("Unsafe prompt blocked")
リターン意味
sanitized(修正される可能性がある) プロンプト
resultsスキャナーごとの合格/不合格
riskスキャナーごとのリスクスコア (0–1)

入力スキャナー

スキャナー検出対象
PromptInjection注入/ジェイルブレイク試行
Toxicity有毒/虐待的な言語
Secretsプロンプト内のAPIキー、トークン
AnonymizePII (レダクト、後で匿名解除)
BanTopics禁止されたサブジェクト
BanSubstrings / BanCompetitorsブロックリスト
Codeコードの存在 / 特定の言語
TokenLimit超大型プロンプト
Language予期しない言語

出力のスキャン

from llm_guard import scan_output
from llm_guard.output_scanners import NoRefusal, Sensitive, Relevance

scanners = [NoRefusal(), Sensitive(), Relevance()]
sanitized_resp, results, risk = scan_output(scanners, prompt, model_response)

出力スキャナー

スキャナーチェック対象
Sensitive応答内のPII/秘密漏洩
NoRefusal拒否を検出 (品質/ガードレール信号)
Relevance応答が実際にプロンプトに答えるか
Toxicity有毒出力
Biasバイアスのあるコンテンツ
MaliciousURLs応答内の危険なリンク
Deanonymize信頼できる表示用の匿名解除
FactualConsistencyコンテキストとの応答整合性

PII 匿名化 / 匿名解除フロー

from llm_guard.input_scanners import Anonymize
from llm_guard.output_scanners import Deanonymize
from llm_guard.vault import Vault

vault = Vault()
safe_prompt, _, _ = scan_prompt([Anonymize(vault)], user_prompt)
# ... safe_promptでモデルを呼び出す ...
final, _, _ = scan_output([Deanonymize(vault)], safe_prompt, model_response)

Vault はマッピングを保存するため、レダクトされたエンティティを最終的な回答で復元できます。

デプロイメント

オプション注記
インプロセスライブラリscan_prompt/scan_output をインポートおよび呼び出し
API サーバー言語に依存しないゲートウェイの llm-guard-api
ONNX ランタイムスキャナーモデルのより高速なCPU推論
Configスキャナーごとのフェイルファスト、閾値、マッチ戦略

一般的なワークフロー

# あらゆるLLM呼び出しの周りのガードレールラッパー
def guarded_chat(user_input):
    prompt, r_in, _ = scan_prompt(input_scanners, user_input)
    if not all(r_in.values()):
        return "Request blocked by safety policy."
    resp = call_llm(prompt)
    out, r_out, _ = scan_output(output_scanners, prompt, resp)
    return out if all(r_out.values()) else "Response withheld by safety policy."

LLM Guardと関連ツール

側面LLM GuardNeMo GuardrailsGarak
役割入出力スキャナー (ランタイム)プログラム可能な会話レールLLM脆弱性スキャナー (テスト)
フォーカス注入、PII、毒性、秘密会話フロー制御レッドチーミング/プロービング
いつ使うリクエストパス内リクエストパス内デプロイ前テスト
最適用途ドロップイン型ガードレール複雑なルールベースのフロー弱点検出

リソース