Impostazioni di sicurezza

L'API Gemini fornisce impostazioni di sicurezza che puoi modificare durante la fase di prototipazione per determinare se la tua applicazione richiede una configurazione di sicurezza più o meno restrittiva. Puoi modificare queste impostazioni in quattro categorie di filtro per limitare o consentire determinati tipi di contenuti.

Questa guida illustra come l'API Gemini gestisce le impostazioni di sicurezza e i filtri e come puoi modificare le impostazioni di sicurezza per la tua applicazione.

Filtri di sicurezza

I filtri di sicurezza regolabili dell'API Gemini coprono le seguenti categorie:

Categoria Descrizione
Molestie Commenti negativi o dannosi che hanno come target l'identità e/o attributi protetti.
Incitamento all'odio Contenuti scurrili, irrispettosi o volgari.
Contenuti sessualmente espliciti Riferimenti ad atti sessuali o ad altri contenuti osceni.
Categorie pericolose Promuovono, favoriscono o incoraggiano azioni dannose.

Puoi utilizzare questi filtri per modificare ciò che è appropriato per il tuo caso d'uso. Ad esempio, se crei dialoghi in un videogioco, potresti ritenere accettabile consentire più contenuti classificati come Pericolosi a causa della natura del gioco.

Oltre ai filtri di sicurezza regolabili, l'API Gemini dispone di protezioni integrate contro i danni principali, ad esempio i contenuti che mettono in pericolo la sicurezza dei bambini. Questi tipi di danni sono sempre bloccati e non possono essere modificati.

Livello di filtro Sicurezza dei contenuti

L'API Gemini classifica il livello di probabilità dei contenuti non sicuri come HIGH, MEDIUM, LOW o NEGLIGIBLE.

L'API Gemini blocca i contenuti in base alla probabilità che i contenuti non siano sicuri e non alla gravità. Questo è un aspetto importante da considerare perché alcuni contenuti possono avere una bassa probabilità di non essere sicuri anche se la gravità del danno potrebbe essere ancora alta. Ad esempio, confrontando le seguenti frasi:

  1. Il robot mi ha dato un pugno.
  2. Il robot mi ha tagliato fuori.

La prima frase potrebbe comportare una maggiore probabilità di non essere sicura, ma potresti considerare la seconda una gravità maggiore in termini di violenza. Pertanto, è importante testare e valutare attentamente il livello di blocco appropriato per supportare i tuoi casi d'uso chiave e ridurre al minimo i danni per gli utenti finali.

Filtro di sicurezza per richiesta

Puoi modificare le impostazioni di sicurezza per ogni richiesta che effettui all'API. Quando fai una richiesta, i contenuti vengono analizzati e viene assegnata una classificazione di sicurezza. La valutazione di sicurezza include la categoria e la probabilità della classificazione dei danni. Ad esempio, se i contenuti sono stati bloccati perché la categoria di molestie ha un'alta probabilità, la valutazione di sicurezza restituita avrebbe una categoria uguale a HARASSMENT e la probabilità di danno impostata su HIGH.

Per impostazione predefinita, le impostazioni di sicurezza bloccano i contenuti (inclusi i prompt) con una probabilità media o maggiore di essere non sicuri per qualsiasi filtro. Questa sicurezza di base è progettata per funzionare per la maggior parte dei casi d'uso, quindi dovresti modificare le impostazioni di sicurezza solo se è costantemente necessario per la tua applicazione.

La tabella seguente descrive le impostazioni dei blocchi che puoi modificare per ogni categoria. Ad esempio, se imposti l'impostazione di blocco su Blocca pochi per la categoria Incitamento all'odio, tutti i contenuti con un'alta probabilità di essere contenuti di incitamento all'odio vengono bloccati. Ma tutto con una probabilità più bassa è consentito.

Soglia (Google AI Studio) Soglia (API) Descrizione
Nessun blocco BLOCK_NONE Mostra sempre indipendentemente dalla probabilità di contenuti non sicuri
Blocco ridotto BLOCK_ONLY_HIGH Blocca quando l'alta probabilità di contenuti non sicuri
Blocco limitato BLOCK_MEDIUM_AND_ABOVE Blocca quando la probabilità media o elevata di contenuti non sicuri
Blocco esteso BLOCK_LOW_AND_ABOVE Blocca quando la probabilità di contenuti non sicuri è bassa, media o alta
N/A HARM_BLOCK_THRESHOLD_UNSPECIFIED La soglia non è specificata. Blocca utilizzando la soglia predefinita

Se non viene configurato, l'impostazione di blocco predefinita è Blocca alcune per tutte le categorie.

Puoi configurare queste impostazioni per ogni richiesta che effettui al servizio generativo. Per maggiori dettagli, consulta il riferimento API HarmBlockThreshold.

Feedback sulla sicurezza

generateContent restituisce GenerateContentResponse che include un feedback sulla sicurezza.

Il feedback dei prompt è incluso in promptFeedback. Se è impostato promptFeedback.blockReason, i contenuti della richiesta sono stati bloccati.

Il feedback dei candidati alla risposta è incluso in finishReason e safetyRatings. Se i contenuti della risposta sono stati bloccati e il valore finishReason era SAFETY, puoi controllare safetyRatings per ulteriori dettagli. I contenuti bloccati non vengono restituiti.

Regola le impostazioni di sicurezza

Questa sezione illustra come regolare le impostazioni di sicurezza sia in Google AI Studio sia nel codice.

Google AI Studio

Puoi regolare le impostazioni di sicurezza in Google AI Studio, ma non puoi disattivarle.

Fai clic su Modifica impostazioni di sicurezza nel riquadro Esegui impostazioni per aprire la finestra modale Esegui impostazioni di sicurezza. Nella finestra modale, puoi utilizzare i dispositivi di scorrimento per regolare il livello di filtro dei contenuti per categoria di sicurezza:

Quando invii una richiesta (ad esempio ponendo una domanda al modello), se i contenuti della richiesta vengono bloccati viene visualizzato il messaggio Nessun contenuto. Per ulteriori dettagli, tieni il puntatore del mouse sul testo Nessun contenuto e fai clic su Sicurezza.

SDK dell'API Gemini

Il seguente snippet di codice mostra come configurare le impostazioni di sicurezza nella chiamata GenerateContent. In questo modo vengono impostate le categorie molestie (HARM_CATEGORY_HARASSMENT) e incitamento all'odio (HARM_CATEGORY_HATE_SPEECH) su BLOCK_LOW_AND_ABOVE, in modo da bloccare qualsiasi contenuto con una probabilità bassa o superiore di essere molestie o incitamento all'odio.

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

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

Passaggi successivi

  • Per saperne di più sull'API completa, consulta il riferimento API.
  • Consulta le indicazioni sulla sicurezza per una visione generale delle considerazioni sulla sicurezza durante lo sviluppo con gli LLM.
  • Scopri di più sulla valutazione della probabilità rispetto alla gravità dal team Jigsaw
  • Scopri di più sui prodotti che contribuiscono alle soluzioni di sicurezza come l'API Perspective. * Puoi usare queste impostazioni di sicurezza per creare un classificatore di tossicità. Per iniziare, consulta l'esempio di classificazione.