Model Armor se puede integrar directamente en Vertex AI mediante ajustes de suelo o plantillas. Model Armor se integra con Vertex AI para analizar tanto las solicitudes enviadas a los modelos de Gemini como las respuestas recibidas de ellos. Inspecciona o bloquea el tráfico que infringe los ajustes mínimos.
Model Armor ofrece protección de peticiones y respuestas en la API de Gemini de Vertex AI para el método generateContent.
Debes habilitar Cloud Logging para ver los resultados de la anonimización de las peticiones y las respuestas.
Antes de empezar
Concede el 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'
Haz los cambios siguientes:
PROJECT_ID: tu ID de proyecto Google Cloud .PROJECT_NUMBER: tu número de proyecto Google Cloud .
Configurar los ajustes de límite mínimo
Los ajustes de precio mínimo se usan para configurar los umbrales de detección mínimos de las plantillas de Model Armor. Estos ajustes verifican que todas las plantillas nuevas y modificadas cumplan los requisitos de los ajustes de eCPM mínimo.
Para habilitar Model Armor y la integración con Vertex AI, solo puedes definir la configuración mínima a nivel de proyecto mediante la API o la Google Cloud consola.
Para configurar los ajustes de la planta, consulta Configurar los ajustes de la planta.
Para configurar los ajustes de planta 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"
Sustituye PROJECT_ID por el ID del proyecto de la configuración de la planta.
Después de configurar los ajustes de la planta para habilitar la anonimización de Vertex AI, Model Armor anonimiza todas las llamadas a la API generateContent a los endpoints de Gemini del proyecto con los ajustes de filtro especificados.
En el siguiente código de ejemplo 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 } }'
Haz los cambios siguientes:
PROJECT_ID: tu ID de proyecto Google Cloud .LOCATION: la Google Cloud ubicación del endpoint de Gemini. Para ver las ubicaciones admitidas, consulta Ubicaciones de la API Model Armor.
En el siguiente código de ejemplo 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" }
Definir el tipo de cumplimiento de los ajustes de planta
Para configurar cómo gestiona Model Armor las detecciones, define el tipo de aplicación.
En el ejemplo siguiente se muestra la configuración de los ajustes de planta con el tipo de 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"
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto de los ajustes de planta.LOCATION: la ubicación de los ajustes de planta.
Configurar plantillas de Model Armor
Model Armor también se puede integrar con Vertex AI mediante plantillas de Model Armor. Las plantillas te permiten configurar cómo analiza Model Armor las peticiones y las respuestas, y definen las configuraciones de los filtros de seguridad.
Primero debes crear plantillas y, después, usarlas con el método generateContent de Gemini. Para obtener más información sobre las plantillas, consulta Crear y gestionar plantillas de Model Armor.
Después de configurar la plantilla Model Armor, pasa el ID de la plantilla como parámetro al llamar a la API Gemini con el método generateContent. Vertex AI dirigirá la solicitud a Model Armor para que la procese.
En el siguiente ejemplo 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" } }'
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto. Google CloudLOCATION: la Google Cloud ubicación del endpoint de Gemini. Las ubicaciones admitidas sonus-central1,us-east4,us-west1yeurope-west4.TEMPLATE_ID: ID de plantilla de Model Armor.
En el siguiente código de ejemplo 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" }
Cuestiones importantes
Ten en cuenta lo siguiente al integrar Model Armor con Vertex AI:
- No se admite la redacción de Protección de Datos Sensibles en plantillas de desidentificación.
- No se admite la anonimización de peticiones y respuestas que contengan documentos.
Vertex AI omite el paso de saneamiento de Model Armor y sigue procesando la solicitud en las siguientes condiciones:
- Model Armor no está disponible en una región en la que se encuentre Vertex AI.
- No se puede acceder a Model Armor temporalmente.
- Se produce un error en Model Armor.
En todas estas situaciones, se pueden mostrar ocasionalmente peticiones o respuestas sin filtrar, ya que la solicitud continúa sin que se saneen las peticiones ni las respuestas.