Impostazioni di sicurezza

L'API Gemini fornisce impostazioni di sicurezza che puoi regolare 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 filtri per limitare o consentire determinati tipi di contenuti.

Questa guida illustra come l'API Gemini gestisce i filtri e le impostazioni di sicurezza 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 rivolti all'identità e/o agli attributi protetti.
Incitamento all'odio Contenuti maleducati, irrispettosi o volgari.
Contenuti sessualmente espliciti Contiene riferimenti ad atti sessuali o ad altri contenuti osceni.
Contenuti pericolosi Promuove, favorisce o incoraggia azioni dannose.
Integrità civica Query correlate alle elezioni.

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

Oltre ai filtri di sicurezza regolabili, l'API Gemini ha protezioni integrate contro i danni principali, come i contenuti che mettono a rischio la sicurezza dei bambini. Questi tipi di danni sono sempre bloccati e non possono essere modificati.

Livello di filtro per la sicurezza dei contenuti

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

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

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

La prima frase potrebbe avere una probabilità più elevata di essere non sicura, ma la seconda potrebbe essere considerata di gravità maggiore in termini di violenza. Pertanto, è importante testare attentamente e valutare il livello di blocco appropriato per supportare i tuoi casi d'uso principali, minimizzando al contempo i danni agli utenti finali.

Filtro di sicurezza per richiesta

Puoi regolare le impostazioni di sicurezza per ogni richiesta inviata all'API. Quando effettui 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 del danno. Ad esempio, se i contenuti sono stati bloccati perché la categoria molestie ha una probabilità elevata, la valutazione di sicurezza restituita avrà la 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 superiore di non essere sicuri in qualsiasi filtro. Questa sicurezza di base è progettata per funzionare nella maggior parte dei casi d'uso, per cui dovresti regolare le impostazioni di sicurezza solo se è un requisito costante 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 alcuni per la categoria Incitamento all'odio, tutti i contenuti con un'alta probabilità di essere contenuti di incitamento all'odio vengono bloccati. ma è consentita qualsiasi probabilità inferiore.

Soglia (Google AI Studio) Soglia (API) Descrizione
Nessun blocco BLOCK_NONE Mostra sempre i contenuti, indipendentemente dalla probabilità che non siano sicuri
Blocco ridotto BLOCK_ONLY_HIGH Blocca quando c'è un'alta probabilità che i contenuti non siano sicuri
Blocco limitato BLOCK_MEDIUM_AND_ABOVE Blocca quando c'è una probabilità media o alta che i contenuti non siano sicuri
Blocco esteso BLOCK_LOW_AND_ABOVE Blocca quando c'è una probabilità bassa, media o alta che i contenuti non siano sicuri
N/D HARM_BLOCK_THRESHOLD_UNSPECIFIED La soglia non è specificata, il blocco utilizza la soglia predefinita

Se la soglia non è impostata, la soglia di blocco predefinita è Blocca la maggior parte (solo per gemini-1.5-pro-002 e gemini-1.5-flash-002) o Blocca alcuni (in tutti gli altri modelli) per tutte le categorie tranne la categoria Integrità civica.

La soglia di blocco predefinita per la categoria Integrità civica è Blocca la maggior parte quando invii i prompt utilizzando Google AI Studio e Non blocca quando utilizzi direttamente l' API Gemini.

Puoi impostare queste impostazioni per ogni richiesta inviata al servizio generativo. Per maggiori dettagli, consulta la documentazione di riferimento dell'API HarmBlockThreshold.

Feedback sulla sicurezza

generateContent restituisce un GenerateContentResponse che include il feedback sulla sicurezza.

Il feedback sul prompt è incluso in promptFeedback. Se è impostato su promptFeedback.blockReason, significa che i contenuti del prompt sono stati bloccati.

Il feedback sulle risposte candidate è incluso in Candidate.finishReason e Candidate.safetyRatings. Se i contenuti della risposta sono stati bloccati e il valore di finishReason è SAFETY, puoi esaminare safetyRatings per ulteriori dettagli. I contenuti bloccati non vengono restituiti.

Modificare le impostazioni di sicurezza

Questa sezione spiega come modificare 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 Impostazioni di esecuzione per aprire la finestra modale Impostazioni di sicurezza di esecuzione. Nella finestra modale, puoi utilizzare i cursori per regolare il livello di filtro dei contenuti in base alla categoria di sicurezza:

Quando invii una richiesta (ad esempio ponendo una domanda al modello), viene visualizzato il messaggio Nessun contenuto se i contenuti della richiesta sono bloccati. Per visualizzare maggiori dettagli, tieni premuto il cursore sul testo Nessun contenuto e fai clic su Sicurezza.

SDK dell'API Gemini

Lo snippet di codice seguente mostra come impostare le impostazioni di sicurezza nella chiamataGenerateContent. Vengono impostate le soglie per le categorie molestie (HARM_CATEGORY_HARASSMENT) e incitamento all'odio (HARM_CATEGORY_HATE_SPEECH). Ad esempio, impostare queste categorie su BLOCK_LOW_AND_ABOVE blocca tutti i contenuti con una probabilità bassa o superiore di essere molestie o incitamento all'odio. Per comprendere le impostazioni di soglia, consulta Filtro di sicurezza per richiesta.

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

Vai

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

Passaggi successivi

  • Per saperne di più sull'API completa, consulta il riferimento API.
  • Consulta le linee guida sulla sicurezza per una panoramica generale delle considerazioni sulla sicurezza durante lo sviluppo con i modelli 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 utilizzare queste impostazioni di sicurezza per creare un classificatore di tossicità. Per iniziare, consulta l'esempio di classificazione.