Les modèles d'IA générative de Google, comme Gemini 2.5 Flash, 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 contenu afin de bloquer les réponses potentiellement nuisibles.
Cette page décrit chacun des types de filtres de contenu et de sécurité et présente les concepts de sécurité clés. Pour les filtres de contenu 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. Des exemples sont également fournis pour montrer comment programmer un filtre de contenu configurable.
Les filtres de sécurité et de contenu 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 pour la sécurité.
Requêtes non sécurisées
L'API Gemini dans 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 dans 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 des exemples de sortie de l'API Gemini dans Vertex AI pour les commentaires sur les requêtes.
Si une requête est bloquée, promptFeedback
contient un blockReason
. Si une requête n'est pas bloquée, promptFeedback
est vide, comme dans l'exemple suivant :
{
"promptFeedback": {
},
"usageMetadata": {
"promptTokenCount": 7,
"totalTokenCount": 7
}
}
L'exemple suivant montre une requête bloquée, car elle contient PROHIBITED_CONTENT
:
{
"promptFeedback": {
"blockReason": "PROHIBITED_CONTENT"
},
"usageMetadata": {
"promptTokenCount": 7,
"totalTokenCount": 7
}
}
L'exemple suivant montre une requête bloquée pour une raison non spécifiée :
{
"promptFeedback": {
"blockReason": "BLOCKED_REASON_UNSPECIFIED"
},
"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 contenu 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 contenu configurables.
- Filtres de citation, qui fournissent des citations pour les sources. 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 dans 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 contenu configurable | La génération de jetons a été arrêtée, car la réponse a été signalée comme présentant du contenu nuisible. |
RECITATION |
Filtre de citation | La génération de jetons a été arrêtée, car elle est susceptible de contenir une récitation. |
SPII |
Filtre de sécurité non configurable | La génération de jetons a été arrêtée, 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 de jetons a été arrêtée, 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é. |
OTHER |
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 contenu configurables
Les filtres de contenu évaluent le contenu par rapport à une liste de préjudices. Pour chaque catégorie de préjudice, les filtres de contenu attribuent un score basé sur la probabilité que le contenu soit nuisible, et un autre score basé sur la gravité du contenu nuisible.
Les filtres de contenu 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 contenu configurable pour une version déjà publiée d'un modèle. Toutefois, il peut mettre à jour le filtre de contenu configurable pour une future version d'un modèle.
Catégories de préjudice
Les filtres de contenu é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 menaçants, intimidants ou abusifs ciblant une autre personne. |
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 : NEGLIGIBLE
, LOW
, MEDIUM
et HIGH
.
Le score 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.
Options de configuration du filtre de contenu
Vous pouvez configurer des filtres de contenu à l'aide de l'API Gemini dans Vertex AI ou de la console Google Cloud .
API Gemini dans Vertex AI
L'API Gemini dans Vertex AI fournit deux méthodes de blocage des contenus nuisibles :
- SEVERITY : cette méthode utilise à la fois des scores de probabilité et de gravité.
- PROBABILITY : cette méthode utilise uniquement le score de probabilité.
La méthode par défaut est SEVERITY
. Pour les modèles antérieurs à gemini-1.5-flash
et gemini-1.5-pro
, 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 dans 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é estLOW
,MEDIUM
ouHIGH
.BLOCK_MEDIUM_AND_ABOVE
: bloquer lorsque le score de probabilité ou le score de gravité estMEDIUM
ouHIGH
.BLOCK_ONLY_HIGH
: bloquer lorsque le score de probabilité ou le score de gravité estHIGH
.HARM_BLOCK_THRESHOLD_UNSPECIFIED
: bloquer en utilisant le seuil par défaut.OFF
: aucun blocage de réponse automatique ; aucune métadonnée n'est renvoyée. Pourgemini-2.5-flash
et les modèles suivants,OFF
est la valeur par défaut.BLOCK_NONE
: le paramètreBLOCK_NONE
supprime le blocage automatique des réponses. À la place, vous pouvez configurer vos propres consignes relatives au contenu 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 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,
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 contenu.
Console Google Cloud
La console Google Cloud vous permet de configurer un seuil pour chaque attribut de contenu. Le filtre de contenu 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 éléments : bloquer lorsque le score de probabilité est
HIGH
. - Bloquer certains éléments : bloquer lorsque le score de probabilité est
MEDIUM
ouHIGH
. - Bloquer la plupart des éléments : bloquer lorsque le score de probabilité est
LOW
,MEDIUM
ouHIGH
.
Par exemple, si vous définissez le paramètre de blocage sur Bloquer quelques éléments 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.
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 pour une réponse bloquée
Voici un exemple de sortie de l'API Gemini dans Vertex AI lorsqu'une réponse est bloquée par le filtre de contenu 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
}
}
Implémenter une configuration de filtre de contenu
Les exemples suivants montrent comment configurer le filtre de contenu à l'aide de l'API Gemini dans Vertex AI :
Python
Installer
pip install --upgrade google-genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
Découvrez comment installer ou mettre à jour le Go.
Pour en savoir plus, lisez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
REST
Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester un prompt textuel. 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 incluent les suivantes :
Cliquer pour développer la liste partielle des régions disponibles
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- PROJECT_ID : ID de votre projet.
- MODEL_ID : ID du modèle multimodal que vous souhaitez utiliser, comme
gemini-2.5-flash
. - 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 que vous envoyez.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" } }, "safetySettings": { "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-2.5-flash"
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"
}
]
}'
Classificateur de jailbreak
Certaines requêtes tentent de contourner les consignes de sécurité, les contraintes éthiques ou les instructions opérationnelles prévues, ce qui peut entraîner des résultats potentiellement dangereux, biaisés ou inappropriés. Le classificateur de jailbreak détecte et, selon la configuration, bloque les requêtes qui tentent de contourner les défenses du modèle.
Ce filtre est désactivé par défaut. Pour l'activer, définissez le seuil de blocage de JAILBREAK
sur l'une des valeurs suivantes :
BLOCK_NONE
BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
BLOCK_ONLY_HIGH
Le code suivant montre comment activer ce filtre anti-jailbreak :
generative_models.SafetySetting(
category=generative_models.HarmCategory.JAILBREAK,
threshold=generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
)
Si le contenu est bloqué par le classificateur de jailbreak, vous pouvez vous attendre à un résultat semblable à celui-ci :
{
prompt_feedback: { # [15B]
block_reason: JAILBREAK
safety_ratings: [ # [118]
{ # 0 [118]
category: HARM_CATEGORY_JAILBREAK
blocked: true
severity: HARM_SEVERITY_MEDIUM
severity_score: 0.76953125
}
]
}
}
Si vous définissez HarmBlockMethod
sur PROBABILITY
, safety_ratings
contient probability
et probability_score
au lieu de severity
et severity_score
. Si la requête n'est pas bloquée ni signalée, le modèle renvoie tout de même des notes de sécurité en fonction de HarmBlockMethod
.
Facturation
Comme les autres filtres de sécurité Gemini, l'utilisation du classificateur de jailbreak est gratuite.
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.
Bonnes pratiques
Bien que les filtres de contenu 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 2.5 Flash 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 les instructions système pour la sécurité
- En savoir plus sur la surveillance des utilisations abusives
- En savoir plus sur l'IA responsable
- Découvrez comment traiter les réponses bloquées.