Configurações de segurança

A API Gemini fornece configurações de segurança que podem ser ajustadas durante a fase de prototipagem para determinar se o aplicativo requer uma configuração de segurança mais ou menos restritiva. Você pode ajustar essas configurações em quatro categorias de filtro para restringir ou permitir certos tipos de conteúdo.

Este guia aborda como a API Gemini lida com as configurações de segurança e filtros e como você pode alterar as configurações de segurança do seu aplicativo.

Filtros de segurança

Os filtros de segurança ajustáveis da API Gemini abrangem as seguintes categorias:

Categoria Descrição
Assédio Comentários negativos ou prejudiciais voltados à identidade e/ou atributos protegidos.
Discurso de ódio Conteúdo grosseiro, desrespeitoso ou linguagem obscena.
Conteúdo sexualmente explícito Contém referências a atos sexuais ou outro conteúdo sexual.
Perigoso Promove, facilita ou incentiva atos nocivos.

Use esses filtros para ajustar o que é apropriado para seu caso de uso. Por exemplo, se você está criando diálogos de videogame, pode ser aceitável permitir mais conteúdo classificado como perigoso devido à natureza do jogo.

Além dos filtros de segurança ajustáveis, a API Gemini tem proteções integradas contra danos essenciais, como conteúdo que coloca a segurança infantil em risco. Esses tipos de dano são sempre bloqueados e não podem ser ajustados.

Nível de filtragem de Segurança do conteúdo

A API Gemini classifica o nível de probabilidade do conteúdo não seguro como HIGH, MEDIUM, LOW ou NEGLIGIBLE.

A API Gemini bloqueia conteúdo com base na probabilidade de ele não ser seguro, e não na gravidade. É importante ter isso em mente, porque alguns conteúdos podem ter baixa probabilidade de não ser seguro, mesmo que a gravidade dos danos ainda seja alta. Por exemplo, comparando as frases:

  1. O robô me bateu.
  2. O robô me cortou.

A primeira frase pode resultar em uma probabilidade maior de não ser segura, mas você pode considerar a segunda frase como uma gravidade mais alta em termos de violência. Por isso, é importante testar cuidadosamente e considerar qual o nível apropriado de bloqueio é necessário para oferecer suporte aos seus principais casos de uso e minimizar os danos aos usuários finais.

Filtragem de segurança por solicitação

Você pode ajustar as configurações de segurança para cada solicitação feita à API. Quando você faz uma solicitação, o conteúdo é analisado e atribuído a uma classificação de segurança. A classificação de segurança inclui a categoria e a classificação da probabilidade de danos. Por exemplo, se o conteúdo foi bloqueado porque a categoria de assédio tem uma alta probabilidade, a classificação de segurança retornada teria categoria igual a HARASSMENT e a probabilidade de danos definida como HIGH.

Por padrão, as configurações de segurança bloqueiam conteúdo, incluindo solicitações, com probabilidade média ou maior de não ser seguro em qualquer filtro. Esse valor de referência de segurança foi projetado para funcionar na maioria dos casos de uso. Ajuste as configurações de segurança somente se ela for necessária de forma consistente para o aplicativo.

A tabela a seguir descreve as configurações de bloqueio que podem ser ajustadas em cada categoria. Por exemplo, se você definir a configuração de bloqueio como Bloquear poucos para a categoria Discurso de ódio, tudo com alta probabilidade de ser considerado conteúdo de incitação ao ódio será bloqueado. No entanto, qualquer item com menor probabilidade de risco é permitido.

Limite (Google AI Studio) Limite (API) Descrição
Não bloquear nada BLOCK_NONE Sempre mostrar, independentemente da probabilidade de conteúdo não seguro
Bloquear poucos BLOCK_ONLY_HIGH Bloquear quando houver alta probabilidade de conteúdo não seguro
Bloquear alguns BLOCK_MEDIUM_AND_ABOVE Bloquear quando houver probabilidade média ou alta de conteúdo não seguro
Bloquear muitos BLOCK_LOW_AND_ABOVE Bloquear quando a probabilidade de conteúdo não seguro é baixa, média ou alta
N/A HARM_BLOCK_THRESHOLD_UNSPECIFIED O limite não foi especificado, foi bloqueado usando o limite padrão

Se ela não for definida, a configuração de bloqueio padrão será Bloquear alguns para todas as categorias.

É possível definir essas configurações para cada solicitação feita ao serviço generativo. Consulte a referência da API HarmBlockThreshold para mais detalhes.

Feedback de segurança

