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:
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 de la planta.
Después de configurar los parámetros de configuración del nivel 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 piso con el tipo de aplicación 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"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto para la configuración del piso.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 con Vertex AI a través de plantillas de Model Armor. Las plantillas te permiten configurar cómo Model Armor examina las instrucciones y las respuestas, y definen las configuraciones 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 realices una llamada 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: El Google Cloud ID del proyectoLOCATION: Es la Google Cloud ubicación del extremo de Gemini. Las ubicaciones admitidas sonus-central1,us-east4,us-west1yeurope-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.