Integração do Model Armor com a Vertex AI

O Model Armor pode ser integrado diretamente à Vertex AI usando configurações de piso ou modelos. O Model Armor se integra à Vertex AI para examinar as solicitações enviadas e as respostas recebidas dos modelos do Gemini. Ele inspeciona ou bloqueia o tráfego que viola as configurações de preço mínimo.

O Model Armor oferece proteção de comandos e respostas na API Gemini na Vertex AI para o método generateContent. É necessário ativar o Cloud Logging para ter visibilidade dos resultados da higienização de comandos e respostas.

Antes de começar

Conceda à conta de serviço da Vertex AI a permissão de usuário do Model Armor.

gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com' --role='roles/modelarmor.user'
  

Substitua:

  • PROJECT_ID: o ID do projeto Google Cloud .
  • PROJECT_NUMBER: o número do projeto do Google Cloud .

Definir configurações mínimas

Você usa as configurações mínimas para configurar os limites básicos de detecção dos modelos do Model Armor. Essas configurações verificam se todos os modelos novos e modificados atendem aos requisitos das configurações mínimas.

Para ativar a integração do Model Armor e da Vertex AI, defina as configurações de limite mínimo apenas no nível do projeto usando a API ou o console Google Cloud .

Para configurar as opções de piso, consulte Definir configurações mínimas.

Para configurar as opções de piso com a integração da Vertex AI, execute o seguinte 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"

Substitua PROJECT_ID pelo ID do projeto das configurações de andar.

Depois de configurar as opções de restrição para ativar a limpeza da Vertex AI, o Model Armor limpa todas as chamadas da API generateContent para os endpoints do Gemini do projeto usando as configurações de filtro especificadas.

O exemplo de código a seguir mostra como usar o 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
}
}'

Substitua:

  • PROJECT_ID: o ID do projeto Google Cloud .
  • LOCATION: o Google Cloud local do endpoint do Gemini. Para locais compatíveis, consulte Locais da API Model Armor.

O exemplo de código a seguir mostra a resposta do 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 o tipo de aplicação para as configurações de piso

Para configurar como o Model Armor lida com as detecções, defina o tipo de aplicação. O exemplo a seguir mostra a configuração de restrições mínimas com o tipo de aplicação 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"

Substitua:

  • PROJECT_ID: o ID do projeto para as configurações de limite mínimo.
  • LOCATION: o local das configurações mínimas.

Configurar modelos do Model Armor

O Model Armor também pode ser integrado à Vertex AI usando modelos do Model Armor. Os modelos permitem configurar como o Model Armor examina comandos e respostas e definem configurações de filtro de segurança.

Primeiro, crie modelos e depois use-os com o método generateContent do Gemini. Para mais informações sobre modelos, consulte Criar e gerenciar modelos do Model Armor.

Depois de configurar o modelo do Model Armor, transmita o ID dele como um parâmetro ao fazer uma chamada para a API Gemini usando o método generateContent. A Vertex AI vai encaminhar a solicitação para o Model Armor para processamento.

O exemplo de código a seguir mostra a solicitação para o 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"
    }
}'

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o Google Cloud local do endpoint do Gemini. Os locais compatíveis são us-central1, us-east4, us-west1 e europe-west4.
  • TEMPLATE_ID: ID do modelo do Model Armor.

O exemplo de código a seguir mostra a resposta do 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"
}

Considerações

Considere o seguinte ao integrar o Model Armor à Vertex AI:

  • A remoção de dados sensíveis para o modelo de desidentificação não é compatível.
  • Não é possível higienizar comandos e respostas que contêm documentos.
  • A Vertex AI pula a etapa de limpeza do Model Armor e continua processando a solicitação nas seguintes condições:

    • O Model Armor não está disponível em uma região em que a Vertex AI está presente.
    • O Model Armor está temporariamente inacessível.
    • ocorrer um erro no Model Armor;

    Todas essas instâncias podem expor comandos ou respostas não filtrados porque a solicitação continua sem higienização de comandos e respostas.