generateContent retorna uma GenerateContentResponse que inclui feedback de segurança.

O feedback imediato está incluído em promptFeedback. Se promptFeedback.blockReason estiver definido, o conteúdo da solicitação foi bloqueado.

O feedback do candidato à resposta está incluído em finishReason e safetyRatings. Se o conteúdo da resposta foi bloqueado e o finishReason era SAFETY, é possível inspecionar safetyRatings para mais detalhes. O conteúdo bloqueado não será retornado.

Ajustar as configurações de segurança

Esta seção aborda como ajustar as configurações de segurança no Google AI Studio e no código.

Google AI Studio

É possível ajustar as configurações de segurança no Google AI Studio, mas não é possível desativá-las.

Clique em Editar configurações de segurança no painel Configurações de execução para abrir o modal Configurações de segurança de execução. No modal, você pode usar os controles deslizantes para ajustar o nível de filtragem de conteúdo por categoria de segurança:

Quando você envia uma solicitação, fazendo uma pergunta ao modelo, uma mensagem No Content aparece se o conteúdo da solicitação está bloqueado. Para conferir mais detalhes, mantenha o ponteiro do mouse sobre o texto No Content e clique em Safety.

SDKs da API Gemini

O snippet de código a seguir mostra como definir configurações de segurança na chamada GenerateContent. Isso define as categorias de assédio (HARM_CATEGORY_HARASSMENT) e discurso de ódio (HARM_CATEGORY_HATE_SPEECH) como BLOCK_LOW_AND_ABOVE, o que bloqueia qualquer conteúdo com baixa ou maior probabilidade de ser assédio ou discurso de ódio.

Python

from google.generativeai.types import HarmCategory, HarmBlockThreshold

model = genai.GenerativeModel(model_name='gemini-1.5-flash')
response = model.generate_content(
    ['Do these look store-bought or homemade?', img],
    safety_settings={
        HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    }
)

Go

model := client.GenerativeModel("gemini-1.5-flash")

model.SafetySettings = []*genai.SafetySetting{
  {
    Category:  genai.HarmCategoryHarassment,
    Threshold: genai.HarmBlockOnlyLowAndAbove,
  },
  {
    Category:  genai.HarmCategoryHateSpeech,
    Threshold: genai.HarmBlockOnlyLowAndAbove,
  },
}

Node.js

import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";

// ...

const safetySetting = [
  {
    category:: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
  {
    category:: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
];

const model = genAi.getGenerativeModel({ model: "gemini-1.5-flash", safetySettings });

Web

import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";

// ...

const safetySetting = [
  {
    category:: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
  {
    category:: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
];

const model = genAi.getGenerativeModel({ model: "gemini-1.5-flash", safetySettings });

Dart (Flutter)

final safetySettings = [
  SafetySetting(HarmCategory.harassment, HarmBlockThreshold.low),
  SafetySetting(HarmCategory.hateSpeech, HarmBlockThreshold.low),
];
final model = GenerativeModel(
  model: 'gemini-1.5-flash',
  apiKey: apiKey,
  safetySettings: safetySettings,
);

Kotlin

val harassmentSafety = SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.LOW_AND_ABOVE)

val hateSpeechSafety = SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.LOW_AND_ABOVE)

val generativeModel = GenerativeModel(
    modelName = "gemini-1.5-flash",
    apiKey = BuildConfig.apiKey,
    safetySettings = listOf(harassmentSafety, hateSpeechSafety)
)

Java

SafetySetting harassmentSafety = new SafetySetting(HarmCategory.HARASSMENT,
    BlockThreshold.LOW_AND_ABOVE);

SafetySetting hateSpeechSafety = new SafetySetting(HarmCategory.HATE_SPEECH,
    BlockThreshold.LOW_AND_ABOVE);

GenerativeModel gm = new GenerativeModel(
    "gemini-1.5-flash",
    BuildConfig.apiKey,
    null, // generation config is optional
    Arrays.asList(harassmentSafety, hateSpeechSafety)
);

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Próximas etapas

  • Consulte a referência da API para saber mais sobre a API completa.
  • Consulte as orientações de segurança para ter uma perspectiva geral das considerações relacionadas à segurança ao desenvolver com LLMs.
  • Saiba mais sobre como avaliar a probabilidade e a gravidade com a equipe da Jigsaw
  • Saiba mais sobre os produtos que contribuem para soluções de segurança, como a API Perspective. * É possível usar essas configurações de segurança para criar um classificador de toxicidade. Veja o exemplo de classificação para começar.