Model Armor 與 Vertex AI 整合

您可以透過底層設定範本,將 Model Armor 直接整合至 Vertex AI。Model Armor 會與 Vertex AI 整合,篩選傳送至 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-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"
}

注意事項

將 Model Armor 與 Vertex AI 整合時,請注意下列事項:

  • 系統不支援對去識別範本進行 Sensitive Data Protection 遮蓋處理。
  • 系統不支援清除含有文件的提示和回覆。
  • 在下列情況下,Vertex AI 會略過 Model Armor 清理步驟,並繼續處理要求:

    • 如果 Vertex AI 所在的區域不支援 Model Armor,
    • 暫時無法連線至 Model Armor。
    • Model Armor 發生錯誤。

    在這些情況下,由於系統會繼續處理要求,但不會對提示和回覆進行清理,因此有時可能會顯示未經篩選的提示或回覆。