このページでは、プロンプトとレスポンスをサニタイズする方法について詳しく説明します。Model Armor は、AI アプリケーションを保護するための一連のフィルタを提供します。Model Armor は、構成されたスクリーニングの信頼度に基づいてプロンプトとレスポンスをチェックします。
始める前に
テンプレートを作成するの手順に沿ってテンプレートを作成します。
必要な権限を取得する
プロンプトとレスポンスのサニタイズに必要な権限を取得するには、Model Armor に対する次の IAM ロールの付与を管理者に依頼してください。
-
Model Armor ユーザー(
roles/modelarmor.user
) -
Model Armor 閲覧者(
roles/modelarmor.viewer
)
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
API を有効にする
Model Armor を使用するには、Model Armor API を有効にする必要があります。
コンソール
Enable the Model Armor API.
Model Armor を有効にするプロジェクトを選択します。
gcloud
始める前に、Google Cloud CLI で Model Armor API を使用して、次の処理を行います。
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
次のコマンドを実行して、Model Armor サービスの API エンドポイントを設定します。
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"
LOCATION
は、Model Armor を使用するリージョンに置き換えます。SDP_PROJECT_ID
: 高度な Sensitive Data Protection テンプレートが属しているプロジェクトの ID。PROJECT_NUMBER
: テンプレートが属しているプロジェクトの番号。PROJECT_ID
: テンプレートのプロジェクトの ID。LOCATION
: テンプレートのロケーション。TEMPLATE_ID
: テンプレートの ID。PROJECT_ID
: テンプレートのプロジェクトの ID。LOCATION
: テンプレートのロケーション。TEMPLATE_ID
: テンプレートの ID。PROJECT_ID
: テンプレートが属するプロジェクトの ID。LOCATION
: テンプレートのロケーション。TEMPLATE_ID
: テンプレートの ID。FILE_TYPE
: 入力ファイルの形式。CREDIT_CARD_NUMBER
: 12~19 桁のクレジット カード番号。世界各地の決済取引に使用されます。FINANCIAL_ACCOUNT_NUMBER
: 特定の金融口座を指す番号(銀行口座番号や退職金口座番号など)。GCP_CREDENTIALS
: Google Cloud サービス アカウント認証情報。{api_client_lib_name} とサービス アカウントでの認証のために使用できる認証情報。GCP_API_KEY
: Google Cloud API キー。非公開のユーザーデータにアクセスする必要のない Google Cloud API を呼び出すときに使用される、暗号化された文字列です。PASSWORD
: 構成、コード、その他のテキスト内のクリアテキストのパスワード。US_SOCIAL_SECURITY_NUMBER
: 米国社会保障番号(SSN)は、米国市民、永住者、一時居住者に発行される 9 桁の番号です。この検出機能は、いずれかの数字グループがすべてゼロの番号(つまり 000-##-####、###-00-####、###-##-0000)、最初の数字グループが 666 の番号、9 で始まる番号には一致しません。US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
: 米国の個人納税者番号(ITIN)は、国税庁(IRS)によって発行される納税識別番号(TIN)の一種です。ITIN は、社会保障番号(Social Security Number: SSN)を取得できない特定の非居住者および居住外国人、その配偶者、および扶養家族にのみ利用可能な税処理番号です。TEMPLATE_ID
: テンプレートの ID。LOCATION
: テンプレートのロケーション。PROJECT_ID
: テンプレートが属するプロジェクトの ID。LOCATION
: テンプレートのロケーション。TEMPLATE_ID
: テンプレートの ID。PROJECT_ID
: テンプレートが属するプロジェクトの ID。LOCATION
: テンプレートのロケーション。TEMPLATE_ID
: テンプレートの ID。TEMPLATE_ID
: テンプレートの ID。LOCATION
: テンプレートのロケーション。PROJECT_ID
: テンプレートが属するプロジェクトの ID。LOCATION
: テンプレートのロケーション。TEMPLATE_ID
: テンプレートの ID。PROJECT_ID
: テンプレートが属するプロジェクトの ID。LOCATION
: テンプレートのロケーション。TEMPLATE_ID
: テンプレートの ID。PROJECT_ID
: テンプレートが属するプロジェクトの ID。LOCATION
: テンプレートのロケーション。TEMPLATE_ID
: テンプレートの ID。この例では、次のレスポンスが返されます。
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": { "rai": { "raiFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "raiFilterTypeResults": { "dangerous": { "confidenceLevel": "MEDIUM_AND_ABOVE", "matchState": "MATCH_FOUND" }, "sexually_explicit": { "matchState": "NO_MATCH_FOUND" }, "hate_speech": { "matchState": "NO_MATCH_FOUND" }, "harassment": { "matchState": "NO_MATCH_FOUND" } } } }, "pi_and_jailbreak": { "piAndJailbreakFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "csam": { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "malicious_uris": { "maliciousUriFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, } } }
PROJECT_ID
: テンプレートが属するプロジェクトの ID。LOCATION
: テンプレートのロケーション。TEMPLATE_ID
: テンプレートの ID。- Model Armor について確認する。
- Model Armor のフロア設定について確認する。
- Model Armor テンプレートについて確認する。
- Model Armor に関する問題のトラブルシューティングを行う。
次のコマンドを実行して、Model Armor を有効にします。
gcloud services enable modelarmor.googleapis.com --project=PROJECT_ID
PROJECT_ID
は、プロジェクトの ID に置き換えます。
Sensitive Data Protection テンプレートを含むプロジェクトで、テンプレートを作成するの Advanced Sensitive Data Protection ステップの一部として作成されたサービス エージェントに、DLP ユーザーロール(roles/dlp.user
)と DLP 読み取り者ロール(roles/dlp.reader
)を付与します。Sensitive Data Protection テンプレートが Model Armor テンプレートと同じプロジェクトにある場合は、この手順をスキップします。
gcloud projects add-iam-policy-binding SDP_PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-modelarmor.iam.gserviceaccount.com --role=roles/dlp.user gcloud projects add-iam-policy-binding SDP_PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-modelarmor.iam.gserviceaccount.com --role=roles/dlp.reader
次のように置き換えます。
プロンプトをサニタイズする
プロンプトをサニタイズして、悪意のある入力を防ぎ、安全で適切なプロンプトが LLM に送信されるようにします。
テキスト プロンプト
Model Armor は、テキストを分析し、さまざまなフィルタを適用して潜在的な脅威を特定して軽減することで、テキスト プロンプトをサニタイズします。
REST
Model Armor でテキスト プロンプトをサニタイズするには、次のコマンドを使用します。
curl -X POST \
-d '{"userPromptData":{"text":"[UNSAFE TEXT]"}}' \
-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:sanitizeUserPrompt"
次のように置き換えます。
これにより、次のレスポンスが返されます。MATCH_FOUND
は「危険」カテゴリに分類されます。
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": { "csam": { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "malicious_uris": { "maliciousUriFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "rai": { "raiFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "raiFilterTypeResults": { "sexually_explicit": { "matchState": "NO_MATCH_FOUND" }, "hate_speech": { "matchState": "NO_MATCH_FOUND" }, "harassment": { "matchState": "NO_MATCH_FOUND" }, "dangerous": { "matchState": "MATCH_FOUND" } } } }, "pi_and_jailbreak": { "piAndJailbreakFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND" } }, "sdp": { "sdpFilterResult": { "inspectResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } } } } } }
Go
このコードを実行するには、まず Go 開発環境を設定し、Model Armor Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Model Armor Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Model Armor Node.js SDK をインストールします。
PHP
このコードを実行するには、まず PHP 開発環境を設定し、Model Armor PHP SDK をインストールします。
Python
このコードを実行するには、Python 開発環境を設定し、Model Armor Python SDK をインストールします。
これにより、次のレスポンスが返されます。
sanitization_result { filter_match_state: MATCH_FOUND filter_results { key: "rai" value { rai_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND rai_filter_type_results { key: "dangerous" value { confidence_level: HIGH match_state: MATCH_FOUND } } } } } filter_results { key: "pi_and_jailbreak" value { pi_and_jailbreak_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND confidence_level: HIGH } } } filter_results { key: "malicious_uris" value { malicious_uri_filter_result { execution_state: EXECUTION_SUCCESS match_state: NO_MATCH_FOUND } } } filter_results { key: "csam" value { csam_filter_filter_result { execution_state: EXECUTION_SUCCESS match_state: NO_MATCH_FOUND } } } invocation_result: SUCCESS }
多言語検出が有効になっているテキスト プロンプトをサニタイズする
リクエストごとに enableMultiLanguageDetection
フラグを true
に設定して、リクエストごとに多言語検出を有効にします。必要に応じて、より正確な結果を得るためにソース言語を指定できます。ソース言語が指定されていない場合は、自動的に検出され、多言語サポートが提供されます。
次のコマンドを使用して、リクエスト レベルで多言語検出が有効になっている Model Armor でテキスト プロンプトをサニタイズします。
curl -X POST \ -d '{"userPromptData":{"text":"[UNSAFE TEXT]"}, "multiLanguageDetectionMetadata": { "enableMultiLanguageDetection": true , "sourceLanguage": "jp"}}' \ -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:sanitizeUserPrompt"
次のように置き換えます。
ファイルベースのプロンプト
ファイルに保存されているプロンプトをサニタイズするには、ファイルの内容を Base64 形式で指定します。Model Armor ではファイルタイプが自動的に検出されません。ファイル形式を示すには、byteDataType
フィールドを明示的に設定する必要があります。このフィールドがない場合や指定されていない場合、リクエストは失敗します。指定できる byteDataType
値は PLAINTEXT_UTF8
、PDF
、WORD_DOCUMENT
、EXCEL_DOCUMENT
、POWERPOINT_DOCUMENT
、TXT
、CSV
です。
REST
curl -X POST \ -d "$(jq -n \ --arg data "$(base64 -w 0 -i sample.pdf)" \ '{userPromptData: {byteItem: {byteDataType: "FILE_TYPE", byteData: $data}}}')" \ -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:sanitizeUserPrompt"
次のように置き換えます。
Go
このコードを実行するには、まず Go 開発環境を設定し、Model Armor Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Model Armor Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Model Armor Node.js SDK をインストールします。
PHP
このコードを実行するには、まず PHP 開発環境を設定し、Model Armor PHP SDK をインストールします。
Python
このコードを実行するには、Python 開発環境を設定し、Model Armor Python SDK をインストールします。
Sensitive Data Protection の基本構成
Model Armor は Sensitive Data Protection と統合され、個人情報の偶発的な公開を防ぎます。Sensitive Data Protection の基本の設定が有効になっているテンプレートを作成します。Sensitive Data Protection の基本を使用すると、Sensitive Data Protection の固定された infoType セットをスクリーニングできます。
次の Sensitive Data Protection の infoType は、すべてのリージョンのプロンプトでスキャンされます。
米国を拠点とするリージョンのプロンプトでは、次の追加の Sensitive Data Protection infoType がスキャンされます。
以下に、Sensitive Data Protection の基本の構成例を示します。
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --project=PROJECT_ID \ --basic-config-filter-enforcement=enabled
次のように置き換えます。
REST
export FILTER_CONFIG_SDP_BASIC='{ "filterConfig": { "sdpSettings": { "basicConfig": { "filterEnforcement": "ENABLED" } } } }' curl -X PATCH \ -d "$FILTER_CONFIG_SDP_BASIC" \ -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.sdpSettings.basicConfig.filterEnforcement"
次のように置き換えます。
Go
このコードを実行するには、まず Go 開発環境を設定し、Model Armor Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Model Armor Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Model Armor Node.js SDK をインストールします。
PHP
このコードを実行するには、まず PHP 開発環境を設定し、Model Armor PHP SDK をインストールします。
Python
このコードを実行するには、Python 開発環境を設定し、Model Armor Python SDK をインストールします。
作成したテンプレートを使用して、プロンプトをスクリーニングします。次に例を示します。
curl -X POST \ -d '{"userPromptData":{"text":"can you remember my ITIN : ###-##-####"}}' \ -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:sanitizeUserPrompt"
次のように置き換えます。
この例では、次のレスポンスが返されます。
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": [ { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, { "sdpFilterResult": { "inspectResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "findings": [ { "infoType": "US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER", "likelihood": "LIKELY", "location": { "byteRange": { "start": "26", "end": "37" }, "codepointRange": { "start": "26", "end": "37" } } } ] } } } ] } }
Sensitive Data Protection の詳細の構成
Model Armor は、Sensitive Data Protection の詳細の構成設定を使用して LLM プロンプトとレスポンスをスクリーニングします。これにより、Sensitive Data Protection の基本の設定で提供される infoType 以外の Sensitive Data Protection 機能を使用できます。
Model Armor で Sensitive Data Protection の詳細のフィルタを使用するには、Sensitive Data Protection テンプレートが Model Armor テンプレートのクラウド ロケーションと同じである必要があります。
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --advanced-config-inspect-template="path/to/template" \
次のように置き換えます。
REST
export FILTER_CONFIG_SDP_ADV='{ "filterConfig": { "sdpSettings": { "advancedConfig": { "deidentifyTemplate": "projects/PROJECT_ID/locations/LOCATION/deidentifyTemplates/deidentify-ip-address", "inspectTemplate": "projects/PROJECT_ID/locations/LOCATION/inspectTemplates/inspect-ip-address" } } } }' curl -X POST \ -d "$FILTER_CONFIG_SDP_ADV" \ -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.sdpSettings.advancedConfig"
次のように置き換えます。
この例では、次のレスポンスが返されます。
{ "name": "projects/PROJECT_ID/locations/LOCATION/templates/all-filters-test", "createTime": "2024-12-16T17:08:19.626693819Z", "updateTime": "2024-12-16T17:08:19.626693819Z", "filterConfig": { "sdpSettings": { "advancedConfig": { "deidentifyTemplate": "projects/PROJECT_ID/locations/LOCATION/deidentifyTemplates/deidentify-ip-address", "inspectTemplate": "projects/PROJECT_ID/locations/LOCATION/inspectTemplates/inspect-ip-address" } } } }
Go
このコードを実行するには、まず Go 開発環境を設定し、Model Armor Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Model Armor Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Model Armor Node.js SDK をインストールします。
PHP
このコードを実行するには、まず PHP 開発環境を設定し、Model Armor PHP SDK をインストールします。
Python
このコードを実行するには、Python 開発環境を設定し、Model Armor Python SDK をインストールします。
作成したテンプレートを使用して、プロンプトをスクリーニングします。次に例を示します。
curl -X POST \ -d '{"userPromptData":{"text":"is there anything malicious running on 1.1.1.1?"}}' \ -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:sanitizeUserPrompt"
次のように置き換えます。
この例では、次のレスポンスが返されます。
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": [ { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, { "sdpFilterResult": { "deidentifyResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "data": { "text": "is there anything malicious running on [IP_ADDRESS]?" }, "transformedBytes": "7", "infoTypes": ["IP_ADDRESS"] } } } ] } }
モデルのレスポンスをサニタイズする
LLM は有害なレスポンスを生成する可能性があります。アプリケーションで LLM を使用する際のリスクを軽減するには、レスポンスをサニタイズすることが重要です。
Model Armor でモデル レスポンスをサニタイズするコマンドの例を次に示します。
REST
curl -X POST \
-d '{"text":"IP address of the current network is ##.##.##.##"}' \
-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:sanitizeModelResponse"
次のように置き換えます。
Go
このコードを実行するには、まず Go 開発環境を設定し、Model Armor Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Model Armor Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Model Armor Node.js SDK をインストールします。
PHP
このコードを実行するには、まず PHP 開発環境を設定し、Model Armor PHP SDK をインストールします。
Python
このコードを実行するには、Python 開発環境を設定し、Model Armor Python SDK をインストールします。
多言語検出が有効になっているモデル レスポンスをサニタイズする
リクエストごとに enableMultiLanguageDetection
フラグを true
に設定して、レスポンスごとに多言語検出を有効にします。必要に応じて、より正確な結果を得るためにソース言語を指定できます。ソース言語が指定されていない場合は、自動的に検出され、多言語サポートが提供されます。
curl -X POST \ -d '{"userPromptData":{"text":"[UNSAFE TEXT]"}, "multiLanguageDetectionMetadata": { "enableMultiLanguageDetection": true , "sourceLanguage": "jp"}}' \ -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:sanitizeModelResponse"
次のように置き換えます。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-09-10 UTC。