Filtres de sécurité et de contenu

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é est LOW, MEDIUM ou HIGH.
  • BLOCK_MEDIUM_AND_ABOVE : bloquer lorsque le score de probabilité ou le score de gravité est MEDIUM ou HIGH.
  • 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 n'est renvoyée. Pour gemini-2.5-flash et les modèles suivants, OFF est la valeur par défaut.
  • BLOCK_NONE : le paramètre BLOCK_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 ou HIGH.
  • Bloquer la plupart des éléments : bloquer lorsque le score de probabilité est LOW, MEDIUM ou HIGH.

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 :

  1. Dans la section "Vertex AI" de la console Google Cloud , accédez à la page Vertex AI Studio.

    Accéder à Vertex AI Studio

  2. Sous Créer une requête, cliquez sur l'un des boutons pour ouvrir la page de conception de requête.

  3. Cliquez sur Paramètres de sécurité.

    La boîte de dialogue Paramètres de sécurité s'affiche.

  4. Pour chaque catégorie de préjudice, configurez la valeur de seuil souhaitée.

  5. 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

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    HarmCategory,
    HarmBlockThreshold,
    HttpOptions,
    SafetySetting,
)

client = genai.Client(http_options=HttpOptions(api_version="v1"))

system_instruction = "Be as mean as possible."

prompt = """
    Write a list of 5 disrespectful things that I might say to the universe after stubbing my toe in the dark.
"""

safety_settings = [
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HARASSMENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HATE_SPEECH,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
]

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=prompt,
    config=GenerateContentConfig(
        system_instruction=system_instruction,
        safety_settings=safety_settings,
    ),
)

# Response will be `None` if it is blocked.
print(response.text)
# Example response:
#     None

# Finish Reason will be `SAFETY` if it is blocked.
print(response.candidates[0].finish_reason)
# Example response:
#     FinishReason.SAFETY

# For details on all the fields in the response
for each in response.candidates[0].safety_ratings:
    print('\nCategory: ', str(each.category))
    print('Is Blocked:', True if each.blocked else False)
    print('Probability: ', each.probability)
    print('Probability Score: ', each.probability_score)
    print('Severity:', each.severity)
    print('Severity Score:', each.severity_score)
# Example response:
#
#     Category:  HarmCategory.HARM_CATEGORY_HATE_SPEECH
#     Is Blocked: False
#     Probability:  HarmProbability.NEGLIGIBLE
#     Probability Score:  2.547714e-05
#     Severity: HarmSeverity.HARM_SEVERITY_NEGLIGIBLE
#     Severity Score: None
#
#     Category:  HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT
#     Is Blocked: False
#     Probability:  HarmProbability.NEGLIGIBLE
#     Probability Score:  3.6103818e-06
#     Severity: HarmSeverity.HARM_SEVERITY_NEGLIGIBLE
#     Severity Score: None
#
#     Category:  HarmCategory.HARM_CATEGORY_HARASSMENT
#     Is Blocked: True
#     Probability:  HarmProbability.MEDIUM
#     Probability Score:  0.71599233
#     Severity: HarmSeverity.HARM_SEVERITY_MEDIUM
#     Severity Score: 0.30782545
#
#     Category:  HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT
#     Is Blocked: False
#     Probability:  HarmProbability.NEGLIGIBLE
#     Probability Score:  1.5624657e-05
#     Severity: HarmSeverity.HARM_SEVERITY_NEGLIGIBLE
#     Severity Score: None

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

import (
	"context"
	"fmt"
	"io"

	"google.golang.org/genai"
)

// generateTextWithSafety shows how to apply safety settings to a text generation request.
func generateTextWithSafety(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	systemInstruction := &genai.Content{
		Parts: []*genai.Part{
			{Text: "Be as mean as possible."},
		},
		Role: "user",
	}

	prompt := "Write a list of 5 disrespectful things that I might say to the universe after stubbing my toe in the dark."

	safetySettings := []*genai.SafetySetting{
		{Category: genai.HarmCategoryDangerousContent, Threshold: genai.HarmBlockThresholdBlockLowAndAbove},
		{Category: genai.HarmCategoryHarassment, Threshold: genai.HarmBlockThresholdBlockLowAndAbove},
		{Category: genai.HarmCategoryHateSpeech, Threshold: genai.HarmBlockThresholdBlockLowAndAbove},
		{Category: genai.HarmCategorySexuallyExplicit, Threshold: genai.HarmBlockThresholdBlockLowAndAbove},
	}

	config := &genai.GenerateContentConfig{
		SystemInstruction: systemInstruction,
		SafetySettings:    safetySettings,
	}
	modelName := "gemini-2.5-flash"
	resp, err := client.Models.GenerateContent(ctx, modelName,
		[]*genai.Content{{Parts: []*genai.Part{{Text: prompt}}, Role: "user"}},
		config,
	)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	fmt.Fprintln(w, resp.Text())

	if len(resp.Candidates) > 0 {
		fmt.Fprintln(w, "Finish Reason:", resp.Candidates[0].FinishReason)

		for _, rating := range resp.Candidates[0].SafetyRatings {
			fmt.Fprintf(w, "\nCategory: %v\nIs Blocked: %v\nProbability: %v\nProbability Score: %v\nSeverity: %v\nSeverity Score: %v\n",
				rating.Category,
				rating.Blocked,
				rating.Probability,
				rating.ProbabilityScore,
				rating.Severity,
				rating.SeverityScore,
			)
		}
	}

	// Example response:
	// Category: HARM_CATEGORY_HATE_SPEECH
	// Is Blocked: false
	// Probability: NEGLIGIBLE
	// Probability Score: 8.996795e-06
	// Severity: HARM_SEVERITY_NEGLIGIBLE
	// Severity Score: 0.04771039
	//
	// Category: HARM_CATEGORY_DANGEROUS_CONTENT
	// Is Blocked: false
	// Probability: NEGLIGIBLE
	// Probability Score: 2.2431707e-06
	// Severity: HARM_SEVERITY_NEGLIGIBLE
	// Severity Score: 0
	//
	// Category: HARM_CATEGORY_HARASSMENT
	// Is Blocked: false
	// Probability: NEGLIGIBLE
	// Probability Score: 0.00026123362
	// Severity: HARM_SEVERITY_NEGLIGIBLE
	// Severity Score: 0.022358216
	//
	// Category: HARM_CATEGORY_SEXUALLY_EXPLICIT
	// Is Blocked: false
	// Probability: NEGLIGIBLE
	// Probability Score: 6.1352006e-07
	// Severity: HARM_SEVERITY_NEGLIGIBLE
	// Severity Score: 0.020111412

	return nil
}

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 que BLOCK_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