Paramètres de sécurité

L'API Gemini fournit des paramètres de sécurité que vous pouvez ajuster lors de la phase de prototypage pour déterminer si votre application nécessite une configuration de sécurité plus ou moins restrictive. Vous pouvez ajuster ces paramètres dans quatre catégories de filtres pour restreindre ou autoriser certains types de contenus.

Ce guide explique comment l'API Gemini gère les paramètres de sécurité et le filtrage, et comment modifier les paramètres de sécurité de votre application.

Filtres de sécurité

Les filtres de sécurité ajustables de l'API Gemini couvrent les catégories suivantes:

Catégorie Description
Harcèlement Commentaires négatifs ou offensants ciblant l'identité et/ou les attributs protégés.
Incitation à la haine Contenu offensant, irrespectueux ou grossier.
Caractère sexuel explicite Contient des références à des actes sexuels ou à d'autres contenus obscènes.
Dangereux Contenu qui encourage, facilite ou encourage des actes dangereux
Intégrité civique Requêtes liées aux élections

Vous pouvez utiliser ces filtres pour ajuster ce qui convient à votre cas d'utilisation. Par exemple, si vous créez des dialogues de jeu vidéo, vous pouvez considérer qu'il est acceptable d'autoriser davantage de contenus considérés comme Dangerous en raison de la nature du jeu.

En plus des filtres de sécurité ajustables, l'API Gemini intègre des protections contre les préjudices majeurs, tels que les contenus qui mettent en danger la sécurité des enfants. Ces types de contenus nuisibles sont toujours bloqués et ne peuvent pas être ajustés.

Niveau de filtrage de la sécurité du contenu

L'API Gemini catégorise le niveau de probabilité que le contenu soit dangereux en tant que HIGH, MEDIUM, LOW ou NEGLIGIBLE.

L'API Gemini bloque le contenu en fonction de la probabilité qu'il soit dangereux et non de la gravité. Il est important d'en tenir compte, car certains contenus peuvent présenter une faible probabilité d'être dangereux, même si la gravité du préjudice peut rester élevée. Par exemple, en comparant les phrases suivantes :

  1. Le robot m'a frappé.
  2. Le robot m'a tranché.

La première phrase peut entraîner une probabilité de dangerosité plus élevée, mais vous pouvez considérer que la deuxième phrase a un niveau de gravité supérieur en termes de violence. Par conséquent, il est important de tester soigneusement et d'identifier le niveau de blocage approprié pour prendre en charge vos principaux cas d'utilisation tout en limitant les dommages pour les utilisateurs finaux.

Filtrage de sécurité par requête

Vous pouvez ajuster les paramètres de sécurité pour chaque requête que vous envoyez à l'API. Lorsque vous envoyez une requête, le contenu est analysé et une classification de sécurité lui est attribuée. L'évaluation de la sécurité inclut la catégorie et la probabilité de classification du préjudice. Par exemple, si le contenu a été bloqué en raison d'une probabilité élevée de la catégorie "Harcèlement", l'évaluation de sécurité renvoyée aura une catégorie égale à HARASSMENT et la probabilité de préjudice sera définie sur HIGH.

Par défaut, les paramètres de sécurité bloquent le contenu (y compris les invites) ayant une probabilité moyenne ou supérieure d'être dangereux pour tous les filtres. Cette sécurité de référence est conçue pour fonctionner dans la plupart des cas d'utilisation. Vous ne devez donc ajuster vos paramètres de sécurité que si elle est systématiquement requise pour votre application.

Le tableau suivant décrit les paramètres de blocage que vous pouvez ajuster pour chaque catégorie. Par exemple, si vous définissez le paramètre de blocage sur Bloquer peu pour la catégorie Incitation à la haine, tous les contenus ayant un risque élevé d'incitation à la haine sont bloqués. Cependant, toute valeur plus faible est autorisée.

