Configuración de seguridad

La API de Gemini proporciona parámetros de configuración de seguridad que puedes ajustar durante la fase 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 filtros para restringir o permitir ciertos tipos de contenido.

En esta guía, se explica cómo la API de Gemini controla la configuración de seguridad y el filtrado, 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
Acoso 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.
Contenido sexual explícito Incluye referencias a actos sexual o a otro contenido obsceno.
Peligroso Promueve, facilita o fomenta actos dañinos.
Integridad cívica Consultas relacionadas con elecciones

Puedes usar estos filtros para ajustar lo que sea adecuado para tu caso de uso. Por ejemplo, si estás creando un diálogo para un videojuego, es posible que consideres aceptable permitir más contenido clasificado como Dangerous debido a la naturaleza del juego.

Además de los filtros de seguridad ajustables, la API de Gemini tiene protecciones integradas contra daños fundamentales, como el contenido que pone en peligro la seguridad de los niños. Estos tipos de daños siempre se bloquean y no se pueden ajustar.

Nivel de filtrado 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 sea inseguro y no de la gravedad. Es importante saber esto porque algunos contenidos pueden tener una baja probabilidad de ser inseguros, aunque la gravedad del daño pueda seguir siendo alta. Por ejemplo, comparemos las siguientes oraciones:

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

La primera oración podría tener una mayor probabilidad de que sea contenido no seguro, pero podrías considerar que la segunda oración es de mayor gravedad en términos de violencia. Ahora que entendemos esto, es importante que pruebes y consideres con cuidado cuál es el nivel adecuado de bloqueo necesario para respaldar tus casos de uso clave y 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, se analiza el contenido y se le asigna una clasificación de seguridad. La clasificación de seguridad incluye la categoría y la probabilidad de la clasificación del daño. Por ejemplo, si el contenido se bloqueó debido a que la categoría de acoso tenía una probabilidad alta, la clasificación de seguridad que se muestra tendría una 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 (incluidas las instrucciones) con una probabilidad media o alta de ser poco seguro en cualquier filtro. La seguridad de este modelo de referencia está diseñada para funcionar en la mayoría de los casos de uso, por lo que solo debes ajustar la configuración de seguridad si es necesario 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 en Bloquear poco para la categoría Incitación al odio o a la violencia, se bloqueará todo lo que tenga una alta probabilidad de ser contenido de incitación al odio o a la violencia. Pero se permite cualquier cosa con una probabilidad menor.

Umbral (Google AI Studio) Umbral (API) Descripción
No bloquear BLOCK_NONE Mostrar siempre sin importar la probabilidad de que sea contenido no seguro
Bloquear poco BLOCK_ONLY_HIGH Bloquear cuando haya una alta probabilidad de que sea contenido no seguro
Bloquear algo BLOCK_MEDIUM_AND_ABOVE Bloquear cuando haya una probabilidad media o alta de que sea contenido no seguro
Bloquear la mayoría BLOCK_LOW_AND_ABOVE Bloquear cuando haya una probabilidad baja, media o alta de que sea contenido no seguro
N/A HARM_BLOCK_THRESHOLD_UNSPECIFIED No se especifica el umbral; se bloquea con el umbral predeterminado

Si no se establece el umbral, el umbral de bloqueo predeterminado es Bloquear la mayoría (solo para gemini-1.5-pro-002 y gemini-1.5-flash-002) o Bloquear algo (en todos los demás modelos) para todas las categorías excepto la categoría Integridad cívica.

El umbral de bloqueo predeterminado para la categoría Integridad cívica es Bloquear la mayoría cuando se envían instrucciones con Google AI Studio y No bloquear cuando se usa directamente la API de Gemini.

Puedes establecer esta 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 seguridad

generateContent muestra un GenerateContentResponse que incluye comentarios de seguridad.

Los comentarios inmediatos se incluyen en promptFeedback. Si se configuró promptFeedback.blockReason, se bloqueó el contenido de la instrucción.

Los comentarios de las respuestas candidatas se incluyen en Candidate.finishReason y Candidate.safetyRatings. Si se bloqueó el contenido de la respuesta y finishReason era SAFETY, puedes inspeccionar safetyRatings para obtener más detalles. No se devuelve el contenido bloqueado.

Cómo ajustar 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 cuadro modal Configuración de seguridad de la ejecución. En el cuadro 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, cuando le haces una pregunta al modelo), aparece un mensaje Sin contenido 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.

SDKs de la API de Gemini

En el siguiente fragmento de código, se muestra cómo configurar la configuración de seguridad en tu llamada a GenerateContent. Esto establece los umbrales para las categorías de acoso (HARM_CATEGORY_HARASSMENT) y de incitación al odio o a la violencia (HARM_CATEGORY_HATE_SPEECH). Por ejemplo, si estableces estas categorías en BLOCK_LOW_AND_ABOVE, se bloqueará todo el contenido que tenga una probabilidad baja o alta de ser acoso o incitación al odio o a la violencia. Para comprender la configuración del umbral, consulta Filtrado de seguridad por solicitud.

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óximos pasos

  • Consulta la referencia de la API para obtener más información sobre la API completa.
  • Revisa la orientación de seguridad para obtener una descripción general de las consideraciones de seguridad cuando se desarrolla con LLM.
  • Obtén más información sobre la evaluación de la probabilidad en comparación con la gravedad del equipo de Jigsaw.
  • 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.