L'API Gemini fournit des paramètres de sécurité que vous pouvez ajuster pendant 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 afin de restreindre ou d'autoriser certains types de contenu.
Ce guide explique comment l'API Gemini gère les paramètres de sécurité et le filtrage, et explique 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 nuisibles ciblant l'identité et/ou des attributs protégés. |
Incitation à la haine | Contenu offensant, irrespectueux ou grossier. |
Contenus à caractère sexuel explicite | Contient des références à des actes sexuels ou à d'autres contenus obscènes. |
Dangereux | Encourage, facilite ou encourage des actes nuisibles. |
Vous pouvez utiliser ces filtres pour ajuster ce qui est adapté à votre cas d'utilisation. Par exemple, si vous créez des dialogues de jeu vidéo, vous pouvez estimer que l'autorisation d'autres contenus classés dans la catégorie Dangereux en raison de la nature du jeu est acceptable.
En plus des filtres de sécurité ajustables, l'API Gemini dispose de protections intégrées contre les principaux préjudices, tels que les contenus mettant en danger la sécurité des enfants. Ces types de préjudices sont toujours bloqués et ne peuvent pas être modifiés.
Niveau de filtrage de la sécurité du contenu
L'API Gemini classe le niveau de probabilité d'un contenu dangereux comme suit : HIGH
, MEDIUM
, LOW
ou NEGLIGIBLE
.
L'API Gemini bloque le contenu en fonction de la probabilité qu'il soit dangereux, et non en fonction de sa gravité. Il est important de tenir compte de cet aspect, car certains contenus peuvent présenter une faible probabilité d'être dangereux, même si la gravité des blessures peut rester élevée. Par exemple, en comparant les phrases:
- Le robot m'a frappé.
- Le robot m'a tranché.
La première phrase peut augmenter la probabilité d'être non fiable, mais vous pouvez considérer que la deuxième phrase est plus sévère en termes de violence. Il est donc important de tester soigneusement le niveau de blocage nécessaire pour répondre à vos principaux cas d'utilisation, tout en limitant les dommages aux 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 note de sécurité lui est attribuée. La cote de sécurité inclut la catégorie et la probabilité de la classification des dommages. Par exemple, si le contenu a été bloqué en raison d'une probabilité élevée pour la catégorie de harcèlement, la catégorie de sécurité renvoyée est HARASSMENT
et la probabilité de préjudice est 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 plus élevée d'être dangereux pour tous les filtres. Cette sécurité de base 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 cela est systématiquement requis 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 quelques pour la catégorie Incitation à la haine, tous les contenus présentant 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é de présenter du contenu 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 cette règle n'est pas configurée, le paramètre de blocage par défaut est Bloquer certains pour toutes les catégories.
Vous pouvez définir ces paramètres pour chaque requête adressée 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 de sécurité.
Les commentaires sur les invites sont inclus dans promptFeedback
. Si promptFeedback.blockReason
est défini, le contenu de l'invite a été bloqué.
Les commentaires sur les candidats à la réponse sont inclus dans finishReason
et safetyRatings
. Si le contenu de la réponse a été bloqué et que la valeur finishReason
était SAFETY
, vous pouvez inspecter 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 (Exécuter les paramètres de sécurité). Dans la fenêtre modale, vous pouvez ajuster le niveau de filtrage du contenu par catégorie de sécurité à l'aide des curseurs:
Lorsque vous envoyez une requête (par exemple, en posant une question au modèle), le message
Aucun contenu s'affiche si le contenu de la requête est bloqué. Pour en savoir plus, pointez 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
. Les catégories de harcèlement (HARM_CATEGORY_HARASSMENT
) et d'incitation à la haine (HARM_CATEGORY_HATE_SPEECH
) sont définies sur BLOCK_LOW_AND_ABOVE
, ce qui bloque tout contenu qui présente une probabilité faible ou plus élevée d'être du harcèlement ou de l'incitation à la haine.
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 });
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);
Étapes suivantes
- Pour en savoir plus sur l'API complète, consultez la documentation de référence de l'API.
- Consultez les conseils de sécurité pour obtenir un aperçu général des considérations de sécurité lors du développement avec des LLM.
- En savoir plus sur l'évaluation des probabilités par rapport à la gravité avec l'équipe Jigsaw
- Apprenez-en plus sur les produits qui contribuent aux solutions de sécurité, tels que l'API Perspective. * Vous pouvez utiliser ces paramètres de sécurité pour créer un classificateur de toxicité. Pour commencer, consultez l'exemple de classification.