Les modèles d'IA générative de Google, comme Gemini 1.5 Flash et Gemini 1.5 Pro, sont conçus en faisant de la sécurité la première des priorités. Toutefois, ils peuvent toujours générer des réponses nuisibles, en particulier lorsqu'ils reçoivent des requêtes explicites en ce sens. Pour renforcer la sécurité et limiter les cas d'utilisation abusive, vous pouvez configurer des filtres de sécurité afin de bloquer les réponses potentiellement nuisibles.
Cette page décrit chacun des types de filtres de sécurité et présente les concepts de sécurité clés. Pour les filtres configurables, elle explique comment configurer les seuils de blocage de chaque catégorie de préjudice, afin de contrôler la fréquence à laquelle les requêtes et les réponses sont bloquées.
Les filtres de sécurité agissent comme une barrière, empêchant la génération de résultats nuisibles, mais n'influencent pas directement le comportement du modèle. Pour en savoir plus sur la directionnalité du modèle, consultez la section Instructions système.
Requêtes non sécurisées
L'API Gemini Vertex AI fournit l'un des codes enum
suivants pour justifier le refus d'une requête :
Enum | Type de filtre | Description |
---|---|---|
PROHIBITED_CONTENT | Filtre de sécurité non configurable | La requête a été bloquée, car elle a été signalée comme contenant du contenu interdit, généralement du contenu d'abus sexuels sur mineurs. |
BLOCKED_REASON_UNSPECIFIED | N/A | Le motif du blocage de la requête n'est pas spécifié. |
OTHER | N/A | Ce code enum englobe tous les autres motifs de blocage d'une requête. Notez que l'API Gemini Vertex AI n'est pas compatible avec toutes les langues. Pour obtenir la liste des langues disponibles, consultez la page Langues compatibles avec Gemini. |
Pour en savoir plus, consultez la section dédiée au code BlockedReason.
Voici un exemple de sortie de l'API Gemini Vertex AI lorsqu'une requête est bloquée car contenant un PROHIBITED_CONTENT
:
{ "promptFeedback": { "blockReason": "PROHIBITED_CONTENT" }, "usageMetadata": { "promptTokenCount": 7, "totalTokenCount": 7 } }
Réponses non sécurisées
Les filtres suivants peuvent détecter et bloquer les réponses potentiellement non sécurisées :
- Filtres de sécurité non configurables, qui bloquent les contenus d'abus sexuels sur mineurs et les informations permettant d'identifier personnellement un utilisateur.
- Filtres de sécurité configurables, qui bloquent le contenu non sécurisé en fonction d'une liste de catégories de préjudice et de leurs seuils de blocage configurés par l'utilisateur. Vous pouvez configurer des seuils de blocage pour chacun de ces préjudices en fonction de votre cas d'utilisation et de votre activité. Pour en savoir plus, consultez la section Filtres de sécurité configurables.
- Filtres de citation, qui empêchent l'utilisation abusive et garantissent la citation appropriée des données protégées par des droits d'auteur. Pour en savoir plus, consultez la section Filtre de citation.
Un LLM génère des réponses sous forme d'unités de texte appelées jetons. Un modèle cesse de générer des jetons lorsqu'il atteint un point d'arrêt naturel ou lorsqu'un des filtres bloque la réponse. L'API Gemini Vertex AI fournit l'un des codes enum
suivants pour expliquer l'arrêt de la génération de jetons :
Enum | Type de filtre | Description |
---|---|---|
STOP | N/A | Ce code enum indique que le modèle a atteint un point d'arrêt naturel, ou que les conditions de la séquence d'arrêt définie sont réunies. |
MAX_TOKENS | N/A | La génération de jetons a été arrêtée, car le modèle a atteint le nombre maximal de jetons spécifié dans la requête. |
SAFETY | Filtre de sécurité configurable | La génération de jeton a été interrompue, car la réponse a été signalée pour des raisons de sécurité. |
RECITATION | Filtre de citation | La génération du jeton a été interrompue, car la réponse a été signalée comme contenant des citations non autorisées. |
SPII | Filtre de sécurité non configurable | La génération du jeton a été interrompue, car la réponse a été signalée comme contenant des informations personnelles sensibles. |
PROHIBITED_CONTENT | Filtre de sécurité non configurable | La génération du jeton a été interrompue, car la réponse a été signalée comme présentant du contenu interdit, généralement du contenu d'abus sexuels sur mineurs. |
FINISH_REASON_UNSPECIFIED | N/A | Le motif d'interruption n'est pas spécifié. |
AUTRE | N/A | Ce code enum englobe tous les autres motifs d'arrêt de la génération de jetons. Notez que la génération de jetons n'est pas disponible pour toutes les langues. Pour obtenir la liste des langues disponibles, consultez la page Langues compatibles avec Gemini. |
Pour en savoir plus, consultez la section dédiée au code FinishReason.
Si un filtre bloque la réponse, le champ Candidate.content
de la réponse est annulé. Il ne fournit aucun commentaire au modèle.
Filtres de sécurité configurables
Les filtres de sécurité évaluent le contenu par rapport à une liste de préjudices. Pour chaque catégorie de préjudice, les filtres de sécurité attribuent un score de sécurité basé sur la probabilité que le contenu soit non sécurisé, et un autre score de sécurité basé sur la gravité du contenu nuisible.
Les filtres de sécurité configurables ne disposent pas d'un processus de gestion des versions qui soit indépendant de celui applicable aux versions du modèle. Google ne mettra pas à jour le filtre de sécurité configurable pour une version déjà publiée d'un modèle. Toutefois, il peut mettre à jour le filtre de sécurité configurable pour une future version d'un modèle.
Catégories de préjudice
Les filtres de sécurité évaluent le contenu en fonction des catégories de préjudice suivantes :
Catégorie de préjudice | Définition |
---|---|
Incitation à la haine | Commentaires négatifs ou offensants ciblant l'identité et/ou les attributs protégés. |
Harcèlement | Commentaires malveillants, intimidants ou abusifs ciblant une autre personne |
Contenu à caractère sexuel explicite | Contient des références à des actes sexuels ou à d'autres contenus obscènes. |
Contenu dangereux | Encourage ou facilite l'accès à des activités, produits et services dangereux. |
Comparaison des scores de probabilité et de gravité
Le score de sécurité de probabilité reflète la probabilité qu'une réponse du modèle soit associée au préjudice respectif. Il est associé à un score de confiance compris entre 0.0
et 1.0
, arrondi à un chiffre après la virgule.
Le score de confiance est discretisé en quatre niveaux de confiance en termes de sécurité : NEGLIGIBLE
, LOW
, MEDIUM
et HIGH
.
Le score de sécurité de gravité reflète l'ampleur du préjudice associé à une réponse du modèle. Il est associé à un score de gravité compris entre 0.0
et 1.0
, arrondi à un chiffre après la virgule. Le score de gravité est discretisé en quatre niveaux : NEGLIGIBLE
, LOW
, MEDIUM
et HIGH
.
Un contenu peut avoir un score de probabilité faible et un score de gravité élevé, ou un score de probabilité élevé et un score de gravité faible.
Configurer des filtres de sécurité
Vous pouvez configurer le filtre de sécurité à l'aide de l'API Gemini Vertex AI ou de la console Google Cloud.
API Gemini Vertex AI
L'API Gemini Vertex AI fournit deux méthodes de blocage des contenus nuisibles :
- GRAVITÉ : cette méthode utilise à la fois des scores de probabilité et de gravité.
- PROBABILITÉ : cette méthode utilise uniquement le score de probabilité.
La méthode par défaut est PROBABILITY
. Pour en savoir plus, consultez la documentation de référence de l'API HarmBlockMethod.
L'API Gemini Vertex AI fournit les seuils de "blocage des contenus nuisibles" suivants :
- BLOCK_LOW_AND_ABOVE : bloquer lorsque le score de probabilité ou le score de gravité est
LOW
,MEDIUM
ouHIGH
. - BLOCK_MEDIUM_AND_ABOVE : bloquer lorsque le score de probabilité ou le score de gravité est
MEDIUM
ouHIGH
. Pourgemini-1.5-flash-001
etgemini-1.5-pro-001
,BLOCK_MEDIUM_AND_ABOVE
est la valeur par défaut. - BLOCK_ONLY_HIGH : bloquer lorsque le score de probabilité ou le score de gravité est
HIGH
. - HARM_BLOCK_THRESHOLD_UNSPECIFIED : bloquer en utilisant le seuil par défaut.
- OFF : aucun blocage de réponse automatique ; aucune métadonnée de sécurité n'est renvoyée.
Pour
gemini-1.5-flash-002
etgemini-1.5-pro-002
, la valeur par défaut estOFF
. - BLOCK_NONE : le paramètre de sécurité
BLOCK_NONE
supprime le blocage automatique des réponses. À la place, vous pouvez configurer vos propres consignes de sécurité avec les scores renvoyés. Il s'agit d'un champ restreint qui n'est pas disponible pour tous les utilisateurs dans les versions de modèle en DG.
Par exemple, le code Python suivant montre comment définir la méthode de blocage des contenus nuisibles sur SEVERITY
et le seuil de blocage des contenus nuisibles sur BLOCK_ONLY_HIGH
pour la catégorie des contenus dangereux :
generative_models.SafetySetting(
category=generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
method=generative_models.HarmBlockMethod.SEVERITY,
threshold=generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
),
La plupart des contenus classés comme dangereux seront ainsi bloqués. Pour en savoir plus, consultez la documentation de référence de l'API HarmBlockThreshold.
Pour obtenir des exemples complets en Python, Node.js, Java, Go, C# et REST, consultez la section Exemples de configuration de filtres de sécurité.
console Google Cloud
La console Google Cloud vous permet de configurer un seuil pour chaque attribut de sécurité. Le filtre de sécurité n'utilise que les scores de probabilité. Il n'existe aucune option permettant d'utiliser les scores de gravité.
La console Google Cloud fournit les valeurs de seuil suivantes :
- Désactivé (par défaut) : le blocage automatique des réponses est désactivé.
- Bloquer quelques contenus : bloquer lorsque le score de probabilité est
HIGH
. - Bloquer certains contenus : bloquer lorsque le score de probabilité est
MEDIUM
ouHIGH
. - Bloquer la plupart des contenus : bloquer lorsque le score de probabilité est
LOW
,MEDIUM
ouHIGH
.
Par exemple, si vous définissez le paramètre de blocage sur Bloquer quelques contenus pour la catégorie de contenu dangereux, tous les éléments ayant une haute probabilité d'être des contenus dangereux sont bloqués. Cependant, tous ceux ayant une faible probabilité sont autorisés. Le seuil par défaut est de Block some
.
Pour définir les seuils, procédez comme suit :
Dans la section "Vertex AI" de la console Google Cloud, accédez à la page Vertex AI Studio.
Sous Créer une requête, cliquez sur l'un des boutons pour ouvrir la page de conception de requête.
Cliquez sur Paramètres de sécurité.
La boîte de dialogue Paramètres de sécurité s'affiche.
Pour chaque catégorie de préjudice, configurez la valeur de seuil souhaitée.
Cliquez sur Enregistrer.
Exemple de résultat lorsqu'une réponse est bloquée par le filtre de sécurité configurable
Voici un exemple de sortie de l'API Gemini Vertex AI lorsqu'une réponse est bloquée par le filtre de sécurité configurable car présentant du contenu dangereux :
{ "candidates": [{ "finishReason": "SAFETY", "safetyRatings": [{ "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE", "probabilityScore": 0.11027937, "severity": "HARM_SEVERITY_LOW", "severityScore": 0.28487435 }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "HIGH", "blocked": true, "probabilityScore": 0.95422274, "severity": "HARM_SEVERITY_MEDIUM", "severityScore": 0.43398145 }, { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE", "probabilityScore": 0.11085559, "severity": "HARM_SEVERITY_NEGLIGIBLE", "severityScore": 0.19027223 }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE", "probabilityScore": 0.22901751, "severity": "HARM_SEVERITY_NEGLIGIBLE", "severityScore": 0.09089675 }] }], "usageMetadata": { "promptTokenCount": 38, "totalTokenCount": 38 } }
Exemples de configuration de filtres de sécurité
Les exemples suivants montrent comment configurer le filtre de sécurité à l'aide de l'API Gemini Vertex AI :
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Go.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
C#
Avant d'essayer cet exemple, suivez les instructions de configuration pour C# décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI C#.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
REST
Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester une requête textuelle. L'exemple suivant envoie une requête au point de terminaison du modèle de l'éditeur.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION : région dans laquelle traiter la requête. Les options disponibles sont les suivantes :
Cliquer pour développer une liste partielle des régions disponibles
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- PROJECT_ID : l'ID de votre projet.
- MODEL_ID : ID du modèle multimodal que vous souhaitez utiliser. Vous disposez des options suivantes :
gemini-1.0-pro
gemini-1.0-pro-vision
- ROLE : rôle dans une conversation associée au contenu. La spécification d'un rôle est requise, même dans les cas d'utilisation à un seul tour.
Les valeurs acceptées incluent les suivantes :
USER
: spécifie le contenu envoyé par vous.MODEL
: spécifie la réponse du modèle.
- TEXT : instructions textuelles à inclure dans la requête.
- SAFETY_CATEGORY : catégorie de sécurité pour laquelle configurer un seuil. Les valeurs acceptées incluent les suivantes :
Cliquer pour développer les catégories de sécurité
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD : seuil de blocage des réponses susceptibles d'appartenir à la catégorie de sécurité spécifiée en fonction de la probabilité. Les valeurs acceptées incluent les suivantes :
Cliquer pour développer les seuils de blocage
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(par défaut)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
bloque le plus, tandis queBLOCK_ONLY_HIGH
bloque le moins.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent
Corps JSON de la requête :
{ "contents": { "role": "ROLE", "parts": { "text": "TEXT" } }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante.
Exemple de commande curl
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro"
PROJECT_ID="test-project"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:streamGenerateContent -d \
$'{
"contents": {
"role": "user",
"parts": { "text": "Hello!" }
},
"safety_settings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "OFF"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_ONLY_HIGH"
}
]
}'
Filtre de citation
Les fonctionnalités de code génératif de Vertex AI sont destinées à produire du contenu original. Par conception, Gemini limite la probabilité que le contenu existant soit reproduit de manière détaillée. Si une fonctionnalité Gemini reprend largement le contenu d'une page Web, Gemini cite cette page.
Parfois, le même contenu peut figurer sur plusieurs pages Web. Gemini tente alors de vous rediriger vers une source consultée fréquemment. Dans le cas de citations de dépôts de code, celles-ci peuvent également faire référence à une licence Open Source applicable. Il vous incombe de respecter les conditions de cette licence.
Pour en savoir plus sur les métadonnées du filtre de citation, consultez la documentation de référence de l'API Citation.
Filtre d'intégrité civique
Le filtre d'intégrité civique détecte et bloque les requêtes qui mentionnent des élections ou des candidats politiques, ou qui leur sont liés. Ce filtre est désactivé par défaut. Pour l'activer, définissez le seuil de blocage de CIVIC_INTEGRITY
sur l'une des valeurs suivantes. La valeur que vous spécifiez n'a pas d'importance.
BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
BLOCK_ONLY_HIGH
Le code Python suivant permet d'activer le filtre d'intégrité civique :
generative_models.SafetySetting(
category=generative_models.HarmCategory.HarmCategory.CIVIC_INTEGRITY,
threshold=generative_models.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
),
Pour en savoir plus sur le filtre d'intégrité civique, contactez votre représentant Google Cloud.
Bonnes pratiques
Bien que les filtres de sécurité permettent d'éviter les contenus non sécurisés, ils peuvent parfois bloquer des contenus inoffensifs ou ne pas bloquer des contenus nuisibles. Les modèles avancés tels que Gemini 1.5 Flash et Gemini 1.5 Pro sont conçus pour générer des réponses sécurisées, même sans filtres. Testez différents paramètres de filtre pour trouver le juste équilibre entre sécurité et autorisation de contenus appropriés.
Étape suivante
- En savoir plus sur l'IA responsable.
- En savoir plus sur la gouvernance des données.