A API Gemini oferece configurações de segurança que podem ser ajustadas durante o estágio de prototipagem para determinar se o aplicativo requer uma configuração de segurança mais ou menos restritiva. É possível ajustar essas configurações em quatro categorias de filtro para restringir ou permitir determinados tipos de conteúdo.
Este guia explica como a API Gemini processa as configurações de segurança e a filtragem e como mudar 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. |
Sexualmente explícito | Contém referências a atos sexuais ou outro conteúdo sexual. |
Perigoso | promove, facilita ou incentiva atos nocivos. |
Integridade cívica | Consultas relacionadas a eleições. |
Use esses filtros para ajustar o que é apropriado para seu caso de uso. Por exemplo, se você estiver criando diálogos de videogame, pode considerar 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 danos são sempre bloqueados e não podem ser ajustados.
Nível do filtro "Segurança do conteúdo"
A API Gemini categoriza o nível de probabilidade de o conteúdo ser não seguro como
HIGH
, MEDIUM
, LOW
ou NEGLIGIBLE
.
A API Gemini bloqueia conteúdo com base na probabilidade de ele ser inseguro, e não na gravidade. É importante considerar isso, porque alguns conteúdos podem ter baixa probabilidade de não serem seguros, mesmo que a gravidade dos danos ainda seja alta. Por exemplo, comparando as frases:
- O robô me bateu.
- 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 maior em termos de violência. Por isso, é importante testar com cuidado e considerar qual é o nível adequado de bloqueio necessário para oferecer suporte aos seus principais casos de uso e, ao mesmo tempo, minimizar os danos aos usuários finais.
Filtragem de segurança por solicitação
É possível ajustar as configurações de segurança de cada solicitação feita à API. Quando
você faz uma solicitação, o conteúdo é analisado e recebe uma classificação de segurança. A
classificação de segurança inclui a categoria e a probabilidade da classificação
de dano. Por exemplo, se o conteúdo foi bloqueado devido à categoria de assédio
ter uma alta probabilidade, a classificação de segurança retornada terá
a categoria igual a HARASSMENT
e a probabilidade de dano 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. Essa segurança de referência foi projetada para funcionar na maioria dos casos de uso. Portanto, ajuste as configurações de segurança apenas se elas forem necessárias de modo consistente para o aplicativo.
A tabela a seguir descreve as configurações de bloqueio que você pode ajustar em cada categoria. Por exemplo, se você definir a configuração de bloqueio como Bloquear poucos na categoria Discurso de ódio, tudo que tiver uma alta probabilidade de ser conteúdo de discurso de ó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 o conteúdo não ser seguro |
Bloquear muitos | BLOCK_LOW_AND_ABOVE |
Bloquear quando houver baixa, média ou alta probabilidade de o conteúdo não ser seguro |
N/A | HARM_BLOCK_THRESHOLD_UNSPECIFIED |
O limite não está especificado, bloqueie usando o limite padrão |
Se o limite não for definido, o padrão será Bloquear a maioria (somente para
gemini-1.5-pro-002
e gemini-1.5-flash-002
) ou Bloquear alguns (em todos
os outros modelos) para todas as categorias, exceto para a categoria Integridade cívica.
O limite de bloqueio padrão para a categoria Integridade cívica é Bloquear a maioria ao enviar comandos usando o Google AI Studio e Bloquear nenhum ao usar a API Gemini diretamente.
É possível definir essas configurações para cada solicitação que você fizer ao serviço generativo.
Consulte a referência da API
HarmBlockThreshold
para mais detalhes.
Feedback de segurança
generateContent
retorna um
GenerateContentResponse
que
inclui feedback de segurança.
O feedback do comando é incluído em
promptFeedback
. Se
promptFeedback.blockReason
estiver definido, o conteúdo da solicitação foi bloqueado.
O feedback do candidato à resposta é incluído em
Candidate.finishReason
e
Candidate.safetyRatings
. Se o conteúdo
da resposta tiver sido bloqueado e o finishReason
for SAFETY
, será possível inspecionar
safetyRatings
para saber mais. O conteúdo bloqueado não é 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 seu 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, é possível usar os controles deslizantes para ajustar o nível de filtragem de conteúdo por categoria de segurança:
Ao enviar uma solicitação (por exemplo, fazendo uma pergunta ao modelo), a mensagem
No Content (Sem conteúdo) vai aparecer se o conteúdo da solicitação estiver bloqueado. Para conferir mais detalhes, mantenha o ponteiro sobre o texto No Content e clique em Safety.SDKs da API Gemini
O snippet de código abaixo mostra como definir as configurações de segurança na
chamada GenerateContent
. Isso define os limites para as categorias de assédio
(HARM_CATEGORY_HARASSMENT
) e discurso de ódio (HARM_CATEGORY_HATE_SPEECH
). Por exemplo, definir essas categorias como BLOCK_LOW_AND_ABOVE
bloqueia qualquer conteúdo com probabilidade baixa ou alta de ser assédio ou
discurso de ódio. Para entender as configurações de limite, consulte
Filtragem de segurança por solicitação.
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.HarmBlockLowAndAbove,
},
{
Category: genai.HarmCategoryHateSpeech,
Threshold: genai.HarmBlockLowAndAbove,
},
}
Node.js
import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";
// ...
const safetySettings = [
{
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: safetySettings });
Web
import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";
// ...
const safetySettings = [
{
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);
REST
echo '{
"safetySettings": [
{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
],
"contents": [{
"parts":[{
"text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d @request.json 2> /dev/null
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 visão geral das considerações de segurança ao desenvolver com LLMs.
- Saiba mais sobre como avaliar a probabilidade em relação à gravidade da equipe 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. Consulte o exemplo de classificação para começar.