Seuil (Google AI Studio) Seuil (API) Description
Ne rien bloquer BLOCK_NONE Toujours afficher, quelle que soit la probabilité de présence de contenu non sécurisé
Bloquer quelques éléments BLOCK_ONLY_HIGH Bloquer lorsque la probabilité d'un contenu non sécurisé est élevée
Bloquer certains éléments BLOCK_MEDIUM_AND_ABOVE Bloquer lorsque la probabilité moyenne ou élevée de contenu non sécurisé est présente
Bloquer la plupart des éléments BLOCK_LOW_AND_ABOVE Bloquer si la probabilité que le contenu soit dangereux est faible, moyenne ou élevée
N/A HARM_BLOCK_THRESHOLD_UNSPECIFIED Le seuil n'est pas spécifié. Le blocage est effectué selon le seuil par défaut.

Si le seuil n'est pas défini, le seuil de blocage par défaut est Bloquer la plupart (pour gemini-1.5-pro-002 et gemini-1.5-flash-002 uniquement) ou Bloquer certains (dans tous les autres modèles) pour toutes les catégories sauf la catégorie Intégrité civique.

Le seuil de blocage par défaut pour la catégorie Intégrité civique est Bloquer la plupart lorsque vous envoyez des requêtes à l'aide de Google AI Studio et Bloquer aucun lorsque vous utilisez directement l'API Gemini.

Vous pouvez définir ces paramètres pour chaque requête que vous envoyez au service génératif. Pour en savoir plus, consultez la documentation de référence de l'API HarmBlockThreshold.

Commentaires sur la sécurité

generateContent renvoie un GenerateContentResponse qui inclut des commentaires sur la sécurité.

Les commentaires de requête sont inclus dans promptFeedback. Si promptFeedback.blockReason est défini, le contenu de la requête a été bloqué.

Les commentaires sur les réponses candidates sont inclus dans Candidate.finishReason et Candidate.safetyRatings. Si le contenu de la réponse a été bloqué et que finishReason était SAFETY, vous pouvez examiner safetyRatings pour en savoir plus. Le contenu bloqué n'est pas renvoyé.

Ajuster les paramètres de sécurité

Cette section explique comment ajuster les paramètres de sécurité dans Google AI Studio et dans votre code.

Google AI Studio

Vous pouvez ajuster les paramètres de sécurité dans Google AI Studio, mais vous ne pouvez pas les désactiver.

Cliquez sur Edit safety settings (Modifier les paramètres de sécurité) dans le panneau Run settings (Paramètres d'exécution) pour ouvrir la fenêtre modale Run safety settings (Paramètres de sécurité d'exécution). Dans la fenêtre modale, vous pouvez utiliser les curseurs pour ajuster le niveau de filtrage du contenu par catégorie de sécurité:

Lorsque vous envoyez une requête (par exemple, en posant une question au modèle), le message No Content (Aucun contenu) s'affiche si le contenu de la requête est bloqué. Pour en savoir plus, maintenez le pointeur sur le texte Aucun contenu, puis cliquez sur Sécurité.

SDK de l'API Gemini

L'extrait de code suivant montre comment définir les paramètres de sécurité dans votre appel GenerateContent. Cela permet de définir les seuils pour les catégories harcèlement (HARM_CATEGORY_HARASSMENT) et incitation à la haine (HARM_CATEGORY_HATE_SPEECH). Par exemple, définir ces catégories sur BLOCK_LOW_AND_ABOVE bloque tout contenu dont la probabilité d'être du harcèlement ou de l'incitation à la haine est faible ou élevée. Pour comprendre les paramètres de seuil, consultez la section Filtrage de sécurité par requête.

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

Étapes suivantes

  • Pour en savoir plus sur l'API complète, consultez la documentation de référence de l'API.
  • Consultez les consignes de sécurité pour obtenir un aperçu général des considérations de sécurité lors du développement avec des LLM.
  • Découvrez comment évaluer la probabilité par rapport à la gravité avec l'équipe Jigsaw.
  • Apprenez-en plus sur les produits qui contribuent aux solutions de sécurité telles que l'API Perspective. * Vous pouvez utiliser ces paramètres de sécurité pour créer un classificateur de toxicité. Consultez l'exemple de classification pour commencer.