Les modèles d'IA générative de Google, comme Gemini 1.5 Flash et Gemini 1.5 Pro, sont conçus pour privilégier la sécurité. Toutefois, ils peuvent toujours générer des réponses nuisibles, en particulier lorsqu'ils sont explicitement sollicités. 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 dangereuses.
Cette page décrit chacun des types de filtres de sécurité et présente les concepts clés de la sécurité. Pour les filtres configurables, elle explique comment configurer les seuils de blocage de chaque catégorie de préjudice pour 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 Vertex AI Gemini fournit l'un des codes enum
suivants pour expliquer pourquoi une requête été refusée:
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é. |
AUTRE | N/A | Cette énumération fait référence à tous les autres motifs de blocage d'une requête. Notez que l'API Vertex AI Gemini n'est pas compatible avec toutes les langues. Pour obtenir la liste des langues disponibles, consultez la page Langues acceptées par Gemini. |
Pour en savoir plus, consultez BlockedReason.
Voici un exemple de sortie de l'API Vertex AI Gemini lorsqu'une requête est bloquée pour contenir 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 dangereuses:
- 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 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 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 Vertex AI Gemini fournit l'un des codes enum
suivants pour expliquer pourquoi la génération de jetons a été arrêtée:
Enum | Type de filtre | Description |
---|---|---|
STOP | N/A | Cette énumération indique que le modèle a atteint un point d'arrêt naturel ou la séquence d'arrêt fournie. |
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 pour contenir 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 pour contenir 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 pour contenir du contenu interdit, généralement du contenu d'abus sexuels sur mineurs. |
FINISH_REASON_UNSPECIFIED | N/A | Le motif de fin n'est pas spécifié. |
AUTRE | N/A | Cette énumération fait référence à toutes les autres raisons qui arrêtent 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 acceptées par Gemini. |
Pour en savoir plus, consultez 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 risques. 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 dangereux et un autre score de sécurité basé sur la gravité du contenu dangereux.
Les filtres de sécurité configurables ne sont pas versionnés indépendamment des 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 à une décimale.
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 de la dangerosité d'une réponse du modèle. Il est associé à un score de gravité compris entre 0.0
et 1.0
, arrondi à une décimale. 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 Vertex AI Gemini ou de la console Google Cloud.
API Gemini Vertex AI
L'API Vertex AI Gemini fournit deux méthodes de blocage des contenus dangereux:
- 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 Vertex AI Gemini fournit les seuils de "blocage des contenus dangereux" 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.
- DÉSACTIVÉ: aucun blocage de réponse automatique ni aucune métadonnée de sécurité ne sont renvoyés.
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. 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 GA.
Par exemple, le code Python suivant montre comment définir la méthode de blocage des contenus dangereux sur SEVERITY
et le seuil de blocage des contenus dangereux sur BLOCK_ONLY_HIGH
pour la catégorie de contenu 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 filtre 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 des réponses automatiques 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 les contenus dont 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 Vertex AI Gemini lorsqu'une réponse est bloquée par le filtre de sécurité configurable pour contenir 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 Vertex AI Gemini:
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 de manière extensive le contenu d'une page Web, Gemini cite cette page.
Parfois, le même contenu peut être trouvé sur plusieurs pages Web. Gemini tente de vous rediriger vers une source populaire. 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 vous montre comment 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 dangereux, ils peuvent parfois bloquer des contenus sans danger ou ne pas bloquer des contenus dangereux. 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.