Integración de Model Armor con Vertex AI

Model Armor se puede integrar directamente en Vertex AI con la configuración de nivel o con plantillas. Model Armor se integra en Vertex AI para filtrar las solicitudes enviadas a los modelos de Gemini y las respuestas recibidas de ellos. Inspecciona o bloquea el tráfico que incumple la configuración de precios mínimos.

Model Armor proporciona protección de instrucciones y respuestas dentro de la API de Gemini en Vertex AI para el método generateContent. Debes habilitar Cloud Logging para obtener visibilidad de los resultados de la sanitización de las instrucciones y las respuestas.

Antes de comenzar

Otorga permiso de usuario de Model Armor a la cuenta de servicio de 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'
  

Reemplaza lo siguiente:

  • PROJECT_ID: El ID de tu proyecto Google Cloud .
  • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud .

Configuración de límites

Usas la configuración de límites para establecer los umbrales de detección mínimos de las plantillas de Model Armor. Estos parámetros de configuración verifican que todas las plantillas nuevas y modificadas cumplan con los requisitos de configuración de límites.

Para habilitar Model Armor y la integración de Vertex AI, puedes establecer la configuración de nivel inferior solo a nivel del proyecto con la API o la consola de Google Cloud .

Para configurar los parámetros de límites, consulta Configurar los parámetros de límites.

Para configurar los ajustes de piso con la integración de Vertex AI, ejecuta el siguiente comando:

gcloud

gcloud model-armor floorsettings update \
  --full-uri=projects/PROJECT_ID/locations/global/floorSetting \
  --add-integrated-services=VERTEX_AI

De forma predeterminada, este comando habilita el modo de aplicación de INSPECT_ONLY. Para cambiar el modo a INSPECT_AND_BLOCK, ejecuta el siguiente comando:

gcloud model-armor floorsettings update \
  --full-uri=projects/PROJECT_ID/locations/global/floorSetting \
  --vertex-ai-enforcement-type=INSPECT_AND_BLOCK

Para quitar Vertex AI de los servicios integrados, ejecuta el siguiente comando:

gcloud model-armor floorsettings update \
  --full-uri=projects/PROJECT_ID/locations/global/floorSetting \
  --remove-integrated-services=VERTEX_AI

Para quitar todos los servicios integrados configurados de los parámetros de configuración del piso, usa el siguiente comando:

gcloud model-armor floorsettings update \
  --full-uri=projects/PROJECT_ID/locations/global/floorSetting \
  --clear-integrated-services

Reemplaza PROJECT_ID por el ID del proyecto para la configuración del piso.

REST

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"

Reemplaza PROJECT_ID por el ID del proyecto para la configuración del piso.

Después de configurar los parámetros del piso para habilitar el saneamiento de Vertex AI, Model Armor sanea todas las llamadas a la API de generateContent a los extremos de Gemini del proyecto con la configuración del filtro especificada.

En el siguiente muestra de código, se muestra cómo usar el método 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
}
}'

Reemplaza lo siguiente:

  • PROJECT_ID: El ID de tu proyecto Google Cloud .
  • LOCATION: Es la Google Cloud ubicación del extremo de Gemini. Para conocer las ubicaciones admitidas, consulta Ubicaciones de la API de Model Armor.

En el siguiente muestra de código, se muestra la respuesta del método 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"
}

Cómo definir el tipo de aplicación de la configuración de límites

Para configurar cómo Model Armor controla las detecciones, establece el tipo de aplicación. En el siguiente ejemplo, se muestra la configuración de los ajustes de la planta con el tipo de aplicación INSPECT_AND_BLOCK.

gcloud

gcloud model-armor floorsettings update \
  --full-uri=projects/modelarmor-api-test/locations/global/floorSetting \
  --vertex-ai-enforcement-type=INSPECT_AND_BLOCK

REST

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"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto para la configuración de pisos.
  • LOCATION: Es la ubicación de la configuración de límites o pisos.

Configura plantillas de Model Armor

Model Armor también se puede integrar en Vertex AI con plantillas de Model Armor. Las plantillas te permiten configurar cómo Model Armor examina las instrucciones y las respuestas, y definen la configuración de los filtros de seguridad.

Primero debes crear plantillas y, luego, usarlas con el método generateContent de Gemini. Para obtener más información sobre las plantillas, consulta Crea y administra plantillas de Model Armor.

Después de configurar la plantilla de Model Armor, pasa el ID de la plantilla como un parámetro cuando llames a la API de Gemini con el método generateContent. Vertex AI enrutará la solicitud a Model Armor para su procesamiento.

En el siguiente muestra de código, se muestra la solicitud al método 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"
    }
}'

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • LOCATION: Es la Google Cloud ubicación del extremo de Gemini. Las ubicaciones admitidas son us-central1, us-east4, us-west1 y europe-west4.
  • TEMPLATE_ID: Es el ID de la plantilla de Model Armor.

En el siguiente muestra de código, se muestra la respuesta del método 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"
}

Consideraciones

Ten en cuenta lo siguiente cuando integres Model Armor con Vertex AI:

  • No se admite la ocultación de Sensitive Data Protection para la plantilla de desidentificación.
  • No se admite la limpieza de instrucciones y respuestas que contienen documentos.
  • Vertex AI omite el paso de limpieza de Model Armor y continúa procesando la solicitud en las siguientes condiciones:

    • Model Armor no está disponible en una región en la que se encuentra Vertex AI.
    • No se puede acceder a Model Armor temporalmente.
    • Se produce un error en Model Armor.

    En todas estas instancias, ocasionalmente, se pueden exponer instrucciones o respuestas sin filtrar, ya que la solicitud continúa sin la sanitización de instrucciones y respuestas.