Model Armor 与 Vertex AI 的集成

Model Armor 可以使用下限设置使用模板直接集成到 Vertex AI 中。Model Armor 与 Vertex AI 相集成,可过滤发送到 Gemini 模型的请求和从 Gemini 模型收到的回答。它会检查或阻止违反最低限价设置的流量。

Model Armor 可为 generateContent 方法提供 Vertex AI 中的 Gemini API 中的提示和回答保护。您需要启用 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 中发生错误。

    由于请求在没有提示和响应清理的情况下继续进行,因此所有这些实例偶尔可能会呈现未经筛查的提示或响应。