Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Blocage des images préjudiciables à l’aide de filtres de contenu
Les barrières de protection Amazon Bedrock peuvent aider à bloquer les images inappropriées ou préjudiciables lors de la configuration des filtres de contenu dans une barrière de protection.
Conditions préalables et limitations
-
Cette fonctionnalité n’est prise en charge que pour les images et n’est pas prise en charge pour les images contenant du contenu vidéo intégré.
-
Cette fonctionnalité est généralement disponible dans les Régions AWS USA Est (Virginie du Nord), USA Ouest (Oregon), Europe (Francfort) et Asie-Pacifique (Tokyo), où elle est prise en charge pour les catégories haine, insultes, relations sexuelles, violence, inconduite et attaque d’invites dans les filtres de contenu.
-
Cette fonctionnalité est disponible en version préliminaire dans les Régions AWS USA Est (Ohio), en Asie-Pacifique (Mumbai, Séoul, Singapour, Tokyo), en Europe (Irlande, Londres) et US GovCloud (USA Ouest), où elle est prise en charge pour les catégories haine, insultes, relations sexuelles et violence dans les filtres de contenu.
-
Les dimensions d’image maximales autorisées pour cette fonctionnalité sont de 8 000 x 8 000 (pour les fichiers JPEG et PNG).
-
Les utilisateurs peuvent charger des images d’une taille maximale de 4 Mo, avec un maximum de 20 images pour une seule demande.
-
Limite par défaut de 25 images par seconde. Cette valeur n’est pas configurable.
-
Seuls les formats PNG et JPEG sont pris en charge pour le contenu d’image.
Présentation d
La détection et le blocage d’images préjudiciables ne sont pris en charge que pour les images ou les images contenant du texte. Lors de la création d’une barrière de protection, les utilisateurs peuvent sélectionner l’option image seule ou avec l’option texte et régler l’intensité de filtrage correspondante sur AUCUNE, FAIBLE, MOYENNE ou ÉLEVÉE. Ces seuils seront communs au contenu de texte et d’image si les deux modalités sont sélectionnées. Les barrières de protection évalueront les images envoyées en entrée par les utilisateurs ou générées en tant que sorties à partir des réponses du modèle.
Les catégories prises en charge pour la détection du contenu d’image préjudiciable sont décrites ci-dessous :
-
Haine : décrit les contenus qui discriminent, critiquent, insultent, dénoncent ou déshumanise une personne ou un groupe de personnes sur la base d’une identité (telle que la race, l’origine ethnique, le sexe, la religion, l’orientation sexuelle, les capacités et l’origine nationale). Cela comprend également du contenu graphique et visuel réel présentant des symboles de groupes haineux, des symboles haineux et des images associées à diverses organisations promouvant la discrimination, le racisme et l’intolérance.
-
Insultes : décrit le contenu qui inclut un langage dégradant, humiliant, moqueur, insultant ou dénigrant. Ce type de langage est également qualifié d’intimidation. Cela englobe également diverses formes de gestes grossiers, irrespectueux ou offensants destinés à exprimer du mépris, de la colère ou de la désapprobation.
-
Relations sexuelles : décrit le contenu qui indique un intérêt, une activité ou une excitation sexuelle en utilisant des références directes ou indirectes à des parties du corps, à des traits physiques ou au sexe. Cela comprend également des images montrant des parties intimes et des activités sexuelles impliquant des rapports sexuels. Cette catégorie comprend également les dessins animés, les dessins, les croquis et autres contenus illustrés sur des thèmes sexuels.
-
Violence : décrit le contenu qui inclut la glorification ou les menaces d’infliger une douleur physique ou des blessures à une personne, à un groupe ou à un objet. Cela inclut également les images liées aux armes destinées à blesser.
-
Inconduite : décrit les invites de saisie et les réponses du modèle qui visent à obtenir ou à fournir des informations sur la façon de se livrer à des activités criminelles, de blesser, de frauder ou de tirer parti d’une personne, d’un groupe ou d’une institution.
-
Attaque d’invites : décrit les instructions utilisateur destinées à contourner les fonctionnalités de sécurité et de modération d’un modèle de fondation afin de générer du contenu préjudiciable (également appelé débridage), et à ignorer et à annuler les instructions spécifiées par le développeur (ce que l’on appelle une injection d’invite). Nécessite l’utilisation d’un balisage d’entrée afin d’appliquer une attaque d’invites. La détection des attaques d’invites nécessite l’utilisation de balises d’entrée.
Rubriques
Utilisation du filtre de contenu d’image
Création ou mise à jour d’une barrière de protection avec des filtres de contenu pour les images
Lors de la création d’une nouvelle barrière de protection ou de la mise à jour d’une barrière de protection existante, les utilisateurs verront désormais une option permettant de sélectionner une image en plus de l’option de texte existante.
Note
Par défaut, l’option de texte est activée et l’option d’image doit être explicitement activée. Les utilisateurs peuvent choisir à la fois le texte et l’image ou l’un d’entre eux en fonction du cas d’utilisation.
Niveaux de classification et de blocage des filtres
Le filtrage est effectué sur la base de la classification de confiance des entrées utilisateur et des réponses du modèle de fondation. Toutes les entrées utilisateur et les réponses du modèle sont classées selon quatre niveaux d’intensité : aucune, faible, moyenne et élevée. L’intensité du filtre détermine la sensibilité du filtrage des contenus préjudiciables. À mesure que l’intensité du filtre augmente, la probabilité de filtrer le contenu préjudiciable augmente et la probabilité de voir du contenu préjudiciable dans votre application diminue. Lorsque les options d’image et de texte sont sélectionnées, la même intensité de filtre est appliquée aux deux modalités pour une catégorie particulière.
Pour configurer les filtres d’image et de texte pour les catégories préjudiciables, sélectionnez Configurer le filtre des catégories préjudiciables.
-
Sélectionnez Texte et/ou Image pour filtrer le contenu du texte ou de l’image à partir des invites ou des réponses vers et depuis le modèle.
-
Sélectionnez Aucun, Faible, Moyen ou Élevé pour le niveau de filtration que vous souhaitez appliquer à chaque catégorie. Le paramètre Élevée permet de bloquer le plus grand nombre de textes ou d’images correspondant à cette catégorie du filtre.
-
Sélectionnez Utiliser les mêmes filtres de catégories préjudiciables pour les réponses afin d’utiliser les mêmes paramètres de filtre que ceux utilisés pour les invites. Vous pouvez également choisir d’avoir différents niveaux de filtre pour les invites ou les réponses en ne sélectionnant pas cette option. Sélectionnez Réinitialiser le seuil pour réinitialiser tous les niveaux de filtre pour les invites ou les réponses.
-
Sélectionnez Vérifier et créer ou Suivant pour créer la barrière de protection.
Configuration des filtres de contenu pour les images à l’aide de l’API
Vous pouvez utiliser l’API de barrière de protection pour configurer le filtre de contenu d’image dans les barrières de protection Amazon Bedrock. L’exemple ci-dessous montre un filtre des barrières de protection Amazon Bedrock avec différentes catégories de contenus préjudiciables et différentes intensités de filtrage appliquées. Vous pouvez utiliser ce modèle comme exemple pour votre propre cas d’utilisation.
Avec l’opération contentPolicyConfig, filtersConfig est un objet, comme indiqué dans l’exemple suivant.
Exemple de code Python Boto3 pour créer une barrière de protection avec des filtres de contenu d’image
import boto3 import botocore import json def main(): bedrock = boto3.client('bedrock', region_name='us-east-1') try: create_guardrail_response = bedrock.create_guardrail( name='my-image-guardrail', contentPolicyConfig={ 'filtersConfig': [ { 'type': 'SEXUAL', 'inputStrength': 'HIGH', 'outputStrength': 'HIGH', 'inputModalities': ['TEXT', 'IMAGE'], 'outputModalities': ['TEXT', 'IMAGE'] }, { 'type': 'VIOLENCE', 'inputStrength': 'HIGH', 'outputStrength': 'HIGH', 'inputModalities': ['TEXT', 'IMAGE'], 'outputModalities': ['TEXT', 'IMAGE'] }, { 'type': 'HATE', 'inputStrength': 'HIGH', 'outputStrength': 'HIGH', 'inputModalities': ['TEXT', 'IMAGE'], 'outputModalities': ['TEXT', 'IMAGE'] }, { 'type': 'INSULTS', 'inputStrength': 'HIGH', 'outputStrength': 'HIGH', 'inputModalities': ['TEXT', 'IMAGE'], 'outputModalities': ['TEXT', 'IMAGE'] }, { 'type': 'MISCONDUCT', 'inputStrength': 'HIGH', 'outputStrength': 'HIGH', 'inputModalities': ['TEXT'], 'outputModalities': ['TEXT'] }, { 'type': 'PROMPT_ATTACK', 'inputStrength': 'HIGH', 'outputStrength': 'NONE', 'inputModalities': ['TEXT'], 'outputModalities': ['TEXT'] } ] }, blockedInputMessaging='Sorry, the model cannot answer this question.', blockedOutputsMessaging='Sorry, the model cannot answer this question.', ) create_guardrail_response['createdAt'] = create_guardrail_response['createdAt'].strftime('%Y-%m-%d %H:%M:%S') print("Successfully created guardrail with details:") print(json.dumps(create_guardrail_response, indent=2)) except botocore.exceptions.ClientError as err: print("Failed while calling CreateGuardrail API with RequestId = " + err.response['ResponseMetadata']['RequestId']) raise err if __name__ == "__main__": main()
Configuration du filtre d’image pour qu’il fonctionne avec l’API ApplyGuardrail
Vous pouvez utiliser des filtres de contenu pour le contenu d’image et de texte à l’aide de l’API ApplyGuardrail. Cette option vous permet d’utiliser les paramètres du filtre de contenu sans invoquer le modèle Amazon Bedrock. Vous pouvez mettre à jour les données utiles de la demande dans le script ci-dessous pour différents modèles en suivant la documentation des paramètres d’inférence pour chaque modèle de fondation Bedrock pris en charge par les barrières de protection Amazon Bedrock.
Vous pouvez mettre à jour les données utiles de la demande dans le script ci-dessous pour différents modèles en suivant la documentation des paramètres d’inférence pour chaque modèle de fondation Bedrock pris en charge par les barrières de protection Amazon Bedrock.
import boto3 import botocore import json guardrail_id = 'guardrail-id' guardrail_version = 'DRAFT' content_source = 'INPUT' image_path = '/path/to/image.jpg' with open(image_path, 'rb') as image: image_bytes = image.read() content = [ { "text": { "text": "Hi, can you explain this image art to me." } }, { "image": { "format": "jpeg", "source": { "bytes": image_bytes } } } ] def main(): bedrock_runtime_client = boto3.client("bedrock-runtime", region_name="us-east-1") try: print("Making a call to ApplyGuardrail API now") response = bedrock_runtime_client.apply_guardrail( guardrailIdentifier=guardrail_id, guardrailVersion=guardrail_version, source=content_source, content=content ) print("Received response from ApplyGuardrail API:") print(json.dumps(response, indent=2)) except botocore.exceptions.ClientError as err: print("Failed while calling ApplyGuardrail API with RequestId = " + err.response['ResponseMetadata']['RequestId']) raise err if __name__ == "__main__": main()
Configuration du filtre d’image pour qu’il fonctionne avec les modèles de génération d’images
Vous pouvez également utiliser les filtres d’image des barrières de protection Amazon Bedrock avec des modèles de génération d’images tels que Titan Image Generator et les modèles Stability Image ou Diffusion. Ces modèles sont actuellement pris en charge via l’API InvokeModel qui peut être invoquée à l’aide d’une barrière de protection. Vous pouvez mettre à jour les données utiles de la demande dans le script ci-dessous pour différents modèles en suivant la documentation des paramètres d’inférence pour différents modèles de fondation Amazon Bedrock pris en charge par les barrières de protection.
import base64 import boto3 import botocore import json import os import random import string guardrail_id = 'guardrail-id' guardrail_version = 'DRAFT' model_id = 'stability.sd3-large-v1:0' output_images_folder = '/path/to/folder/' body = json.dumps( { "prompt": "Create an image of a beautiful flower", # Prompt for image generation ("A gun" should get blocked by violence) "output_format": "jpeg" } ) def main(): bedrock_runtime_client = boto3.client("bedrock-runtime", region_name="us-west-2") try: print("Making a call to InvokeModel API for model: {}".format(model_id)) response = bedrock_runtime_client.invoke_model( body=body, modelId=model_id, trace='ENABLED', guardrailIdentifier=guardrail_id, guardrailVersion=guardrail_version ) response_body = json.loads(response.get('body').read()) print("Received response from InvokeModel API (Request Id: {})".format(response['ResponseMetadata']['RequestId'])) if 'images' in response_body and len(response_body['images']) > 0: os.makedirs(output_images_folder, exist_ok=True) images = response_body["images"] for image in images: image_id = ''.join(random.choices(string.ascii_lowercase + string.digits, k=6)) image_file = os.path.join(output_images_folder, "generated-image-{}.jpg".format(image_id)) print("Saving generated image {} at {}".format(image_id, image_file)) with open(image_file, 'wb') as image_file_descriptor: image_file_descriptor.write(base64.b64decode(image.encode('utf-8'))) else: print("No images generated from model") guardrail_trace = response_body['amazon-bedrock-trace']['guardrail'] guardrail_trace['modelOutput'] = ['<REDACTED>'] print("Guardrail Trace: {}".format(json.dumps(guardrail_trace, indent=2))) except botocore.exceptions.ClientError as err: print("Failed while calling InvokeModel API with RequestId = {}".format(err.response['ResponseMetadata']['RequestId'])) raise err if __name__ == "__main__": main()