Model Armor 与 Vertex AI 的集成

Model Armor 可以使用下限设置使用模板直接集成到 Vertex AI 中。将 Model Armor 集成到 Vertex AI 中后,您可以过滤发送到 Gemini 模型的请求和来自 Gemini 模型的回答,并检查或阻止违反下限设置阈值的请求或回答。Model Armor 可为 generateContent 方法提供 Vertex AI 中的 Gemini API 中的提示和回答保护。您需要启用 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"
}