Os modelos de IA generativa do Google, como o Gemini 1.5 Flash e o Gemini 1.5 Pro, foram criados para priorizar a segurança. No entanto, eles ainda podem gerar respostas prejudiciais, especialmente quando são explicitamente solicitados. Para aumentar ainda mais a segurança e minimizar o uso indevido, você pode configurar filtros de segurança para bloquear respostas potencialmente perigosas.
Esta página descreve cada um dos tipos de filtro de segurança e descreve os principais conceitos de segurança. Para filtros configuráveis, ele mostra como configurar os limites de bloqueio de cada categoria de dano para controlar com que frequência os comandos e respostas são bloqueados.
Os filtros de segurança funcionam como uma barreira, evitando resultados nocivos, mas não influenciam diretamente o comportamento do modelo. Para saber mais sobre a direção de modelos, consulte Instruções do sistema para segurança.
Comandos não seguros
A API Vertex AI Gemini fornece um dos seguintes códigos enum
para explicar o motivo da rejeição de um comando:
Enum | Tipo de filtro | Descrição |
---|---|---|
PROHIBITED_CONTENT | Filtro de segurança não configurável | A solicitação foi bloqueada porque foi sinalizada por conter conteúdo proibido, geralmente material de abuso sexual infantil. |
BLOCKED_REASON_UNSPECIFIED | N/A | O motivo para bloquear o comando não foi especificado. |
OUTROS | N/A | Esse tipo enumerado se refere a todos os outros motivos para bloquear um comando. A API Vertex AI Gemini não é compatível com todos os idiomas. Para uma lista de idiomas compatíveis, consulte Compatibilidade com idiomas do Gemini. |
Para saber mais, consulte BlockedReason.
Este é um exemplo de saída da API Vertex AI Gemini quando um comando é
bloqueado por conter PROHIBITED_CONTENT
:
{ "promptFeedback": { "blockReason": "PROHIBITED_CONTENT" }, "usageMetadata": { "promptTokenCount": 7, "totalTokenCount": 7 } }
Respostas não seguras
Os filtros a seguir podem detectar e bloquear respostas potencialmente não seguras:
- Filtros de segurança não configuráveis, que bloqueiam material de abuso sexual infantil (CSAM) e informações de identificação pessoal (PII).
- Filtros de segurança configuráveis, que bloqueiam conteúdo não seguro com base em uma lista de categorias de danos e os limites de bloqueio configurados pelo usuário. Você pode configurar limites de bloqueio para cada um desses danos com base no que é apropriado para seu caso de uso e negócios. Para saber mais, consulte Filtros de segurança configuráveis.
- Filtros de citação, que fornecem citações para o material de origem. Para saber mais, consulte Filtro de citação.
Um LLM gera respostas em unidades de texto chamadas tokens. Um modelo interrompe
a geração tokens porque ele chega a um ponto de parada natural ou
porque um dos filtros bloqueia a resposta. A API Vertex AI Gemini
fornece um dos códigos enum
a seguir para explicar por que a geração de token foi interrompida:
Enum | Tipo de filtro | Descrição |
---|---|---|
PARAR | N/A | Esse tipo enumerado indica que o modelo atingiu um ponto de parada natural ou a sequência de parada fornecida. |
MAX_TOKENS | N/A | A geração de tokens foi interrompida porque o modelo atingiu o número máximo de tokens especificado na solicitação. |
SEGURANÇA | Filtro de segurança configurável | A geração de tokens foi interrompida porque a resposta foi sinalizada por motivos de segurança. |
RECITATION | Filtro de citações | A geração de tokens foi interrompida devido a uma possível recitação. |
SPII | Filtro de segurança não configurável | A geração de tokens foi interrompida porque a resposta foi sinalizada por conteúdo com informações sensíveis de identificação pessoal (SPII). |
PROHIBITED_CONTENT | Filtro de segurança não configurável | A geração do token foi interrompida porque a resposta foi sinalizada por incluir conteúdo proibido, geralmente material de abuso sexual infantil. |
FINISH_REASON_UNSPECIFIED | N/A | O motivo da finalização não foi especificado. |
OUTROS | N/A | Esse tipo enumerado refere-se a todos os outros motivos que interrompem a geração de tokens. Observe que a geração de tokens não é compatível com todos os idiomas. Para uma lista de idiomas compatíveis, consulte Compatibilidade com idiomas do Gemini. |
Para saber mais, consulte FinishReason.
Se um filtro bloquear a resposta, ele anulará o campo Candidate.content
da resposta. Ele não fornece feedback ao modelo.
Filtros de segurança configuráveis
Os filtros de segurança avaliam o conteúdo com base em uma lista de danos. Para cada categoria de danos, os filtros de segurança atribuem uma pontuação com base na probabilidade do conteúdo ser inseguro e outra pontuação com base na gravidade do conteúdo nocivo.
Os filtros de segurança configuráveis não têm controle de versões independente do modelo. O Google não atualiza o filtro de segurança configurável para uma versão lançada anteriormente de um modelo. No entanto, é possível que atualize o filtro de segurança configurável para uma versão futura de um modelo.
Categorias de dano
Os filtros de segurança avaliam o conteúdo com base nas seguintes categorias de danos:
Categoria de dano | Definição |
---|---|
Discurso de ódio | Comentários negativos ou nocivos voltados à identidade e/ou atributos protegidos. |
Assédio | Comentários ameaçadores, intimidadores, abusivos ou violentos direcionados a outra pessoa |
Sexualmente explícito | Contém referências a atos sexuais ou outro conteúdo sexual. |
Conteúdo perigoso | Promove ou permite o acesso a produtos, serviços e atividades prejudiciais. |
Comparação de pontuações de probabilidade e de gravidade
A pontuação de segurança de probability reflete a probabilidade de uma resposta de modelo
estar associada ao respectivo dano. Ele tem
pontuação de confiança associada entre 0.0
e 1.0
, arredondada para uma casa decimal.
A pontuação de confiança é criterizada em quatro níveis de confiança de segurança:
NEGLIGIBLE
, LOW
, MEDIUM
e HIGH
.
A pontuação de segurança severity reflete a magnitude de quão prejudicial a resposta de um modelo
pode ser. Ele tem uma pontuação de gravidade associada que vai de
0.0
para 1.0
, arredondada para uma casa decimal. A pontuação de gravidade é criterizada
em quatro níveis: NEGLIGIBLE
, LOW
, MEDIUM
e HIGH
.
O conteúdo pode ter uma pontuação de probabilidade baixa e uma pontuação de gravidade alta ou uma pontuação de probabilidade alta e uma pontuação de gravidade baixa.
Como configurar filtros de segurança
Use a API Vertex AI Gemini ou o console do Google Cloud para configurar o filtro de segurança.
API Gemini da Vertex AI
A API Vertex AI Gemini fornece dois "bloqueios de dano", métodos:
- SEVERITY: esse método usa pontuações de probabilidade e gravidade.
- PROBABILITY: esse método usa apenas a pontuação de probabilidade.
O método padrão é SEVERITY
. Para modelos anteriores a gemini-1.5-flash
e
gemini-1.5-pro
, o método padrão é
PROBABILITY
. Para saber mais, consulte a referência da API HarmBlockMethod.
A API Vertex AI Gemini fornece os seguintes limites de "bloqueio de dano":
- BLOCK_LOW_AND_ABOVE: bloqueia quando a pontuação de probabilidade ou de gravidade
é
LOW
,MEDIUM
ouHIGH
. - BLOCK_MEDIUM_AND_ABOVE: bloqueia quando a pontuação de probabilidade ou de gravidade
é
MEDIUM
ouHIGH
. Paragemini-1.5-flash-001
egemini-1.5-pro-001
,BLOCK_MEDIUM_AND_ABOVE
é o valor padrão. - BLOCK_ONLY_HIGH: bloqueia quando a pontuação de probabilidade ou de gravidade
é
HIGH
. - HARM_BLOCK_THRESHOLD_UNSPECIFIED: bloqueia usando o limite padrão.
- DESATIVADA: nenhum bloqueio de resposta automática nem metadados de segurança são retornados.
Para
gemini-1.5-flash-002
egemini-1.5-pro-002
,OFF
é o valor padrão. - BLOCK_NONE: a configuração de segurança
BLOCK_NONE
remove o bloqueio de respostas automáticas. Em vez disso, você pode configurar suas próprias diretrizes de segurança com as pontuações retornadas. Este é um campo restrito que não está disponível para todos os usuários nas versões de modelo do GA.
Por exemplo, o código Python a seguir demonstra como definir o limite de bloqueio
de danos para BLOCK_ONLY_HIGH
na categoria de conteúdo perigoso:
generative_models.SafetySetting(
category=generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
threshold=generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
),
Isso vai bloquear a maior parte do conteúdo classificado como perigoso. Para saber mais, consulte a referência da API HarmBlockThreshold.
Para conferir exemplos completos em Python, Node.js, Java, Go, C# e REST, consulte os Exemplos de configuração do filtro de segurança.
Console do Google Cloud
O console do Google Cloud permite configurar um limite para cada atributo de segurança. O filtro de segurança usa apenas as pontuações de probabilidade. Não há a opção de usar as pontuações de gravidade.
O console do Google Cloud fornece os seguintes valores de limite:
- Desativado (padrão): não há bloqueio de respostas automáticas.
- Bloquear poucos: bloquear quando a pontuação de probabilidade for
HIGH
. - Bloquear alguns: bloquear quando a pontuação de probabilidade for
MEDIUM
ouHIGH
. - Bloquear muitos: bloquear quando a pontuação de probabilidade for
LOW
,MEDIUM
ouHIGH
.
Por exemplo, se você definir a configuração de bloqueio como Bloquear poucos na categoria "Conteúdos perigosos", tudo com alta probabilidade de ser um conteúdo nocivo será bloqueado. Qualquer item com menor probabilidade de risco é permitido. O limite padrão é Block some
.
Para definir os limites, consulte as seguintes etapas:
Na seção "Vertex AI" do console do Google Cloud, acesse a página do Vertex AI Studio.
Em Criar um novo comando, clique em qualquer um dos botões para abrir a página de criação de comandos.
Clique em Configurações de segurança.
A caixa de diálogo Configurações de segurança é aberta.
Para cada categoria de dano, configure o valor limite desejado.
Clique em Salvar.
Exemplo de saída quando uma resposta é bloqueada pelo filtro de segurança configurável
Este é um exemplo de saída da API Vertex AI Gemini quando uma resposta é bloqueada pelo filtro de segurança configurável por conter conteúdo perigoso:
{ "candidates": [{ "finishReason": "SAFETY", "safetyRatings": [{ "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE", "probabilityScore": 0.11027937, "severity": "HARM_SEVERITY_LOW", "severityScore": 0.28487435 }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "HIGH", "blocked": true, "probabilityScore": 0.95422274, "severity": "HARM_SEVERITY_MEDIUM", "severityScore": 0.43398145 }, { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE", "probabilityScore": 0.11085559, "severity": "HARM_SEVERITY_NEGLIGIBLE", "severityScore": 0.19027223 }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE", "probabilityScore": 0.22901751, "severity": "HARM_SEVERITY_NEGLIGIBLE", "severityScore": 0.09089675 }] }], "usageMetadata": { "promptTokenCount": 38, "totalTokenCount": 38 } }
Exemplos de configuração do filtro de segurança
Os exemplos a seguir demonstram como configurar o filtro de segurança usando a API Vertex AI Gemini:
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Node.js
Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Antes de testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Antes de testar esse exemplo, siga as instruções de configuração para Go no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Go.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
C#
Antes de testar esse exemplo, siga as instruções de configuração para C# no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para C#.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
Depois de configurou seu ambiente use REST para testar uma solicitação de texto. O exemplo a seguir envia uma solicitação ao publisher endpoint do modelo.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: a região para processar a solicitação. As opções disponíveis incluem:
Clicar para abrir uma lista parcial das regiões disponíveis
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- PROJECT_ID: o ID do projeto.
- MODEL_ID: o ID do modelo multimodal
que você quer usar. As opções são:
gemini-1.0-pro
gemini-1.0-pro-vision
- ROLE:
o papel em uma conversa associada ao conteúdo. É necessário especificar um papel mesmo em
casos de uso de turno único.
Os valores aceitáveis são os seguintes:
USER
: especifica o conteúdo que é enviado por você.MODEL
: especifica a resposta do modelo.
- TEXT: as instruções de texto a serem incluídas no comando.
- SAFETY_CATEGORY:
a categoria de segurança para a qual configurar um limite. Os valores aceitáveis são os seguintes:
Clique para expandir as categorias de segurança
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD: o limite de bloqueio de respostas que podem pertencer à categoria de segurança especificada com base na probabilidade. Os valores aceitáveis são os seguintes:
Clique para expandir os limites de bloqueio
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
bloqueia mais, eBLOCK_ONLY_HIGH
bloqueia a menor.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent
Corpo JSON da solicitação:
{ "contents": { "role": "ROLE", "parts": { "text": "TEXT" } }, "safetySettings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a seguinte.
Exemplo de comando curl
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro"
PROJECT_ID="test-project"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:streamGenerateContent -d \
$'{
"contents": {
"role": "user",
"parts": { "text": "Hello!" }
},
"safety_settings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "OFF"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_ONLY_HIGH"
}
]
}'
Filtro de citações
Os recursos de código generativo da Vertex AI têm como objetivo produzir conteúdo original. Por padrão, o Gemini limita a probabilidade de que o conteúdo atual seja replicado extensamente. Se um recurso do Gemini fizer uma citação extensa de uma página da Web, o Gemini cita essa página.
Às vezes, o mesmo conteúdo pode ser encontrado em várias páginas da Web. O Gemini tenta apontar para uma fonte conhecida. No caso de citações de repositórios de código, a citação também pode referenciar uma licença de código aberto aplicável. É sua responsabilidade obedecer aos requisitos de licença.
Para saber mais sobre os metadados do filtro de citações, consulte a referência da API Citation.
Filtro de integridade cívica
O filtro de integridade cívica detecta e bloqueia comandos que mencionam ou se relacionam a
eleições e candidatos políticos. Esse filtro fica desativado por padrão. Para ativar
essa opção, defina o limite de bloqueio para CIVIC_INTEGRITY
como um dos seguintes
valores. Não faz diferença qual valor você especifica.
BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
BLOCK_ONLY_HIGH
O código Python a seguir mostra como ativar o filtro de integridade cívica:
generative_models.SafetySetting(
category=generative_models.HarmCategory.CIVIC_INTEGRITY,
threshold=generative_models.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
),
Para mais detalhes sobre o filtro de integridade cívica, entre em contato com seu representante do Google Cloud.
Práticas recomendadas
Embora os filtros de segurança ajudem a evitar conteúdo não seguro, eles podem bloquear conteúdo seguro ou não detectar conteúdo não seguro. Modelos avançados, como Gemini 1.5 Flash e Gemini 1.5 Pro, são projetados para gerar respostas seguras, mesmo sem filtros. Teste diferentes configurações de filtro para encontrar o equilíbrio certo entre segurança e permissão de conteúdo adequado.
A seguir
- Saiba mais sobre as instruções do sistema para segurança.
- Saiba mais sobre o monitoramento de abuso.
- Saiba mais sobre a IA responsável.
- Saiba mais sobre governança de dados.