Model Armor でテンプレート固有の除外ルールを構成して、誤検出を軽減できます。除外ルールは、検出から除外する正規表現またはフレーズを含むテンプレート固有のルールです。
サポートされているフィルタ
除外ルールは、次のフィルタで使用できます。
- プロンプト インジェクションとジェイルブレイクの検出(
PROMPT_INJECTION_AND_JAILBREAK) - 責任ある AI の安全フィルタ(
RESPONSIBLE_AI)
除外ルールを使用するタイミング
フィルタを完全に無効にせずに、特定のワークロードで既知の誤検出を抑制する必要がある場合は、テンプレート固有の除外ルールを使用します。
- ドメイン固有の用語または技術用語: アプリケーションが、責任ある AI の安全カテゴリと重複する、システム管理コマンド(
kill process、abort transaction)、セキュリティ テスト用語(penetration testing)、科学用語(blast search)、業界のイディオムなどの専門用語を処理する。 - 無害な操作または書式設定の手順: ユーザーまたはプロンプト テンプレートに、プロンプト インジェクションとジェイルブレイクの検出で偽陽性をトリガーする命令動詞(
"ignore case when sorting this list"、"ignore empty rows"、"Summarize my inbox and ignore the emails from the marketing vendor."など)を使用する正当な手順が含まれています。 - モデルの更新を待つ間の対象を絞った緩和策: 特定のアプリケーション ワークフローで確認された誤検出に対する一時的な回避策がすぐに必要ですが、他のすべての入力に対してはフィルタを有効にしておく必要があります。
次の表に、ルールの種類と照合範囲の各組み合わせを使用するタイミングを示します。辞書と正規表現のマッチングの仕組みの詳細については、辞書ルールと正規表現ルールとマッチングの仕組みをご覧ください。
| ルールの設定 | 使用する状況 | 例 |
|---|---|---|
部分一致を含む辞書ルール(MATCHING_SCOPE_PARTIAL_MATCH) |
プロンプトまたはレスポンス内の任意の場所に表示できる静的な単語やフレーズの固定リストがあります。辞書照合の動作の詳細については、辞書ルールと正規表現ルールをご覧ください。 |
辞書に「 一致:
一致しない:
|
完全一致の辞書ルール(MATCHING_SCOPE_FULL_MATCH) |
アプリで、入力全体が既知のフレーズと一致する事前定義されたプロンプト オプション(UI のクイック返信ボタンや定型コマンドなど)を使用しており、追加のスクリーニングされていないテキストがフィルタをバイパスするのを防ぎたい場合。辞書照合の動作の詳細については、辞書ルールと正規表現ルールをご覧ください。 |
辞書に「 一致:
一致しない:
|
部分一致の正規表現ルール(MATCHING_SCOPE_PARTIAL_MATCH) |
大きなプロンプトやレスポンス内の構造化されたパターン、動的識別子、特定の動詞と名詞の組み合わせを除外する必要があります。詳細については、正規表現の除外パターンの例をご覧ください。 |
正規表現パターン:
一致:
一致しない:
|
完全一致の正規表現ルール(MATCHING_SCOPE_FULL_MATCH) |
入力ペイロード全体が厳密な構造形式(自動テスト識別子や構造化コマンドなど)に従っている。 |
正規表現パターン:
一致:
一致しない:
|
リージョン エンドポイントまたはマルチリージョン エンドポイントを使用する
Model Armor テンプレートを使用する場合は、テンプレートのロケーションと一致するリージョンまたはマルチリージョン エンドポイント(modelarmor.LOCATION.rep.googleapis.com)を使用する必要があります。
グローバル エンドポイント(modelarmor.googleapis.com)は、Model Armor テンプレートの管理や、プロンプトとレスポンスのサニタイズをサポートしていません。
始める前に
始める前に、次のタスクを完了します。
必要な権限を取得する
Model Armor テンプレートで除外ルールを構成するために必要な権限を取得するには、Model Armor テンプレートを含む Model Armor プロジェクトに対する Model Armor 管理者 (roles/modelarmor.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
API を有効にする
Model Armor を使用するには、Model Armor API を有効にする必要があります。
コンソール
Model Armor API が有効になっていない場合は、有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。Model Armor を有効にするプロジェクトを選択します。
gcloud
始める前に、Google Cloud CLI で Model Armor API を使用して、次の処理を行います。
Google Cloud コンソールで Cloud Shell をアクティブにします。
Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
Model Armor API が有効になっていない場合は、有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。gcloud services enable modelarmor.googleapis.com
gcloud CLI を使用して API エンドポイントのオーバーライドを設定する
この手順は、Model Armor で gcloud CLI を使用し、デフォルトの us マルチリージョン以外のリージョンまたはマルチリージョンを使用する場合にのみ必要です。gcloud CLI がリクエストを Model Armor サービスに正しく転送するように、API エンドポイントのオーバーライドを手動で設定する必要があります。
次のコマンドを実行して、Model Armor サービスの API エンドポイントを設定します。
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"
LOCATION は、Model Armor を使用するリージョンまたはマルチリージョンに置き換えます。
除外ルールの仕組み
除外ルールは、Model Armor API を使用して構成します。
辞書ルールと正規表現ルール
Model Armor テンプレート内では、次の 2 種類の除外ルールを定義できます。
- 辞書ルール: 除外する単語やフレーズのリスト(
wordList、辞書あたり最大 128 KB)を指定します。辞書には少なくとも 1 つのフレーズを含める必要があり、各フレーズには少なくとも 2 つの文字または数字を含める必要があります。辞書での照合は次のように機能します。- 大文字と小文字の区別なし: 辞書の単語やフレーズでは大文字と小文字が区別されません。
- 英数字以外の文字: 一致するものをスキャンするときに、Unicode の基本多言語面の文字と数字以外のすべての文字が空白文字に置き換えられます。たとえば、辞書フレーズ
Sam Johnsonは、sam johnson、Sam, Johnson、Sam (Johnson)と一致します。文字や数字以外の文字を多く含む辞書フレーズは、それらの文字が空白文字として扱われるため、予期しない一致が生じる可能性があります。 - 文字の境界: 一致する文字の周囲の文字は、辞書内の単語の隣接する文字とは異なる文字タイプである必要があります。文字は文字以外の文字に隣接し、数字は数字以外の文字に隣接している必要があります。たとえば、辞書内の単語
jenはjen123の最初の 3 文字と一致しますが、jenniferとは一致しません。
- 正規表現ルール: 一致させて除外する正規表現パターン(最大 1,000 文字)を指定します。正規表現のマッチングでは、デフォルトで大文字と小文字が区別されます。大文字と小文字を区別しない一致を行うには、パターンに
(?i)フラグを含めます。たとえば、(?i)kill process [0-9]+はkill process 1234とKill Process 1234の両方に一致します。
マッチングの仕組み
各除外ルールは matchingScope フィールドをサポートしています。このフィールドでは、Model Armor が入力コンテンツをルールと照合する方法を指定します。
- 部分一致(
MATCHING_SCOPE_PARTIAL_MATCH、デフォルト):- 辞書ルール: 辞書内の単語またはフレーズが入力コンテンツ内の部分文字列と一致する場合に一致します。これは、辞書の文字境界ルールに従います。たとえば、辞書フレーズ
ignore empty rowsはignore empty rows、ignore EMPTY-rows、Please ignore empty rows and summarize this tableと一致しますが、ignore rowsやignore the empty rowsとは一致しません。 - 正規表現ルール: 入力コンテンツ内の部分文字列が正規表現パターンと一致すると、一致します。
- 辞書ルール: 辞書内の単語またはフレーズが入力コンテンツ内の部分文字列と一致する場合に一致します。これは、辞書の文字境界ルールに従います。たとえば、辞書フレーズ
- 完全一致(
MATCHING_SCOPE_FULL_MATCH):- 辞書ルール: 辞書のエントリが入力コンテンツ全体をカバーしている場合にのみ一致します。たとえば、辞書フレーズ
ignore empty rowsはignore empty rowsとignore EMPTY-rowsに一致しますが、please ignore empty rowsやignore rowsには一致しません。 - 正規表現ルール: 正規表現パターンが入力コンテンツ全体と一致する場合にのみ一致します。
- 辞書ルール: 辞書のエントリが入力コンテンツ全体をカバーしている場合にのみ一致します。たとえば、辞書フレーズ
サニタイズ中の除外ルールのオーバーライド
テンプレートに除外ルールが含まれている場合、Model Armor は、プロンプト インジェクションとジェイルブレイクの検出(PROMPT_INJECTION_AND_JAILBREAK)または責任ある AI(RESPONSIBLE_AI)フィルタが潜在的な一致を特定するたびに、プロンプトとモデルのレスポンスのサニタイズ中にこれらのルールを評価します。
- ルールが入力と一致する: 除外ルールが部分文字列(
MATCHING_SCOPE_PARTIAL_MATCH、デフォルト)または入力全体(MATCHING_SCOPE_FULL_MATCH)と一致する場合、Model Armor はmatchStateをオーバーライドして、入力内の個々のフレーズやスパンを除外するのではなく、その サポートされているフィルタタイプ(RESPONSIBLE_AIのすべての責任ある AI 安全性カテゴリを含む)全体に対してNO_MATCH_FOUNDに設定します。他の有効なフィルタで違反が検出されない場合、filterMatchStateはNO_MATCH_FOUNDを返します。除外ルールがフィルタmatchStateをオーバーライドする場合、Model Armor は Cloud Logging にインジケーターを記録したり、サニタイズ レスポンスにシグナルを含めたりしません。 - ルールが入力全体(
MATCHING_SCOPE_FULL_MATCH)と一致しない: 入力に構成されたフレーズまたはパターンを超えるテキストが含まれている場合、ルールは一致せず、フィルタはMATCH_FOUNDを保持します。 - 入力が 0.5 MB を超える: 除外ルールは、入力テキストの最初の 0.5 MB のみを評価します。入力が 0.5 MB を超え、フィルタが最初にスキャンされた部分の外で一致を検出した場合、フィルタは
EXECUTION_SKIPPEDを返します。messageItemsの値とペイロードの上限の詳細については、除外ルールのシステム上限をご覧ください。
除外ルールを使用してプロンプトとモデル レスポンスをサニタイズする例については、除外ルールを使用してプロンプトをサニタイズすると除外ルールを使用してレスポンスをサニタイズするをご覧ください。
考慮事項
除外ルールを構成する際は、次の点を考慮してください。
- 除外ルールは、定義したテンプレートにのみ適用されます。除外ルールをテンプレート間で共有することはできません。
- サポートされているフィルタタイプの除外ルールを構成できるのは、そのフィルタがテンプレートで有効になっている場合のみです。プロンプト インジェクションとジェイルブレイクの検出(
PROMPT_INJECTION_AND_JAILBREAK)の場合、piAndJailbreakFilterSettingsでfilterEnforcementをENABLEDに設定します。責任ある AI の安全フィルタ(RESPONSIBLE_AI)を有効にするには、raiSettings.raiFiltersで 1 つ以上の責任ある AI の安全カテゴリを構成します。 - Model Armor は、ストリーミング API またはフロア設定の除外ルールをサポートしていません。
- Model Armor は、非識別化や翻訳などのテキスト変換を行う前に、未加工の入力テキストに対して除外ルールを評価します。除外ルールでは、多言語検出や自動翻訳はサポートされていません。複数の言語のコンテンツを除外するには、ターゲット言語ごとに言語固有のフレーズまたは正規表現パターンを追加します。
- 除外ルールでは、ラテン文字以外の言語とマルチバイト UTF-8 文字のサポートが制限されています。特に、結合文字(インド文字など)を使用するスクリプトや、単語間にスペースがないスクリプト(中国語や日本語など)では、辞書ルール(
wordList)が期待どおりに一致しないことがあります。完全一致ルール(MATCHING_SCOPE_FULL_MATCH)は、マルチバイト UTF-8 文字を含む入力と一致しません。ラテン文字以外の文字やマルチバイト文字を含む入力を除外する場合は、MATCHING_SCOPE_PARTIAL_MATCHを使用して正規表現ルール(regex)を使用します。 - 除外ルールにはシステムの上限が適用されます。詳細については、除外ルールのシステム上限をご覧ください。
除外ルールを含むテンプレートを作成する
除外ルールを含むテンプレートを作成するには、POST リクエストで filterConfig 内に filterRuleSettings オブジェクトを含めます。
次の例では、プロンプト インジェクションとジェイルブレイクの検出、責任ある AI の安全フィルタを有効にするテンプレートを作成し、部分一致(MATCHING_SCOPE_PARTIAL_MATCH)で 2 つの除外ルールを構成します。
- プロンプト インジェクションとジェイルブレイクの検出(
PROMPT_INJECTION_AND_JAILBREAK): 辞書ルールを使用して、ignore case when sorting this listやignore empty rowsなどの指定されたフレーズを含む入力を、プロンプト インジェクションとジェイルブレイクの検出から除外します。 - 責任ある AI(
RESPONSIBLE_AI): 正規表現ルールを使用して、(?i)kill process [0-9]+などの指定されたパターンに一致する入力を責任ある AI の安全性検出から除外します。
export TEMPLATE_WITH_EXCLUSIONS='{
"filterConfig": {
"piAndJailbreakFilterSettings": {
"filterEnforcement": "ENABLED",
"confidenceLevel": "LOW_AND_ABOVE"
},
"raiSettings": {
"raiFilters": [
{
"filterType": "DANGEROUS",
"confidenceLevel": "LOW_AND_ABOVE"
},
{
"filterType": "HARASSMENT",
"confidenceLevel": "LOW_AND_ABOVE"
},
{
"filterType": "HATE_SPEECH",
"confidenceLevel": "LOW_AND_ABOVE"
},
{
"filterType": "SEXUALLY_EXPLICIT",
"confidenceLevel": "LOW_AND_ABOVE"
}
]
},
"filterRuleSettings": {
"ruleSets": [
{
"filterTypes": [
"PROMPT_INJECTION_AND_JAILBREAK"
],
"rules": [
{
"exclusionRule": {
"dictionary": {
"wordList": {
"words": [
"EXCLUDED_PHRASE_1",
"EXCLUDED_PHRASE_2"
]
}
},
"matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
}
}
]
},
{
"filterTypes": [
"RESPONSIBLE_AI"
],
"rules": [
{
"exclusionRule": {
"regex": {
"pattern": "EXCLUDED_REGEX_PATTERN"
},
"matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
}
}
]
}
]
}
}
}'
curl -X POST \
-d "$TEMPLATE_WITH_EXCLUSIONS" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates?template_id=TEMPLATE_ID"
次のように置き換えます。
EXCLUDED_PHRASE_1とEXCLUDED_PHRASE_2: プロンプト インジェクションとジェイルブレイクの検出から除外する辞書の単語またはフレーズ(ignore case when sorting this listやignore empty rowsなど)。EXCLUDED_REGEX_PATTERN: 責任ある AI の安全性検出から除外する正規表現パターン(例:(?i)kill process [0-9]+)。PROJECT_ID: テンプレートが属するプロジェクトの ID。LOCATION: テンプレートのロケーション。TEMPLATE_ID: テンプレートの ID。
このコマンドは、次のようなレスポンスを返します。
{
"filterConfig": {
"raiSettings": {
"raiFilters": [
{
"filterType": "DANGEROUS",
"confidenceLevel": "LOW_AND_ABOVE"
},
{
"filterType": "HARASSMENT",
"confidenceLevel": "LOW_AND_ABOVE"
},
{
"filterType": "HATE_SPEECH",
"confidenceLevel": "LOW_AND_ABOVE"
},
{
"filterType": "SEXUALLY_EXPLICIT",
"confidenceLevel": "LOW_AND_ABOVE"
}
]
},
"piAndJailbreakFilterSettings": {
"filterEnforcement": "ENABLED",
"confidenceLevel": "LOW_AND_ABOVE"
},
"filterRuleSettings": {
"ruleSets": [
{
"filterTypes": [
"PROMPT_INJECTION_AND_JAILBREAK"
],
"rules": [
{
"exclusionRule": {
"dictionary": {
"wordList": {
"words": [
"ignore case when sorting this list",
"ignore empty rows"
]
}
},
"matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
}
}
]
},
{
"filterTypes": [
"RESPONSIBLE_AI"
],
"rules": [
{
"exclusionRule": {
"regex": {
"pattern": "(?i)kill process [0-9]+"
},
"matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
}
}
]
}
]
}
},
"templateMetadata": {
"dataResidencyCompliant": true
}
}
テンプレートの除外ルールを更新する
既存のテンプレートの除外ルールを更新するには、updateMask を filterConfig.filterRuleSettings に設定して PATCH リクエストを送信します。更新によって filterRuleSettings フィールド全体が置き換えられるため、変更内容とともに保持するすべてのルールを含めます。
次の例では、前の例の除外ルールを更新し、PROMPT_INJECTION_AND_JAILBREAK ルールセットに正規表現ルールを追加して、RESPONSIBLE_AI ルールセットを削除します。
export EXCLUSION_RULES_UPDATE='{
"filterConfig": {
"filterRuleSettings": {
"ruleSets": [
{
"filterTypes": [
"PROMPT_INJECTION_AND_JAILBREAK"
],
"rules": [
{
"exclusionRule": {
"dictionary": {
"wordList": {
"words": [
"EXCLUDED_PHRASE_1",
"EXCLUDED_PHRASE_2"
]
}
},
"matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
}
},
{
"exclusionRule": {
"regex": {
"pattern": "EXCLUDED_REGEX_PATTERN"
},
"matchingScope": "MATCHING_SCOPE_FULL_MATCH"
}
}
]
}
]
}
}
}'
curl -X PATCH \
-d "$EXCLUSION_RULES_UPDATE" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID?updateMask=filterConfig.filterRuleSettings"
次のように置き換えます。
EXCLUDED_PHRASE_1とEXCLUDED_PHRASE_2: プロンプト インジェクションとジェイルブレイクの検出から除外する辞書の単語またはフレーズ(ignore case when sorting this listやignore empty rowsなど)。EXCLUDED_REGEX_PATTERN: プロンプト インジェクションとジェイルブレイクの検出から除外する正規表現パターン(例:(?i)\\b(?:ignore\\s+(?:the\\s+)?(?:emails?|spams?|warnings?|drafts?|typos?|duplicates?|noise))\\b)。PROJECT_ID: テンプレートが属するプロジェクトの ID。LOCATION: テンプレートのロケーション。TEMPLATE_ID: テンプレートの ID。
正規表現の除外パターンの例
正規表現の除外ルールを作成する場合は、パターンを特定のドメイン用語またはターゲット名詞にスコープ設定して、Model Armor がセキュリティや安全性の違反を無視することなく、既知の誤検知を除外するようにします。JSON リクエスト本文("pattern")内で正規表現パターンを渡す場合は、各バックスラッシュを 2 つ目のバックスラッシュでエスケープします(たとえば、\\b と \\s を使用します)。
プロンプト インジェクションとジェイルブレイクの検出の例
ignore、disregard、bypass、override などの命令形動詞は、敵対的なプロンプト インジェクションと、メールのトリアージ、データ形式設定、エラー処理、システム構成に関する正当な指示の両方で頻繁に使用されます。広範なカテゴリのプロンプトを除外しないようにするには、単語境界(\\b)、キャプチャしないグループ((?:...))、大文字と小文字を区別しないフラグ((?i))を MATCHING_SCOPE_PARTIAL_MATCH と組み合わせて、正規表現を特定のオペレーション ターゲット名詞に固定します。
次の表に、一般的なプロンプト インジェクションとジェイルブレイクの誤検出シナリオの例として、部分一致の正規表現パターン(バックスラッシュは JSON エスケープ)とプロンプトの例を示します。
| 手順のカテゴリ | トリガー語句 | 誤検出のシナリオ | 部分一致の正規表現パターンの例 | サンプル プロンプト |
|---|---|---|---|---|
| コンテンツのトリアージとフィルタリング | ignore、disregard |
メールのトリアージ、エラー処理、下書きの確認 |
(?i)\\b(?:ignore\\s+(?:the\\s+)?(?:emails?|spams?|warnings?|drafts?|typos?|duplicates?|noise))\\b
|
Summarize my inbox and ignore the emails from the marketing vendor.
|
責任ある AI の安全フィルタの例
技術ドキュメント、システム管理コマンド、一般的なイディオムには、責任ある AI の安全性カテゴリと重複する単語が含まれていることがよくあります。より大きなプロンプトやレスポンスで誤検出を軽減するには、単語境界(\\b)、キャプチャしないグループ((?:...))、大文字と小文字を区別しないフラグ((?i))を MATCHING_SCOPE_PARTIAL_MATCH と組み合わせます。
次の表に、一般的な責任ある AI の誤検出シナリオの正規表現パターン(JSON エスケープされたバックスラッシュを含む)とプロンプトの例を示します。
| リスクカテゴリ | トリガー語句 | 誤検出のシナリオ | 部分一致の正規表現パターンの例 | サンプル プロンプト |
|---|---|---|---|---|
| 暴力、危害 | kill |
プロセスの終了、電気スイッチまたは暖房換気空調システム スイッチ、一般的なイディオム |
(?i)\\b(?:kill\\s+(?:-9|all|process(?:es)?|switch(?:es)?|jobs?|pods?|sessions?|bill|lights?)|time\\s+to\\s+kill|dressed\\s+to\\s+kill)\\b
|
Please kill all pods in the namespace. |
| 有害な表現や攻撃的な表現 | abort、terminate |
データベース トランザクション、ミッションのライフサイクル、雇用または契約条件 |
(?i)\\b(?:abort\\s+(?:transactions?|missions?|requests?|connections?|retry|retries)|terminate\\s+(?:contracts?|sessions?|threads?|instances?|connections?))\\b
|
Abort retry. |
| ドメイン用語の部分文字列一致 | 重複する文字部分文字列 | 学術用語、植物学、鳥類学、航空、固有名詞 |
(?i)\\b(?:class(?:room|ic)?|assess(?:ment)?|associate|passive|peacock|cockpit|cocktail|dickens)\\b
|
I love reading Dickens. |
| 武器または爆発物 | bomb、blast、detonate |
バイオインフォマティクス、エンターテイメントのイディオム、産業機器、清掃 |
(?i)\\b(?:blast\\s+(?:search|alignment|radius|furnace)|box\\s+office\\s+bomb|had\\s+a\\s+blast)\\b
|
Run a blast search on the genetic sequence. |
除外ルールの構成に関するベスト プラクティス
テンプレートのセキュリティ ポスチャーを弱めることなく、誤検出を最小限に抑えるには、次のベスト プラクティスに従ってください。
- 特定のコンテキストにルールを絞り込む: 単一の動詞や広範な用語(
ignore、kill、abortなど)を除外したり、制約のないワイルドカード(.*ignore.*など)を使用したりしないでください。MATCHING_SCOPE_PARTIAL_MATCHは、部分文字列が一致するたびにフィルタ全体でmatchStateからNO_MATCH_FOUNDをオーバーライドするため、ルールが広すぎると、同じプロンプトまたはレスポンスの他の場所で発生した違反が隠蔽される可能性があります。トリガー動詞は必ず特定のターゲット名詞(ignore case when sorting this listや(?i)kill process [0-9]+など)と組み合わせてください。 - 単語境界を使用してパターンを統合する: 正規表現ルールでは、単語境界(
\b)を使用して、関係のない単語内の部分文字列が誤って一致しないようにします。キャプチャ グループ以外のグループ((?:...))と代替(|)を使用して、関連するフレーズを 1 つの正規表現に統合し、ルールセットあたりのルール数のシステム上限である 10 個を超えないようにします。 - 予測可能な入力には
MATCHING_SCOPE_FULL_MATCHを優先する: 事前定義された UI プロンプト、定型コマンド、自動テスト ペイロードを除外する場合は、matchingScopeをMATCHING_SCOPE_FULL_MATCHに設定します(または、^と$で正規表現をアンカーします)。完全一致のスコープ設定により、ユーザーが除外されたフレーズに敵対的な指示を追加して検出を回避することを防ぐことができます。 - 未加工の変換されていないテキストのルールを作成する: Model Armor は、匿名化または変換の前に除外ルールを評価します。パターンが元の形式と一致していることを確認し、アプリケーションがサポートする言語ごとに言語固有のフレーズまたは正規表現パターンを追加します。
- フィルタのアップグレード後に一時ルールを確認して廃止する: テンプレートを新しいフィルタ バージョンにアップグレードしたら、誤検出のテストケースを再評価し、更新された検出モデルで解決された除外ルールを削除します。
次のステップ
- 除外ルールを使用してプロンプトをサニタイズし、モデル レスポンスをサニタイズする方法の例をご覧ください。
- 除外ルールのシステム上限を確認します。
- Model Armor テンプレートを作成して管理する方法を確認する。