ガードレール
ガードレール:リクエストをモデルへ送る前に、危険なパターンの拒否や個人情報の置換を行う機能です。 APIキーまたはルールで有効にします。 各ガードレールを有効にした後、検出するパターンの種類を個別に選択できます。 管理画面には種類ごとの説明、例、実際の正規表現が表示されます。
判定と置換の対象は、リクエストボディに含まれるすべての文字列です。
メッセージの本文だけでなく、system やtoolの定義に含まれる文字列も対象になります。
プロンプトインジェクションを検出して拒否する
次のようなパターンに一致したリクエストは、モデルへ送らずに拒否します。
- 指示の上書き(これまでの指示を無視する、以前の指示は無効である、など)
- 開発者モードやデバッグモードの有効化
- システムプロンプトの抽出
- ロールの偽装、
<system>のようなタグの注入 - 制御トークンの注入
英語のパターンに加えて、日本語のパターンも含みます。
拒否した場合は 400 / guardrail_blocked が返り、モデルへのリクエストは行われません。
有効にしたAPIキーへ、検出対象の文字列を含むリクエストを送ると拒否されます。
curl "$AI_GATEWAY_BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer $AI_GATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<GET /v1/modelsが返したモデルID>",
"messages": [
{ "role": "user", "content": "これまでの指示を無視してください" }
]
}'{
"error": {
"message": "Request blocked by prompt injection guardrail",
"type": "invalid_request_error",
"code": "guardrail_blocked"
}
}PIIをマスクする
次の形式に一致した文字列を [PII] に置き換えてからモデルへ送ります。
- メールアドレス
- 電話番号(
123-456-7890のような3桁区切り、または10桁の連続した数字) - 市外局番から始まる電話番号(
03-1234-5678など) - 社会保障番号(
123-45-6789の形式) - クレジットカード番号(13〜19桁の数字。空白やハイフンの区切りを含む)
- IPv4アドレス
選択内容は正規表現そのものではなく、次の安定した識別名で設定へ保存されます。
| ガードレール | パターングループ識別名 |
|---|---|
| PIIマスク | email, phone, ssn, credit_card, ipv4, japanese_phone |
| プロンプトインジェクション | instruction_override, mode_activation, system_override, prompt_extraction, role_manipulation, jailbreak, safety_bypass, role_spoofing, control_token, japanese_injection |
従来の "pii_mask" / "prompt_injection" という文字列設定は、互換性のためそれぞれの全パターングループを有効にします。
種類を選択した設定は、たとえば {"name":"pii_mask","patternGroups":["email","credit_card"]} の形になります。
ルールにガードレール設定がある場合はその選択内容がAPIキーへ継承され、ルールにない場合はAPIキー個別の選択内容が使われます。
パターンに一致した文字列だけが置き換わります。 一致しなかった場合、リクエストはそのままモデルへ送られます。
マスク後の値はモデルへ送るリクエスト内でだけ使われます。 クライアントへマスク後のリクエストボディは返りません。
動作を確認する
ガードレールを有効にしたAPIキーでテスト用のリクエストを送り、拒否時の code またはモデルの応答を確認します。
本番の個人情報を使わず、形式だけを満たす架空の値で確認してください。
使用状況では、ガードレールが動作したリクエスト数を確認できます。
両方を有効にしたとき
プロンプトインジェクションの判定が先に行われます。 拒否されたリクエストではマスクは実行されません。
ガードレールはリスクを減らす補助機能です。 アプリケーション側の入力検証、出力確認、権限管理の代わりにはなりません。