Utiliser une liste de blocage dans Azure OpenAI
Les filtres de contenu configurables sont suffisants pour la plupart des besoins de modération du contenu. Toutefois, vous devrez peut-être filtrer des termes spécifiques à votre cas d’usage.
Prérequis
- Un abonnement Azure. Créez-en un gratuitement.
- Une fois que vous disposez de votre abonnement Azure, créez une ressource Azure OpenAI dans le portail Azure pour obtenir votre jeton, votre clé et votre point de terminaison. Entrez un nom unique pour votre ressource, sélectionnez l’abonnement que vous avez indiqué dans le formulaire d’inscription, sélectionnez un groupe de ressources, une région prise en charge et un 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.
- Azure CLI installé
- Installation de cURL
Utiliser des listes de blocage
Vous pouvez créer des listes de blocage avec l’API Azure OpenAI. Les étapes suivantes vous aident à démarrer.
Obtenir votre jeton
Tout d’abord, vous devez obtenir un jeton pour accéder aux API de création, de modification et de suppression de listes de blocage. Vous pouvez obtenir ce jeton en utilisant la commande Azure CLI suivante :
az account get-access-token
Créez ou modifiez une liste de blocs
Copiez la commande cURL ci-dessous dans un éditeur de texte et apportez les modifications suivantes :
- Remplacez {subscriptionId} par votre ID d’abonnement.
- Remplacez {resourceGroupName} par le nom de votre groupe de ressources.
- Remplacez {accountName} par le nom de votre ressource.
- Remplacez {raiBlocklistName} (dans l’URL) par un nom personnalisé pour votre liste. Caractères autorisés :
0-9, A-Z, a-z, - . _ ~
. - Remplacez {token} par le jeton obtenu à l’étape « Obtenir votre jeton » ci-dessus.
- Remplacez éventuellement la valeur du champ « description » par une description personnalisée.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-03-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"description": "This is a prompt blocklist"
}
}'
Le code de réponse doit être 201
(création d’une liste) ou 200
(mise à jour d’une liste existante).
Appliquer une liste de blocage à un filtre de contenu
Si vous n’avez pas encore créé de filtre de contenu, vous pouvez le faire dans Studio, sous l’onglet Filtres de contenu sur le côté gauche. Pour utiliser la liste de blocage, vérifiez que ce filtre de contenu est appliqué à un déploiement Azure OpenAI. Pour ce faire, accédez à l’onglet Déploiements sur le côté gauche.
Pour appliquer une liste de blocage de complétion à un filtre de contenu, utilisez la commande cURL suivante :
- Remplacez {subscriptionId} par votre ID d’abonnement.
- Remplacez {resourceGroupName} par le nom de votre groupe de ressources.
- Remplacez {accountName} par le nom de votre ressource.
- Remplacez {raiPolicyName} par le nom de votre filtre de contenu
- Remplacez {token} par le jeton obtenu à l’étape « Obtenir votre jeton » ci-dessus.
- Remplacez « raiBlocklistName » dans le corps par un nom personnalisé pour votre liste. Caractères autorisés :
0-9, A-Z, a-z, - . _ ~
.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiPolicies/{raiPolicyName}?api-version=2024-03-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"basePolicyName": "Microsoft.Default",
"completionBlocklists": [{
"blocklistName": "raiBlocklistName",
"blocking": true
}],
"contentFilters": [ ]
}
}'
Ajouter des blockItems à la liste
Remarque
Il existe une limite maximale de 10 000 termes autorisés dans une liste.
Copiez la commande cURL ci-dessous dans un éditeur de texte et apportez les modifications suivantes :
- Remplacez {subscriptionId} par votre ID d’abonnement.
- Remplacez {resourceGroupName} par le nom de votre groupe de ressources.
- Remplacez {accountName} par le nom de votre ressource.
- Remplacez {raiBlocklistName} (dans l’URL) par un nom personnalisé pour votre liste. Caractères autorisés :
0-9, A-Z, a-z, - . _ ~
. - Remplacez {raiBlocklistItemName} par un nom personnalisé pour votre élément de liste.
- Remplacez {token} par le jeton obtenu à l’étape « Obtenir votre jeton » ci-dessus.
- Remplacez la valeur du champ
"blocking pattern"
par l’élément que vous souhaitez ajouter à votre liste de blocs. La longueur maximale d’un blockItem est de 1 000 caractères. Spécifiez également s’il s’agit d’un modèle regex ou d’une recherche exacte.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-03-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}'
Remarque
L’ajout d’un nouveau terme à la liste de blocage prend environ 5 minutes. Effectuez un test après 5 minutes.
Le code de réponse doit être 200
.
{
"name": "raiBlocklistItemName",
"id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName",
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}
Analysez le texte avec une liste de blocs
Vous pouvez désormais tester votre déploiement associé à la liste de blocage. Le moyen le plus simple d’y parvenir consiste à utiliser Azure OpenAI Studio. Si le contenu a été bloqué au niveau de l’invite ou de la complétion, vous devez voir un message d’erreur indiquant que le système de filtrage de contenu s’est déclenché.
Pour obtenir des instructions sur l’appel des points de terminaison Azure OpenAI, consultez le guide de démarrage rapide.
Dans l’exemple ci-dessous, un déploiement de GPT-35-Turbo associé à une liste de blocage bloque l’invite. La réponse retourne une erreur 400
.
{
"error": {
"message": "The response was filtered due to the prompt triggering Azure OpenAI’s content management policy. Please modify your prompt and retry. To learn more about our content filtering policies please read our documentation: https://go.microsoft.com/fwlink/?linkid=2198766",
"type": null,
"param": "prompt",
"code": "content_filter",
"status": 400,
"innererror": {
"code": "ResponsibleAIPolicyViolation",
"content_filter_result": {
"custom_blocklists": [
{
"filtered": true,
"id": "raiBlocklistName"
}
],
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
}
}
Si la complétion elle-même est bloquée, la réponse retourne 200
, car la complétion est désactivée uniquement quand il existe une correspondance avec le contenu de la liste de blocage. Les annotations montrent qu’il existe une correspondance avec une liste de blocage.
{
"id": "chatcmpl-85NkyY0AkeBMunOjyxivQSiTaxGAl",
"object": "chat.completion",
"created": 1696293652,
"model": "gpt-35-turbo",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"choices": [
{
"index": 0,
"finish_reason": "content_filter",
"message": {
"role": "assistant"
},
"content_filter_results": {
"custom_blocklists": [
{
"filtered": true,
"id": "myBlocklistName"
}
],
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"usage": {
"completion_tokens": 75,
"prompt_tokens": 27,
"total_tokens": 102
}
}
Utiliser des listes de blocage dans Azure OpenAI Studio
Vous pouvez également créer des listes de blocage personnalisées dans Azure OpenAI Studio dans le cadre de vos configurations de filtrage de contenu (préversion publique). Vous trouverez des instructions sur la création de filtres de contenu personnalisés ici. Les étapes suivantes montrent comment créer des listes de blocage personnalisées dans le cadre de vos filtres de contenu via Azure OpenAI Studio.
- Sélectionnez Filtres de contenu dans le menu de gauche. Sélectionnez l’onglet Listes de blocage en regard à côté de l’onglet Filtres de contenu. Sélectionnez ensuite Créer une liste de blocage.
- Créez un nom pour votre liste de blocage, ajoutez une description, puis sélectionnez Créer la liste de blocage.
- Sélectionnez votre liste de blocage personnalisée une fois qu’elle a été créée, puis sélectionnez Ajouter nouveau terme.
- Ajoutez un terme à filtrer, puis sélectionnez Ajouter. Vous pouvez également créer une notation regex.
- Tout terme contenu dans votre liste de blocage peut être supprimé.
- Une fois la liste de blocage prête, accédez à la section Filtres de contenu (préversion), puis créez une configuration de filtre de contenu personnalisée. Un Assistant s’ouvre avec plusieurs composants d’AI Sécurité du Contenu. Vous trouverez plus d’informations sur la configuration des filtres principaux et des modèles facultatifs ici. Accédez à Ajouter une liste de blocage (facultatif).
- Vous voyez désormais toutes les listes de blocage disponibles. Il existe deux types de listes de blocage : les listes de blocage que vous avez créées et les listes de blocage prédéfinies fournies par Microsoft, dans le cas présent une liste de blocage d’obscénités (en anglais)
- Vous pouvez maintenant déterminer les listes de blocs disponibles que vous souhaitez inclure dans votre configuration de filtrage de contenu. Dans l’exemple ci-dessous, la liste appliquée est CustomBlocklist1, que nous venons de créer. La dernière étape consiste à passer en revue et à finir la configuration du filtrage de contenu en cliquant sur Suivant.
- Vous pouvez toujours revenir en arrière et modifier votre configuration. Une fois que tout est prêt, sélectionnez Créer un filtre de contenu. La nouvelle configuration qui inclut vos listes de blocage peut désormais être appliquée à un déploiement. Des instructions détaillées sont disponibles ici .
Étapes suivantes
En savoir plus sur les pratiques d’IA responsable pour Azure OpenAI : Vue d’ensemble des pratiques d’IA responsable pour les modèles Azure OpenAI.
En savoir plus sur les catégories de filtrage de contenu et les niveaux de gravité avec Azure OpenAI Service.
Pour en savoir plus sur le « red teaming », consultez notre article Introduction aux modèles LLM (Large Language Models) Red Teaming.