Model Armor は、フロア設定またはテンプレートを使用して、Vertex AI に直接統合できます。Model Armor は Vertex AI と統合され、Gemini モデルに送信されるリクエストと Gemini モデルから受信されるレスポンスの両方をスクリーニングします。フロア設定に違反するトラフィックを検査またはブロックします。
Model Armor は、Vertex AI の Gemini API 内で generateContent メソッドのプロンプトとレスポンスを保護します。プロンプトとレスポンスのサニタイズ結果を可視化するには、Cloud Logging を有効にする必要があります。
始める前に
Model Armor ユーザーに Vertex AI サービス アカウントに対する権限を付与します。
gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com' --role='roles/modelarmor.user'
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。PROJECT_NUMBER: Google Cloud プロジェクトの番号。
フロア設定を構成する
フロア設定を使用して、Model Armor テンプレートの最小検出しきい値を構成します。これらの設定により、新規および変更済みのテンプレートがすべてフロア設定の要件を満たしていることを確認します。
Model Armor と Vertex AI の統合を有効にするには、API または Google Cloud コンソールを使用して、プロジェクト レベルでのみフロア設定を行うことができます。
フロア設定を構成するには、フロア設定を構成するをご覧ください。
Vertex AI との統合でフロア設定を構成するには、次のコマンドを実行します。
curl -X PATCH \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -d '{"filterConfig" : {}, "integratedServices": "AI_PLATFORM", "aiPlatformFloorSetting":{"inspect_only":true, "enableCloudLogging":true}}' \ "https://modelarmor.googleapis.com/v1/projects/PROJECT_ID/locations/global/floorSetting"
PROJECT_ID は、フロア設定のプロジェクトの ID に置き換えます。
フロア設定を構成して Vertex AI サニタイズを有効にすると、Model Armor は、指定されたフィルタ設定を使用して、プロジェクトの Gemini エンドポイントに対するすべての generateContent API 呼び出しをサニタイズします。
次のコードサンプルは、generateContent メソッドの使用方法を示しています。
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-2.0-flash-001:generateContent" -d '{ "contents": [ { "role": "user", "parts": [ { "text": "" } ] } ] , "generationConfig": { "responseModalities": ["TEXT"] ,"temperature": 0.2 ,"maxOutputTokens": 1024 ,"topP": 0.8 } }'
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。LOCATION: Gemini エンドポイントの Google Cloud ロケーション。サポートされているロケーションについては、Model Armor API のロケーションをご覧ください。
次のコードサンプルは、generateContent メソッドからのレスポンスを示しています。
{ "promptFeedback": { "blockReason": "MODEL_ARMOR", "blockReasonMessage": "Blocked by Floor Setting. The prompt violated Responsible AI Safety settings (Harassment, Dangerous), Prompt Injection and Jailbreak filters." }, "usageMetadata": { "trafficType": "ON_DEMAND" }, "modelVersion": "gemini-2.0-flash-001", "createTime": "2025-03-26T13:14:36.961184Z", "responseId": "vP3jZ6DVOqLKnvgPqZL-8Ao" }
フロア設定の適用タイプを定義する
Model Armor が検出を処理する方法を構成するには、適用タイプを設定します。次の例は、Inspect and block 適用タイプを使用したフロア設定の構成を示しています。
export FLOOR_SETTING='{ "filter_config": { "rai_settings": { "rai_filters": { "filter_type": "HATE_SPEECH", "confidence_level": "LOW_AND_ABOVE" }, "rai_filters": { "filter_type": "DANGEROUS", "confidence_level": "LOW_AND_ABOVE" }, "rai_filters": { "filter_type": "SEXUALLY_EXPLICIT", "confidence_level": "LOW_AND_ABOVE" }, "rai_filters": { "filter_type": "HARASSMENT", "confidence_level": "LOW_AND_ABOVE" } }, "sdpSettings": { "basicConfig": { "filterEnforcement": "ENABLED" } }, "piAndJailbreakFilterSettings": { "filterEnforcement": "ENABLED", "confidenceLevel": "LOW_AND_ABOVE" }, "maliciousUriFilterSettings": { "filterEnforcement": "ENABLED" } }, "integratedServices": [ "AI_PLATFORM" ], "aiPlatformFloorSetting": { "inspectAndBlock": true, "enableCloudLogging": true }, "enable_floor_setting_enforcement": "true" }' curl -X POST \ -d "$FLOOR_SETTING" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://modelarmor.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/floorSetting"
次のように置き換えます。
PROJECT_ID: フロア設定のプロジェクトの ID。LOCATION: フロア設定のロケーション。
Model Armor テンプレートを構成する
Model Armor テンプレートを使用して、Model Armor を Vertex AI と統合することもできます。テンプレートを使用すると、Model Armor がプロンプトとレスポンスをスクリーニングする方法を構成し、セキュリティ フィルタの構成を定義できます。
まず、テンプレートを作成し、これらのテンプレートを Gemini の generateContent メソッドで使用する必要があります。テンプレートの詳細については、Model Armor テンプレートの作成と管理をご覧ください。
Model Armor テンプレートを構成したら、generateContent メソッドを使用して Gemini API を呼び出すときに、テンプレート ID をパラメータとして渡します。Vertex AI は、リクエストを Model Armor に転送して処理します。
次のコードサンプルは、generateContent メソッドへのリクエストを示しています。
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/gemini-2.0-flash-001:generateContent" -d '{ "contents": [ { "role": "user", "parts": [ { "text": "" } ] } ] , "generationConfig": { "responseModalities": ["TEXT"] ,"temperature": 0.2 ,"maxOutputTokens": 1024 ,"topP": 0.8 }, "model_armor_config": { "prompt_template_name": "projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID", "response_template_name": "projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID" } }'
次のように置き換えます。
PROJECT_ID: Google Cloud プロジェクト ID。LOCATION: Gemini エンドポイントの Google Cloud ロケーション。サポートされているロケーションはus-central1、us-east4、us-west1、europe-west4です。TEMPLATE_ID: Model Armor テンプレート ID。
次のコードサンプルは、generateContent メソッドからのレスポンスを示しています。
{ "promptFeedback": { "blockReason": "MODEL_ARMOR", "blockReasonMessage": "Blocked by Floor Setting. The prompt violated Responsible AI Safety settings (Harassment, Dangerous), Prompt Injection and Jailbreak filters." }, "usageMetadata": { "trafficType": "ON_DEMAND" }, "modelVersion": "gemini-2.0-flash-001", "createTime": "2025-03-26T13:14:36.961184Z", "responseId": "vP3jZ6DVOqLKnvgPqZL-8Ao" }
考慮事項
Model Armor を Vertex AI と統合する場合は、次の点を考慮してください。
- 匿名化テンプレートの Sensitive Data Protection の削除はサポートされていません。
- ドキュメントを含むプロンプトとレスポンスのサニタイズはサポートされていません。
Vertex AI は、次の条件で Model Armor のサニタイズ ステップをスキップし、リクエストの処理を続行します。
- Model Armor は、Vertex AI が存在するリージョンでは使用できません。
- Model Armor に一時的にアクセスできません。
- Model Armor 内でエラーが発生します。
これらのインスタンスでは、プロンプトとレスポンスのサニタイズなしでリクエストが続行されるため、スクリーニングされていないプロンプトやレスポンスが公開されることがあります。