Usar uma lista de bloqueio no Azure OpenAI
Os filtros de conteúdo configuráveis são suficientes para a maioria das necessidades de moderação de conteúdo. No entanto, pode ser necessário filtrar termos específicos para o seu caso de uso.
Pré-requisitos
- Uma subscrição do Azure. Crie um gratuitamente.
- Depois de ter sua assinatura do Azure, crie um recurso do Azure OpenAI no portal do Azure para obter seu token, chave e ponto de extremidade. Introduza um nome exclusivo para o seu recurso, selecione a subscrição que introduziu no formulário de candidatura, selecione um grupo de recursos, uma região suportada e um escalão de preços suportado. Depois, selecione Criar.
- O recurso leva alguns minutos para ser implantado. Depois de terminar, selecione ir para o recurso. No painel esquerdo, em Gerenciamento de Recursos, selecione Chave de Assinatura e Ponto de Extremidade. O ponto de extremidade e qualquer uma das chaves são usados para chamar APIs.
- CLI do Azure instalada
- cURL instalado
Usar listas de bloqueio
Você pode criar listas de bloqueio com a API do Azure OpenAI. Os passos seguintes ajudam-no a começar.
Obtenha o seu token
Primeiro, você precisa obter um token para acessar as APIs para criar, editar e excluir listas de bloqueio. Você pode obter esse token usando o seguinte comando da CLI do Azure:
az account get-access-token
Criar ou modificar uma lista de bloqueio
Copie o comando cURL abaixo para um editor de texto e faça as seguintes alterações:
- Substitua {subscriptionId} pelo seu ID de assinatura.
- Substitua {resourceGroupName} pelo nome do grupo de recursos.
- Substitua {accountName} pelo nome do recurso.
- Substitua {raiBlocklistName} (no URL) por um nome personalizado para sua lista. Caracteres permitidos:
0-9, A-Z, a-z, - . _ ~
. - Substitua {token} pelo token obtido na etapa "Obter seu token" acima.
- Opcionalmente, substitua o valor do campo "descrição" por uma descrição personalizada.
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"
}
}'
O código de resposta deve ser 201
(criada uma nova lista) ou 200
(atualizada uma lista existente).
Aplicar uma lista de bloqueio a um filtro de conteúdo
Se ainda não criou um filtro de conteúdo, pode fazê-lo no Studio no separador Filtros de Conteúdo no lado esquerdo. Para usar a lista de bloqueio, verifique se esse Filtro de Conteúdo é aplicado a uma implantação do Azure OpenAI. Você pode fazer isso na guia Implantações no lado esquerdo.
Para aplicar uma lista de bloqueio de conclusão a um filtro de conteúdo, use o seguinte comando cURL:
- Substitua {subscriptionId} pelo seu subID.
- Substitua {resourceGroupName} pelo nome do grupo de recursos.
- Substitua {accountName} pelo nome do recurso.
- Substitua {raiPolicyName} pelo nome do seu Filtro de Conteúdo
- Substitua {token} pelo token obtido na etapa "Obter seu token" acima.
- Substitua "raiBlocklistName" no corpo por um nome personalizado para sua 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-03-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"basePolicyName": "Microsoft.Default",
"completionBlocklists": [{
"blocklistName": "raiBlocklistName",
"blocking": true
}],
"contentFilters": [ ]
}
}'
Adicionar blockItems à lista
Nota
Há um limite máximo de 10.000 termos permitidos em uma lista.
Copie o comando cURL abaixo para um editor de texto e faça as seguintes alterações:
- Substitua {subscriptionId} pelo seu subID.
- Substitua {resourceGroupName} pelo nome do grupo de recursos.
- Substitua {accountName} pelo nome do recurso.
- Substitua {raiBlocklistName} (no URL) por um nome personalizado para sua lista. Caracteres permitidos:
0-9, A-Z, a-z, - . _ ~
. - Substitua {raiBlocklistItemName} por um nome personalizado para o item da lista.
- Substitua {token} pelo token obtido na etapa "Obter seu token" acima.
- Substitua o
"blocking pattern"
valor do campo pelo item que você deseja adicionar à sua lista de bloqueio. O comprimento máximo de um blockItem é de 1000 caracteres. Especifique também se o padrão é regex ou correspondência exata.
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
}
}'
Nota
Pode levar cerca de 5 minutos para que um novo termo seja adicionado à lista de bloqueio. Por favor, teste após 5 minutos.
O código de resposta deve ser 200
.
{
"name": "raiBlocklistItemName",
"id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName",
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}
Analisar texto com uma lista de bloqueio
Agora você pode testar sua implantação que tem a lista de bloqueio. A maneira mais fácil de fazer isso é no Azure OpenAI Studio. Se o conteúdo foi bloqueado no prompt ou na conclusão, você verá uma mensagem de erro dizendo que o sistema de filtragem de conteúdo foi acionado.
Para obter instruções sobre como chamar os pontos de extremidade do Azure OpenAI, visite o Guia de início rápido.
No exemplo abaixo, uma implantação GPT-35-Turbo com uma lista de bloqueio está bloqueando o prompt. A resposta retorna um 400
erro.
{
"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"
}
}
}
}
}
Se a conclusão em si for bloqueada, a resposta retornará 200
, pois a conclusão só será interrompida quando o conteúdo da lista de bloqueio for correspondido. As anotações mostram que uma lista de bloqueio foi correspondida.
{
"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
}
}
Usar listas de bloqueio no Azure OpenAI Studio
Você também pode criar listas de bloqueio personalizadas no Azure OpenAI Studio como parte de suas configurações de filtragem de conteúdo (visualização pública). Instruções sobre como criar filtros de conteúdo personalizados podem ser encontradas aqui. As etapas a seguir mostram como criar listas de bloqueio personalizadas como parte de seus filtros de conteúdo por meio do Azure OpenAI Studio.
- Selecione Filtros de conteúdo no menu à esquerda. Selecione a guia Listas de bloqueio ao lado da guia Filtros de conteúdo. Em seguida, selecione Criar lista de bloqueio.
- Crie um nome para sua lista de bloqueio, adicione uma descrição e selecione Criar lista de bloqueio.
- Selecione sua lista de bloqueio personalizada depois de criada e selecione Adicionar novo termo.
- Adicione um termo que deve ser filtrado e selecione Adicionar termo. Você também pode criar um regex.
- Pode eliminar cada termo da sua lista de bloqueios.
- Quando a lista de bloqueio estiver pronta, navegue até a seção Filtros de conteúdo (Visualização) e crie uma nova configuração de filtro de conteúdo personalizada. Isso abre um assistente com vários componentes de segurança de conteúdo de IA. Você pode encontrar mais informações sobre como configurar os filtros principais e modelos opcionais aqui. Vá para Adicionar lista de bloqueio (Opcional).
- Agora você verá todas as listas de bloqueio disponíveis. Existem dois tipos de listas de bloqueio – as listas de bloqueio que você criou e as listas de bloqueio pré-construídas que a Microsoft fornece, neste caso uma lista de bloqueio de palavrões (inglês)
- Agora você pode decidir qual das listas de bloqueio disponíveis você gostaria de incluir em sua configuração de filtragem de conteúdo. No exemplo abaixo, aplicamos CustomBlocklist1 que acabamos de criar. O último passo é rever e concluir a configuração de filtragem de conteúdo clicando em Avançar.
- Você sempre pode voltar e editar sua configuração. Quando estiver pronto, selecione Criar filtro de conteúdo. A nova configuração que inclui suas listas de bloqueio agora pode ser aplicada a uma implantação. Instruções detalhadas podem ser encontradas aqui.
Próximos passos
Saiba mais sobre as práticas de IA responsável para o Azure OpenAI: Visão geral das práticas de IA responsável para modelos OpenAI do Azure.
Leia mais sobre categorias de filtragem de conteúdo e níveis de gravidade com o Serviço Azure OpenAI.
Saiba mais sobre o red teaming no nosso artigo: Introdução aos modelos de linguagem grandes (LLMs) do red teaming.