Les exemples de données de ce guide peuvent contenir du contenu offensant. Ils s’adressent à des utilisateurs avertis.
Les classifieurs IA par défaut sont suffisants pour la plupart des besoins de modération du contenu. Cependant, vous devrez peut-être rechercher des éléments spécifiques à votre cas d'utilisation. Les listes de blocage vous permettent d’ajouter des termes personnalisés aux classifieurs IA. Vous pouvez utiliser des listes de blocage pour filtrer des termes ou expressions spécifiques que vous souhaitez marquer dans votre contenu.
Une fois que vous avez votre abonnement Azure, créez une ressource Content Safety dans le portail Azure pour obtenir votre clé et votre point de terminaison. Entrez un nom unique pour votre ressource, sélectionnez votre abonnement, puis sélectionnez un groupe de ressources, une région prise en charge (voir disponibilité région) et le niveau tarifaire pris en charge. Sélectionnez ensuite Créer.
Le déploiement de la ressource prend quelques minutes. Une fois qu’il est terminé, sélectionnez Accéder à la ressource. Dans le volet gauche, sous Gestion des ressources, sélectionnez Clé et point de terminaison de l’abonnement. Le point de terminaison et l’une des clés sont utilisés pour appeler les API.
Votre installation Python doit inclure pip. Vous pouvez vérifier si pip est installé en exécutant pip --version sur la ligne de commande. Procurez-vous pip en installant la dernière version de Python.
Si vous utilisez Python, vous devez installer la bibliothèque de client Azure AI Content Safety pour Python. Exécutez la commande pip install azure-ai-contentsafety dans votre répertoire de projet.
Kit de développement logiciel (SDK) .NET Core installé.
Si vous utilisez .NET, vous devez installer la bibliothèque de client Azure AI Content Safety pour .NET. Exécutez la commande dotnet add package Azure.AI.ContentSafety --prerelease dans votre répertoire de projet.
Créer des variables d’environnement
Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.
Pour définir la variable d’environnement de votre clé et point de terminaison, ouvrez une fenêtre de console et suivez les instructions relatives à votre système d’exploitation et à votre environnement de développement.
Pour définir la variable d’environnement CONTENT_SAFETY_KEY, remplacez YOUR_CONTENT_SAFETY_KEY par l’une des clés de votre ressource.
Pour définir la CONTENT_SAFETY_ENDPOINTvariable d’environnement, remplacez YOUR_CONTENT_SAFETY_ENDPOINT par le point de terminaison de votre ressource.
Important
Si vous utilisez une clé API, stockez-la en toute sécurité dans un autre emplacement, par exemple dans Azure Key Vault. N'incluez pas la clé API directement dans votre code et ne la diffusez jamais publiquement.
Après avoir ajouté les variables d'environnement, il se put que vous deviez redémarrer tous les programmes en cours d'exécution qui liront les variables d'environnement, y compris la fenêtre de console.
Copiez la commande cURL ci-dessous dans un éditeur de texte et apportez les modifications suivantes :
Remplacez <endpoint> par votre URL de point de terminaison.
Remplacez <enter_your_key_here> par votre clé.
Remplacez <your_list_name> (dans l’URL) par un nom personnalisé pour votre liste. Remplacez également le dernier terme de l’URL REST par le même nom. Caractères autorisés : a-z, 0-9, A-Z, - . _ ~.
Remplacez éventuellement la valeur du champ "description" par une description personnalisée.
Remplacez <your_list_name> par un nom personnalisé pour votre liste. Caractères autorisés : 0-9, A-Z, a-z, - . _ ~.
Remplacez éventuellement <description> par une description personnalisée.
Exécutez le script.
Ajouter des blocklistItems à la liste
Remarque
Il existe une limite maximale de 10 000 termes au total sur toutes les listes. Vous pouvez ajouter au maximum 100 éléments de liste de blocage en une seule requête.
Copiez la commande cURL ci-dessous dans un éditeur de texte et apportez les modifications suivantes :
Remplacez <endpoint> par votre URL de point de terminaison.
Remplacez <enter_your_key_here> par votre clé.
Remplacez <your_list_name> (dans l’URL) par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez éventuellement la valeur du champ "description" par une description personnalisée.
Remplacez la valeur du champ "text" par l’élément que vous souhaitez ajouter à votre liste de blocs. La longueur maximale d’un blocklistItem est de 128 caractères.
Créez une nouvelle application console C# et ouvrez-la dans votre éditeur ou IDE favori. Collez le code suivant.
string endpoint = Environment.GetEnvironmentVariable("CONTENT_SAFETY_ENDPOINT");
string key = Environment.GetEnvironmentVariable("CONTENT_SAFETY_KEY");
BlocklistClient blocklistClient = new BlocklistClient(new Uri(endpoint), new AzureKeyCredential(key));
var blocklistName = "<your_list_name>";
string blocklistItemText1 = "<block_item_text_1>";
string blocklistItemText2 = "<block_item_text_2>";
var blocklistItems = new TextBlocklistItem[] { new TextBlocklistItem(blocklistItemText1), new TextBlocklistItem(blocklistItemText2) };
var addedBlocklistItems = blocklistClient.AddOrUpdateBlocklistItems(blocklistName, new AddOrUpdateTextBlocklistItemsOptions(blocklistItems));
if (addedBlocklistItems != null && addedBlocklistItems.Value != null)
{
Console.WriteLine("\nBlocklistItems added:");
foreach (var addedBlocklistItem in addedBlocklistItems.Value.BlocklistItems)
{
Console.WriteLine("BlocklistItemId: {0}, Text: {1}, Description: {2}", addedBlocklistItem.BlocklistItemId, addedBlocklistItem.Text, addedBlocklistItem.Description);
}
}
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez les valeurs des champs blocklistItemText1 et blocklistItemText2 par les éléments que vous souhaitez ajouter à votre liste de refus. La longueur maximale d’un blockitem est de 128 caractères.
Ajoutez éventuellement d’autres chaînes blockItem au paramètre blockItems.
Exécutez le code.
Créez une application Java et ouvrez-la dans l’éditeur ou IDE de votre choix. Collez le code suivant.
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez les valeurs des champs blockItemText1 et blockItemText2 par les éléments que vous souhaitez ajouter à votre liste de refus. La longueur maximale d’un blockitem est de 128 caractères.
Ajoutez éventuellement d’autres chaînes blockItem au paramètre blockItems.
Exécutez le code.
Créez un script Python et ouvrez-le dans votre éditeur ou IDE favori. Collez le code suivant.
import os
from azure.ai.contentsafety import BlocklistClient
from azure.core.credentials import AzureKeyCredential
from azure.ai.contentsafety.models import (
AddOrUpdateTextBlocklistItemsOptions, TextBlocklistItem
)
from azure.core.exceptions import HttpResponseError
key = os.environ["CONTENT_SAFETY_KEY"]
endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]
# Create a Blocklist client
client = BlocklistClient(endpoint, AzureKeyCredential(key))
blocklist_name = "<your_list_name>"
blocklist_item_text_1 = "<block_item_text_1>"
blocklist_item_text_2 = "<block_item_text_2>"
blocklist_items = [TextBlocklistItem(text=blocklist_item_text_1), TextBlocklistItem(text=blocklist_item_text_2)]
try:
result = client.add_or_update_blocklist_items(
blocklist_name=blocklist_name, options=AddOrUpdateTextBlocklistItemsOptions(blocklist_items=blocklist_items)
for blocklist_item in result.blocklist_items:
print(
f"BlocklistItemId: {blocklist_item.blocklist_item_id}, Text: {blocklist_item.text}, Description: {blocklist_item.description}"
)
except HttpResponseError as e:
print("\nAdd blocklistItems failed: ")
if e.error:
print(f"Error code: {e.error.code}")
print(f"Error message: {e.error.message}")
raise
print(e)
raise
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez les valeurs des champs blocklist_item_text_1 et blocklist_item_text_2 par les éléments que vous souhaitez ajouter à votre liste de refus. La longueur maximale d’un blockitem est de 128 caractères.
Ajoutez éventuellement d’autres chaînes blockItem au paramètre block_items.
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez les valeurs des champs block_item_text_1 et block_item_text_2 par les éléments que vous souhaitez ajouter à votre liste de refus. La longueur maximale d’un blockitem est de 128 caractères.
Ajoutez éventuellement d’autres chaînes blockItem au paramètre blocklistItems.
Exécutez le script.
Notes
Il y aura un certain délai après l’ajout ou la modification d’un blockItem avant qu’il ne prenne effet sur l’analyse de texte, généralement pas plus de cinq minutes.
Copiez la commande cURL ci-dessous dans un éditeur de texte et apportez les modifications suivantes :
Remplacez <endpoint> par votre URL de point de terminaison.
Remplacez <enter_your_key_here> par votre clé.
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste. Le champ "blocklistNames" peut contenir un tableau de plusieurs ID de liste.
Si vous le souhaitez, vous pouvez changer la valeur de "breakByBlocklists". true indique qu’une fois qu’une blocklist est mise en correspondance, l’analyse retourne immédiatement sans sortie du modèle. false entraîne la poursuite de l’analyse du modèle dans les catégories par défaut.
Remplacez éventuellement la valeur du champ "text" par le texte que vous souhaitez analyser.
curl --location --request POST '<endpoint>/contentsafety/text:analyze?api-version=2023-10-01&' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \
--data-raw '{
"text": "I want to beat you till you bleed",
"categories": [
"Hate",
"Sexual",
"SelfHarm",
"Violence"
],
"blocklistNames":["<your_list_name>"],
"haltOnBlocklistHit": false,
"outputType": "FourSeverityLevels"
}'
La réponse JSON contient un "blocklistMatchResults" qui indique toute correspondance avec votre blocklist. Il signale l’emplacement dans la chaîne de texte où la correspondance a été trouvée.
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez le texte d’entrée request par le texte que vous souhaitez analyser.
Exécutez le script.
Créez un script Python et ouvrez-le dans votre éditeur ou IDE favori. Collez le code suivant.
import os
from azure.ai.contentsafety import ContentSafetyClient
from azure.core.credentials import AzureKeyCredential
from azure.ai.contentsafety.models import AnalyzeTextOptions
from azure.core.exceptions import HttpResponseError
key = os.environ["CONTENT_SAFETY_KEY"]
endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]
# Create a Content Safety client
client = ContentSafetyClient(endpoint, AzureKeyCredential(key))
blocklist_name = "<your_list_name>"
input_text = "<your_input_text>"
try:
# After you edit your blocklist, it usually takes effect in 5 minutes, please wait some time before analyzing
# with blocklist after editing.
analysis_result = client.analyze_text(
AnalyzeTextOptions(text=input_text, blocklist_names=[blocklist_name], halt_on_blocklist_hit=False)
)
if analysis_result and analysis_result.blocklists_match:
print("\nBlocklist match results: ")
for match_result in analysis_result.blocklists_match:
print(
f"BlocklistName: {match_result.blocklist_name}, BlocklistItemId: {match_result.blocklist_item_id}, "
f"BlocklistItemText: {match_result.blocklist_item_text}"
)
except HttpResponseError as e:
print("\nAnalyze text failed: ")
if e.error:
print(f"Error code: {e.error.code}")
print(f"Error message: {e.error.message}")
raise
print(e)
raise
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez la variable input_text par le texte que vous souhaitez analyser.
Copiez la commande cURL ci-dessous dans un éditeur de texte et apportez les modifications suivantes :
Remplacez <endpoint> par votre URL de point de terminaison.
Remplacez <enter_your_key_here> par votre clé.
Remplacez <your_list_name> (dans l’URL de la requête) par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez <your_item_id> par la valeur ID du blocklistItem. Il s'agit de la valeur du champ "blocklistItemId" provenant des appels d'API Ajouter blocklistItem ou Obtenez tous les blocklistItems.
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez <your_block_item_id> par l’ID de l’élément que vous voulez obtenir.
Exécutez le script.
Supprimez les blocklistItems d'une liste de blocage.
Remarque
Il y aura un certain délai après la suppression d’un blockItem avant qu’il ne prenne effet sur l’analyse de texte, généralement pas plus de cinq minutes.
Copiez la commande cURL ci-dessous dans un éditeur de texte et apportez les modifications suivantes :
Remplacez <endpoint> par votre URL de point de terminaison.
Remplacez <enter_your_key_here> par votre clé.
Remplacez <your_list_name> (dans l’URL de la requête) par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez <item_id> par la valeur ID du blocklistItem. Il s'agit de la valeur du champ "blocklistItemId" provenant des appels d'API Ajouter blocklistItem ou Obtenez tous les blocklistItems.
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez <your_block_item_id> par l’ID d’un élément précédemment ajouté.
Exécutez le script.
Créez un script Python et ouvrez-le dans votre éditeur ou IDE favori. Collez le code suivant.
import os
from azure.ai.contentsafety import BlocklistClient
from azure.core.credentials import AzureKeyCredential
from azure.ai.contentsafety.models import (
TextBlocklistItem,
AddOrUpdateTextBlocklistItemsOptions,
RemoveTextBlocklistItemsOptions,
)
from azure.core.exceptions import HttpResponseError
key = os.environ["CONTENT_SAFETY_KEY"]
endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]
# Create a Blocklist client
client = BlocklistClient(endpoint, AzureKeyCredential(key))
blocklist_name = "<your_list_name>"
blocklist_item_text_1 = "<block_item_text>"
try:
# Add a blocklistItem
add_result = client.add_or_update_blocklist_items(
blocklist_name=blocklist_name,
options=AddOrUpdateTextBlocklistItemsOptions(blocklist_items=[TextBlocklistItem(text=blocklist_item_text_1)]),
)
if not add_result or not add_result.blocklist_items or len(add_result.blocklist_items) <= 0:
raise RuntimeError("BlocklistItem not created.")
blocklist_item_id = add_result.blocklist_items[0].blocklist_item_id
# Remove this blocklistItem by blocklistItemId
client.remove_blocklist_items(
blocklist_name=blocklist_name, options=RemoveTextBlocklistItemsOptions(blocklist_item_ids=[blocklist_item_id])
)
print(f"\nRemoved blocklistItem: {add_result.blocklist_items[0].blocklist_item_id}")
except HttpResponseError as e:
print("\nRemove blocklist item failed: ")
if e.error:
print(f"Error code: {e.error.code}")
print(f"Error message: {e.error.message}")
raise
print(e)
raise
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez <block_item_text> par le texte de votre élément de refus.
Remplacez <your_list_name> par le nom que vous avez utilisé à l’étape de création de la liste.
Remplacez <your_block_item_id par l’ID de l’élément que vous voulez supprimer.
Exécutez le script.
Supprimer une liste et tout son contenu.
Notes
Il y aura un certain délai après la suppression d’une liste avant que cela ne prenne effet sur l’analyse de texte, généralement pas plus de cinq minutes.