Compartir a través de


Uso de una lista de bloqueos con Azure OpenAI

Los filtros de contenido configurables son suficientes para la mayoría de las necesidades de moderación de contenido. Sin embargo, es posible que tenga que filtrar los términos específicos del caso de uso.

Requisitos previos

  • Suscripción a Azure. cree una de forma gratuita.
  • Cuando tenga la suscripción de Azure, cree un recurso de Azure OpenAI en Azure Portal para obtener su token, clave y punto de conexión. Escriba un nombre único para el recurso, seleccione la suscripción que especificó en el formulario de solicitud, seleccione un grupo de recursos, una región admitida y un plan de tarifa admitido. Seleccione Crear.
    • El recurso tarda unos minutos en implementarse. Cuando termine, seleccione Ir al recurso. En el panel de la izquierda, en Administración de recursos, seleccione Clave y punto de conexión de la suscripción. El punto de conexión y cualquiera de las claves se usan para llamar a las API.
  • CLI de Azure instalada
  • cURL instalado

Usar listas de bloqueados

Puede crear listas de bloqueados con la API de Azure OpenAI. Los siguientes pasos le ayudarán a empezar a trabajar.

Obtención del token

Primero, debe obtener un token para acceder a las API para crear, editar y eliminar listas de bloqueados. Puede obtener este token mediante el siguiente comando de la 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:

  1. Reemplace {subscriptionId} por su id. de suscripción.
  2. Reemplace {resourceGroupName} por su nombre del grupo de recursos.
  3. Reemplace {accountName} por su nombre del recurso.
  4. Reemplace {raiBlocklistName} (en la URL) por un nombre personalizado para su lista. Caracteres permitidos: 0-9, A-Z, a-z, - . _ ~.
  5. Reemplace {token} por el token que obtuvo en el paso "Obtener el token".
  6. Tiene la opción de reemplazar el valor del campo "descripción" 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 (creada una nueva lista) o 200(actualizada 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 Azure AI Foundry. Consulte Filtrado de contenido.

Para aplicar una lista de bloqueados de finalización a un filtro de contenido, use el siguiente comando cURL:

  1. Reemplace {subscriptionId} por su id. secundario.
  2. Reemplace {resourceGroupName} por su nombre del grupo de recursos.
  3. Reemplace {accountName} por su nombre del recurso.
  4. Reemplace {raiPolicyName} por el nombre de su Filtro de contenido
  5. Reemplace {token} por el token que obtuvo en el paso "Obtención del token".
  6. Opcionalmente, cambie el título de "completionBlocklists" a "promptBlocklists" si quiere que la lista de bloqueados se aplique a las solicitudes del usuario en lugar de las finalizaciones del modelo de IA.
  7. 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 cada lista.

Copie el comando cURL siguiente en un editor de texto y realice los cambios siguientes:

  1. Reemplace {subscriptionId} por su id. secundario.
  2. Reemplace {resourceGroupName} por su nombre del grupo de recursos.
  3. Reemplace {accountName} por su nombre del recurso.
  4. Reemplace {raiBlocklistName} (en la URL) por un nombre personalizado para su lista. Caracteres permitidos: 0-9, A-Z, a-z, - . _ ~.
  5. Reemplace {raiBlocklistItemName} por un nombre personalizado para su elemento de lista.
  6. Reemplace {token} por el token que obtuvo en el paso "Obtención del token".
  7. Reemplace el valor del campo "blocking pattern" 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 una 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 alrededor de 5 minutos en agregarse a la lista de bloqueados. Pruebe una vez transcurridos 5 minutos.

El código de respuesta debería ser 200.

{ 
  "name": "raiBlocklistItemName", 
  "id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName", 
  "properties": { 
    "pattern": "blocking pattern", 
    "isRegex": false 
  } 
} 

Analizar texto con una lista de bloqueados

Ahora puede probar la implementación que tiene la lista de bloqueados. Para obtener instrucciones sobre cómo llamar a los puntos de conexión de Azure OpenAI, visite Inicio rápido.

En el siguiente ejemplo, una implementación GPT-35-Turbo con una lista de bloqueados bloquea el mensaje. La respuesta devuelve un error 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 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 que se ha coincidido 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 
    } 
} 

Pasos siguientes