Vertex AI との Model Armor の統合

Model Armor は、フロア設定またはテンプレートを使用して、Vertex AI に直接統合できます。Model Armor を Vertex AI に統合すると、Gemini モデルとの間で送受信されるリクエストとレスポンスをスクリーニングし、フロア設定のしきい値に違反しているリクエストやレスポンスを検査またはブロックできます。Model Armor は、Vertex AI の Gemini API 内で generateContent メソッドのプロンプトとレスポンスの保護を提供します。プロンプトとレスポンスのサニタイズ結果を可視化するには、Cloud Logging を有効にする必要があります。この統合でサポートされているロケーションは、us-central1us-east4us-west1europe-west4 です。プレビュー版の間は、この統合の使用に料金はかかりません。料金については、Model Armor の料金をご覧ください。

始める前に

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 テンプレートの最小検出しきい値を構成します。これらの設定により、新規および変更済みのテンプレートがすべてフロア ポリシーの要件を満たしていることを確認します。

フロアの設定を構成する前に、次の点を考慮してください。

  • フロア設定は、組織レベル、フォルダレベル、プロジェクト レベルで設定できます。ユーザー インターフェースは、プロジェクト レベルのフロア設定でのみ使用できます。組織レベルまたはフォルダレベルでフロア設定を行うには、API を使用する必要があります。
  • ユーザー インターフェースはプロジェクト レベルでのみ使用でき、組織レベルまたはフォルダレベルの設定を継承できます。

フロア設定を構成するには、フロア設定を構成するをご覧ください。

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 テンプレートを構成する

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-central1us-east4us-west1europe-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"
}