Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los rieles de protección y controles configurables disponibles en Microsoft Foundry son suficientes para la mayoría de las necesidades de moderación de contenido. Sin embargo, es posible que tenga que filtrar términos específicos de su caso de uso, como nombres de competidores, nombres de proyecto internos o términos confidenciales específicos del dominio. Para ello, puede crear listas de bloques personalizadas que filtren automáticamente el contenido que contiene los términos especificados.
En este artículo, aprenderá a:
- Creación y administración de listas de bloqueo personalizadas
- Añada términos utilizando coincidencias exactas o patrones de expresiones regulares
- Aplicar listas de bloqueados a los filtros de contenido
- Probar el comportamiento de la lista de bloqueo con tus despliegues
Requisitos previos
- Una suscripción Azure. Cree uno gratis.
- Una vez que tenga la suscripción de Azure, cree un recurso de servicios Foundry. Para obtener más información, consulte Creación de un recurso de Foundry Services.
- Despliegue de un modelo Para obtener más información, consulte Incorporación y configuración de modelos a los servicios Foundry.
Nota
La compatibilidad con las listas de bloqueo (versión preliminar) está limitada a los modelos de Azure OpenAI.
- CLI de Azure versión 2.50 o posterior
- cURL instalado
Usar listas de bloques
Puede crear listas de bloques con la API de OpenAI de Azure. Los pasos siguientes le ayudarán a empezar.
Obtención del token
En primer lugar, debe obtener un token para acceder a las API para crear, editar y eliminar listas de bloques. Puede obtener este token mediante el siguiente comando CLI de Azure:
az account get-access-token
Crear o modificar una lista de bloqueados
Copie el comando cURL siguiente en un editor de texto y realice los cambios siguientes:
- Reemplace {subscriptionId} por el identificador de suscripción.
- Reemplace {resourceGroupName} por el nombre del grupo de recursos.
- Reemplace {accountName} por el nombre del recurso.
- Reemplace {raiBlocklistName} (en la dirección URL) por un nombre personalizado para la lista. Caracteres permitidos:
0-9, A-Z, a-z, - . _ ~. - Reemplace {token} por el token que obtuvo del paso "Obtener el token" anterior.
- Opcionalmente, reemplace el valor del campo "description" por una descripción personalizada.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-04-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"description": "This is a prompt blocklist"
}
}'
El código de respuesta debe ser 201 (crear una nueva lista) o 200 (actualizar una lista existente).
Aplicar una lista de bloqueados a un filtro de contenido
Si aún no ha creado un filtro de contenido, puede hacerlo en Foundry. Consulte Filtrado de contenido.
Para aplicar una lista de bloqueos de finalización a un filtro de contenido, use el siguiente comando cURL:
- Reemplace {subscriptionId} por su ID de suscripción.
- Reemplace {resourceGroupName} por el nombre del grupo de recursos.
- Reemplace {accountName} por el nombre del recurso.
- Reemplace {raiPolicyName} por el nombre del filtro de contenido.
- Reemplace {token} por el token que obtuvo del paso "Obtener el token" anterior.
- Opcionalmente, cambie el
"completionBlocklists"título a"promptBlocklists"si desea que la lista de bloqueados se aplique a las solicitudes del usuario en lugar de las finalizaciones del modelo de IA. - Reemplace
"raiBlocklistName"en el cuerpo por un nombre personalizado para la lista. Caracteres permitidos: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-04-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"basePolicyName": "Microsoft.Default",
"completionBlocklists": [{
"blocklistName": "raiBlocklistName",
"blocking": true
}],
"contentFilters": [ ]
}
}'
Agregar blockItems a la lista
Nota
Hay un límite máximo de 10 000 términos permitidos en una lista.
Copie el comando cURL siguiente en un editor de texto y realice los cambios siguientes:
- Reemplace {subscriptionId} por su ID de suscripción.
- Reemplace {resourceGroupName} por el nombre del grupo de recursos.
- Reemplace {accountName} por el nombre del recurso.
- Reemplace {raiBlocklistName} (en la dirección URL) por un nombre personalizado para la lista. Caracteres permitidos:
0-9, A-Z, a-z, - . _ ~. - Reemplace {raiBlocklistItemName} por un nombre personalizado para el elemento de lista.
- Reemplace {token} por el token que obtuvo del paso "Obtener el token" anterior.
- Reemplace el valor del
"pattern"campo por el elemento que desea agregar a la lista de bloqueados. La longitud máxima de un blockItem es de 1000 caracteres. Especifique también si el patrón es regex o coincidencia exacta.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-04-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}'
Nota
Un término nuevo puede tardar unos 5 minutos en agregarse a la lista de bloqueados. Pruebe la lista de bloqueados después de 5 minutos.
El código de respuesta debe ser 200.
{
"name": "raiBlocklistItemName",
"id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName",
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}
Análisis de texto con una lista de bloques
Ahora puede probar su implementación que tiene la lista de bloqueo. Para obtener instrucciones sobre cómo llamar a los puntos de conexión de OpenAI de Azure, visite el Quickstart.
En el siguiente ejemplo, una implementación GPT-35-Turbo con una lista de bloqueados bloquea el mensaje. La respuesta devuelve un 400 error.
{
"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": {
"details": [{ "filtered": true, "id": "pizza" }],
"filtered": true
}
}
}
}
}
Si la finalización en sí está bloqueada, la respuesta devuelve 200, ya que la finalización solo se corta cuando se coincide con el contenido de la lista de bloqueados. Las anotaciones muestran una coincidencia con una lista de bloqueados.
{
"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
}
}
Campos clave en la respuesta:
-
finish_reason: "content_filter"indica que la finalización se detuvo debido a una coincidencia de lista de bloqueados. -
custom_blocklists[].idmuestra qué lista de bloqueos desencadenó el filtro -
custom_blocklists[].filtered: trueconfirma que el contenido se bloqueó
Eliminar un elemento de lista de bloques
Para eliminar un elemento de lista de bloques, use el siguiente comando cURL:
- Reemplace {subscriptionId} por el identificador de suscripción.
- Reemplace {resourceGroupName} por el nombre del grupo de recursos.
- Reemplace {accountName} por el nombre del recurso.
- Reemplace {raiBlocklistName} por el nombre de la lista de bloqueados.
- Reemplace {raiBlocklistItemName} por el nombre del elemento que se va a eliminar.
- Reemplace {token} por el token que obtuvo del paso "Obtener el token" anterior.
curl --location --request DELETE 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-10-01' \
--header 'Authorization: Bearer {token}'
El código de respuesta debe ser 200 (elemento eliminado) o 204 (sin contenido).
Eliminar una lista de bloqueados
Para eliminar una lista de bloqueados completa, use el siguiente comando cURL:
- Reemplace {subscriptionId} por el identificador de suscripción.
- Reemplace {resourceGroupName} por el nombre del grupo de recursos.
- Reemplace {accountName} por el nombre del recurso.
- Reemplace {raiBlocklistName} por el nombre de la lista de bloques que se va a eliminar.
- Reemplace {token} por el token que obtuvo del paso "Obtener el token" anterior.
curl --location --request DELETE 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-10-01' \
--header 'Authorization: Bearer {token}'
Advertencia
Al eliminar una lista de bloqueo, se quitan todos los elementos de esa lista y no se pueden deshacer.
Solución de problemas
Error 403 Prohibido
Asegúrese de que el token de Azure AD tiene los permisos correctos. La cuenta debe tener el rol de Colaborador de Servicios Cognitivos o Propietario en el recurso de Azure OpenAI.
Lista de bloqueados que no surte efecto
Los nuevos términos de lista de bloques pueden tardar hasta 5 minutos en propagarse. Espere y vuelva a probarlo. Si el problema persiste, compruebe que la lista de bloqueados se aplica correctamente al filtro de contenido.
Patrón que no coincide con el contenido esperado
Si usa patrones regex, asegúrese de que la sintaxis del patrón es válida. Pruebe el patrón regex por separado antes de agregarlo a la lista de bloqueados. Entre los problemas comunes se incluyen:
- Caracteres especiales sin escape
- Distinción entre mayúsculas y minúsculas (los patrones distinguen entre mayúsculas y minúsculas de forma predeterminada)
- Es posible que los delimitadores (
^y$) no se comporten según lo previsto en escenarios de streaming.
Límite de cuota alcanzado
Cada lista de bloques puede contener un máximo de 10 000 términos. Si necesita más, cree más listas de bloqueados y aplíquelas al mismo filtro de contenido.
Contenido relacionado
Obtenga más información sobre las prácticas de inteligencia artificial responsable para Azure OpenAI: Información general de prácticas de inteligencia artificial responsable para Azure modelos openAI.
Obtenga más información sobre las categorías de filtrado de contenido y los niveles de gravedad con Azure OpenAI en los modelos Foundry.
Obtenga más información sobre el red teaming en nuestro artículo Introducción al red teaming de modelos de lenguaje de gran tamaño (LLMs).