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.
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 evitam o uso indevido e garantem a citação correta de dados protegidos por direitos autorais. 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 |
---|---|---|
STOP | 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 porque a resposta foi sinalizada por citações não autorizadas. |
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 é possível configurar
o método de bloqueio de danos para SEVERITY
e o limite de bloqueio para BLOCK_ONLY_HIGH
para a categoria de conteúdo perigoso:
generative_models.SafetySetting(
category=generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
method=generative_models.HarmBlockMethod.SEVERITY,
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 essa amostra, siga as instruções de configuração para Node.js Guia de início rápido da Vertex AI: 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 essa amostra, siga as instruções de configuração para Java Guia de início rápido da Vertex AI: 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 essa amostra, siga as instruções de configuração para Go Guia de início rápido da Vertex AI: 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 essa amostra, siga as instruções de configuração para C# Guia de início rápido da Vertex AI: 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" } }, "safety_settings": { "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.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 a IA responsável.
- Saiba mais sobre governança de dados.