Configuración de seguridad

La API de Gemini proporciona parámetros de configuración de seguridad que puedes ajustar durante la etapa de prototipado para determinar si tu aplicación requiere una configuración de seguridad más o menos restrictiva. Puedes ajustar esta configuración en cuatro categorías de filtro para restringir o permitir ciertos tipos de contenido.

En esta guía, se explica cómo la API de Gemini controla la configuración y el filtrado de seguridad, y cómo puedes cambiar la configuración de seguridad de tu aplicación.

Filtros de seguridad

Los filtros de seguridad ajustables de la API de Gemini abarcan las siguientes categorías:

Categoría Descripción
Hostigamiento Comentarios negativos o dañinos que se orientan a la identidad o los atributos protegidos.
Incitación al odio o a la violencia Contenido grosero, irrespetuoso u obsceno.
Sexualmente explícito Incluye referencias a actos sexual o a otro contenido obsceno.
Peligroso Promueve, facilita o fomenta actividades perjudiciales.

Puedes usar estos filtros para ajustar lo que sea apropiado para tu caso de uso. Por ejemplo, si creas diálogos de videojuegos, recomendamos que permitas más contenido que tenga la clasificación Peligroso debido a su naturaleza.

Además de los filtros de seguridad ajustables, la API de Gemini tiene protecciones integradas contra los daños principales, como el contenido que pone en peligro la seguridad infantil. Estos tipos de daño siempre están bloqueados y no se pueden ajustar.

Nivel de filtro de seguridad del contenido

La API de Gemini clasifica el nivel de probabilidad de que el contenido no sea seguro como HIGH, MEDIUM, LOW o NEGLIGIBLE.

La API de Gemini bloquea el contenido en función de la probabilidad de que el contenido sea inseguro y no de su gravedad. Es importante tener esto en cuenta, ya que algunos contenidos pueden tener pocas probabilidades de ser inseguros, a pesar de que la gravedad del daño puede ser alta. Por ejemplo, comparemos las siguientes oraciones:

  1. El robot me golpeó.
  2. El robot me acuchilló.

La primera oración puede tener una mayor probabilidad de ser insegura, pero puedes considerar que la segunda oración es de mayor gravedad en términos de violencia. En consecuencia, es importante que pruebes y consideres cuidadosamente cuál es el nivel apropiado de bloqueo necesario para respaldar tus casos de uso clave y, al mismo tiempo, minimizar el daño a los usuarios finales.

Filtrado de seguridad por solicitud

Puedes ajustar la configuración de seguridad para cada solicitud que realices a la API. Cuando realizas una solicitud, el contenido se analiza y se le asigna una calificación de seguridad. La calificación de seguridad incluye la categoría y la probabilidad de que se clasifique el daño. Por ejemplo, si el contenido se bloqueó debido a que la categoría de acoso tiene una probabilidad alta, la calificación de seguridad que se muestra tendría la categoría igual a HARASSMENT y la probabilidad de daño establecida en HIGH.

De forma predeterminada, la configuración de seguridad bloquea el contenido (incluidos los mensajes) con una probabilidad media o mayor de no ser seguro en cualquier filtro. Esta seguridad de referencia está diseñada para funcionar en la mayoría de los casos de uso, por lo que solo debes ajustar tu configuración de seguridad si es necesaria de manera coherente para tu aplicación.

En la siguiente tabla, se describe la configuración de bloqueo que puedes ajustar para cada categoría. Por ejemplo, si estableces la configuración de bloqueo como Bloquear pocos en la categoría Incitación al odio o a la violencia, se bloqueará todo lo que tenga altas probabilidades de ser contenido de este tipo. Pero se permite cualquier cosa con una probabilidad menor.

Umbral (Google AI Studio) Umbral (API) Descripción
No bloquear BLOCK_NONE Mostrar siempre, independientemente de la probabilidad de que haya contenido no seguro
Bloquear poco BLOCK_ONLY_HIGH Bloquear cuando haya alta probabilidad de incluir contenido no seguro
Bloquear algo BLOCK_MEDIUM_AND_ABOVE Bloquear cuando la probabilidad de tener contenido no seguro es media o alta
Bloquear la mayoría BLOCK_LOW_AND_ABOVE Bloquear cuando la probabilidad de que exista contenido no seguro sea baja, media o alta
N/A HARM_BLOCK_THRESHOLD_UNSPECIFIED El umbral no está especificado; se bloquea con el umbral predeterminado

Si no la estableces, la configuración de bloqueo predeterminada será Bloquear algunos para todas las categorías.

Puedes establecer estos parámetros de configuración para cada solicitud que realices al servicio generativo. Consulta la referencia de la API de HarmBlockThreshold para obtener más detalles.

Comentarios sobre la seguridad

generateContent muestra un GenerateContentResponse, que incluye comentarios de seguridad.

Los comentarios sobre indicaciones se incluyen en promptFeedback. Si se configura promptFeedback.blockReason, significa que el contenido del mensaje se bloqueó.

Los comentarios sobre los candidatos para respuestas se incluyen en finishReason y safetyRatings. Si se bloqueó el contenido de la respuesta y el finishReason era SAFETY, puedes inspeccionar safetyRatings para obtener más detalles. No se muestra el contenido que se bloqueó.

Ajusta la configuración de seguridad

En esta sección, se explica cómo ajustar la configuración de seguridad en Google AI Studio y en tu código.

Google AI Studio

Puedes ajustar la configuración de seguridad en Google AI Studio, pero no puedes desactivarla.

Haz clic en Editar configuración de seguridad en el panel Configuración de ejecución para abrir el modal Configuración de seguridad de ejecución. En la ventana modal, puedes usar los controles deslizantes para ajustar el nivel de filtrado de contenido por categoría de seguridad:

Cuando envías una solicitud (por ejemplo, si le haces una pregunta al modelo), aparece un mensaje No Content si el contenido de la solicitud está bloqueado. Para ver más detalles, mantén el puntero sobre el texto Sin contenido y haz clic en Seguridad.

SDK de la API de Gemini

En el siguiente fragmento de código, se muestra cómo establecer la configuración de seguridad en tu llamada a GenerateContent. Esto configura las categorías de acoso (HARM_CATEGORY_HARASSMENT) y de incitación al odio o a la violencia (HARM_CATEGORY_HATE_SPEECH), en BLOCK_LOW_AND_ABOVE, lo que bloquea todo el contenido que tenga una probabilidad baja o mayor de ser acoso o incitación al odio o a la violencia.

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 });

Páginas 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óximos pasos

  • Consulta la referencia de la API para obtener más información acerca de la API completa.
  • Revisa la guía de seguridad para obtener un panorama general de las consideraciones de seguridad cuando realices desarrollos con LLM.
  • Obtén más información del equipo de Jigsaw para evaluar la probabilidad frente a la gravedad.
  • Obtén más información sobre los productos que contribuyen a las soluciones de seguridad, como la API de Perspective. * Puedes usar esta configuración de seguridad para crear un clasificador de toxicidad. Consulta el ejemplo de clasificación para comenzar.