您可以透過底層設定或範本,將 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-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 清理步驟,並繼續處理要求:
- 如果 Vertex AI 所在的區域不支援 Model Armor,
- 暫時無法連線至 Model Armor。
- Model Armor 發生錯誤。
在這些情況下,由於系統會繼續處理要求,但不會對提示和回覆進行清理,因此有時可能會顯示未經篩選的提示或回覆。