Como configurar filtros de conteúdo (visualização) para modelos nos serviços de IA do Azure
Importante
Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
O sistema de filtragem de conteúdo integrado nos Serviços de IA do Azure é executado juntamente com os modelos principais. Ele usa um conjunto de modelos de classificação multiclasse para detetar quatro categorias de conteúdo nocivo (violência, ódio, sexual e automutilação) em quatro níveis de gravidade, respectivamente (seguro, baixo, médio e alto). Ele oferece classificadores binários opcionais para detetar risco de jailbreak, texto existente e código em repositórios públicos. Saiba mais sobre categorias de conteúdo, níveis de gravidade e o comportamento do sistema de filtragem de conteúdo no seguinte artigo
A configuração de filtragem de conteúdo padrão é definida para filtrar no limite de gravidade média para todas as quatro categorias de danos de conteúdo para prompts e conclusão. Assim, o conteúdo detetado no nível de gravidade médio ou alto é filtrado, enquanto o conteúdo detetado no nível de gravidade baixo ou seguro não é filtrado.
Os filtros de conteúdo podem ser configurados no nível do recurso e associados a uma ou mais implantações.
Pré-requisitos
Para concluir este artigo, precisa de:
Uma subscrição do Azure. Se você estiver usando Modelos do GitHub, poderá atualizar sua experiência e criar uma assinatura do Azure no processo. Leia Atualização de modelos do GitHub para inferência de modelo de IA do Azure, se for o seu caso.
Um recurso de serviços de IA do Azure. Para obter mais informações, consulte Criar um recurso dos Serviços de IA do Azure.
- Um projeto de IA conectado ao seu recurso dos Serviços de IA do Azure. Você chama siga as etapas em Configurar o serviço de inferência de modelo de IA do Azure no meu projeto no Azure AI Foundry.
Criar um filtro de conteúdo personalizado
Siga estas etapas para criar um filtro de conteúdo personalizado:
Vá para o portal do Azure AI Foundry.
Selecione Segurança + proteção.
Selecione a guia Filtros de conteúdo e, em seguida, selecione Criar filtro de conteúdo.
Em Informações básicas, dê um nome ao filtro de conteúdo.
Em Conexão, selecione a conexão com o recurso dos Serviços de IA do Azure que está conectado ao seu projeto.
Em Filtro de entrada, configure o filtro dependendo dos seus requisitos. Essa configuração é aplicada antes que a solicitação chegue ao próprio modelo.
Em Filtro de saída, configure o filtro dependendo dos seus requisitos. Essa configuração é aplicada depois que o modelo é executado e o conteúdo é gerado.
Selecione Seguinte.
Opcionalmente, você pode associar uma determinada implantação ao filtro de conteúdo criado. Você pode alterar as implantações de modelo associadas a qualquer momento.
Quando a implantação for concluída, o novo filtro de conteúdo será aplicado à implantação do modelo.
Conta para filtragem de conteúdo no seu código
Depois que a filtragem de conteúdo tiver sido aplicada à implantação do modelo, as solicitações poderão ser intercetadas pelo serviço, dependendo das entradas e saídas. Quando um filtro de conteúdo é acionado, um código de erro 400 é retornado com a descrição da regra acionada.
Instale o pacote azure-ai-inference
usando seu gerenciador de pacotes, como pip:
pip install azure-ai-inference
Em seguida, você pode usar o pacote para consumir o modelo. O exemplo a seguir mostra como criar um cliente para consumir finalizações de chat:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
client = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)
Explore nossos exemplos e leia a documentação de referência da API para começar.
O exemplo a seguir mostra a resposta para uma solicitação de conclusão de bate-papo que acionou a segurança do conteúdo.
from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError
try:
response = model.complete(
messages=[
SystemMessage(content="You are an AI assistant that helps people find information."),
UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
]
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = json.loads(ex.response._content.decode('utf-8'))
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise ex
else:
raise ex
Siga as melhores práticas
Recomendamos informar suas decisões de configuração de filtragem de conteúdo por meio de uma identificação iterativa (por exemplo, teste de equipe vermelha, teste de esforço e análise) e processo de medição para abordar os danos potenciais que são relevantes para um modelo, aplicativo e cenário de implantação específicos. Depois de implementar atenuações, como filtragem de conteúdo, repita a medição para testar a eficácia.
As recomendações e as práticas recomendadas para IA Responsável para o Azure OpenAI, baseadas no Padrão de IA Responsável da Microsoft, podem ser encontradas na Visão Geral da IA Responsável para o Azure OpenAI.
Importante
Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
O sistema de filtragem de conteúdo integrado nos Serviços de IA do Azure é executado juntamente com os modelos principais. Ele usa um conjunto de modelos de classificação multiclasse para detetar quatro categorias de conteúdo nocivo (violência, ódio, sexual e automutilação) em quatro níveis de gravidade, respectivamente (seguro, baixo, médio e alto). Ele oferece classificadores binários opcionais para detetar risco de jailbreak, texto existente e código em repositórios públicos. Saiba mais sobre categorias de conteúdo, níveis de gravidade e o comportamento do sistema de filtragem de conteúdo no seguinte artigo
A configuração de filtragem de conteúdo padrão é definida para filtrar no limite de gravidade média para todas as quatro categorias de danos de conteúdo para prompts e conclusão. Assim, o conteúdo detetado no nível de gravidade médio ou alto é filtrado, enquanto o conteúdo detetado no nível de gravidade baixo ou seguro não é filtrado.
Os filtros de conteúdo podem ser configurados no nível do recurso e associados a uma ou mais implantações.
Pré-requisitos
Para concluir este artigo, precisa de:
Uma subscrição do Azure. Se você estiver usando Modelos do GitHub, poderá atualizar sua experiência e criar uma assinatura do Azure no processo. Leia Atualização de modelos do GitHub para inferência de modelo de IA do Azure, se for o seu caso.
Um recurso de serviços de IA do Azure. Para obter mais informações, consulte Criar um recurso dos Serviços de IA do Azure.
Adicionar uma implantação de modelo com filtragem de conteúdo personalizada
Recomendamos a criação de filtros de conteúdo usando o portal do Azure AI Foundry ou em código usando o Bicep. Não há suporte para criar filtros de conteúdo personalizados ou aplicá-los a implantações usando a CLI do Azure.
Conta para filtragem de conteúdo no seu código
Depois que a filtragem de conteúdo tiver sido aplicada à implantação do modelo, as solicitações poderão ser intercetadas pelo serviço, dependendo das entradas e saídas. Quando um filtro de conteúdo é acionado, um código de erro 400 é retornado com a descrição da regra acionada.
Instale o pacote azure-ai-inference
usando seu gerenciador de pacotes, como pip:
pip install azure-ai-inference
Em seguida, você pode usar o pacote para consumir o modelo. O exemplo a seguir mostra como criar um cliente para consumir finalizações de chat:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
client = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)
Explore nossos exemplos e leia a documentação de referência da API para começar.
O exemplo a seguir mostra a resposta para uma solicitação de conclusão de bate-papo que acionou a segurança do conteúdo.
from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError
try:
response = model.complete(
messages=[
SystemMessage(content="You are an AI assistant that helps people find information."),
UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
]
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = json.loads(ex.response._content.decode('utf-8'))
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise ex
else:
raise ex
Siga as melhores práticas
Recomendamos informar suas decisões de configuração de filtragem de conteúdo por meio de uma identificação iterativa (por exemplo, teste de equipe vermelha, teste de esforço e análise) e processo de medição para abordar os danos potenciais que são relevantes para um modelo, aplicativo e cenário de implantação específicos. Depois de implementar atenuações, como filtragem de conteúdo, repita a medição para testar a eficácia.
As recomendações e as práticas recomendadas para IA Responsável para o Azure OpenAI, baseadas no Padrão de IA Responsável da Microsoft, podem ser encontradas na Visão Geral da IA Responsável para o Azure OpenAI.
Importante
Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
O sistema de filtragem de conteúdo integrado nos Serviços de IA do Azure é executado juntamente com os modelos principais. Ele usa um conjunto de modelos de classificação multiclasse para detetar quatro categorias de conteúdo nocivo (violência, ódio, sexual e automutilação) em quatro níveis de gravidade, respectivamente (seguro, baixo, médio e alto). Ele oferece classificadores binários opcionais para detetar risco de jailbreak, texto existente e código em repositórios públicos. Saiba mais sobre categorias de conteúdo, níveis de gravidade e o comportamento do sistema de filtragem de conteúdo no seguinte artigo
A configuração de filtragem de conteúdo padrão é definida para filtrar no limite de gravidade média para todas as quatro categorias de danos de conteúdo para prompts e conclusão. Assim, o conteúdo detetado no nível de gravidade médio ou alto é filtrado, enquanto o conteúdo detetado no nível de gravidade baixo ou seguro não é filtrado.
Os filtros de conteúdo podem ser configurados no nível do recurso e associados a uma ou mais implantações.
Pré-requisitos
Para concluir este artigo, precisa de:
Uma subscrição do Azure. Se você estiver usando Modelos do GitHub, poderá atualizar sua experiência e criar uma assinatura do Azure no processo. Leia Atualização de modelos do GitHub para inferência de modelo de IA do Azure, se for o seu caso.
Um recurso de serviços de IA do Azure. Para obter mais informações, consulte Criar um recurso dos Serviços de IA do Azure.
Instale a CLI do Azure.
Identifique as seguintes informações:
O seu ID de subscrição do Azure.
Seu nome de recurso dos Serviços de IA do Azure.
O grupo de recursos onde o recurso dos Serviços de IA do Azure é implantado.
O nome do modelo, provedor, versão e SKU que você gostaria de implantar. Você pode usar o portal do Azure AI Foundry ou a CLI do Azure para identificá-lo. Neste exemplo, implantamos o seguinte modelo:
-
Nome do modelo::
Phi-3.5-vision-instruct
-
Fornecedor:
Microsoft
-
Versão:
2
- Tipo de implantação: Padrão global
-
Nome do modelo::
Adicionar uma implantação de modelo com filtragem de conteúdo personalizada
Use o modelo
ai-services-content-filter-template.bicep
para descrever a política de filtro de conteúdo:ai-services-content-filter-template.bicep
@description('Name of the Azure AI Services account where the policy will be created') param accountName string @description('Name of the policy to be created') param policyName string @allowed(['Asynchronous_filter', 'Blocking', 'Default', 'Deferred']) param mode string = 'Default' @description('Base policy to be used for the new policy') param basePolicyName string = 'Microsoft.DefaultV2' param contentFilters array = [ { name: 'Violence' severityThreshold: 'Medium' blocking: true enabled: true source: 'Prompt' } { name: 'Hate' severityThreshold: 'Medium' blocking: true enabled: true source: 'Prompt' } { name: 'Sexual' severityThreshold: 'Medium' blocking: true enabled: true source: 'Prompt' } { name: 'Selfharm' severityThreshold: 'Medium' blocking: true enabled: true source: 'Prompt' } { name: 'Jailbreak' blocking: true enabled: true source: 'Prompt' } { name: 'Indirect Attack' blocking: true enabled: true source: 'Prompt' } { name: 'Profanity' blocking: true enabled: true source: 'Prompt' } { name: 'Violence' severityThreshold: 'Medium' blocking: true enabled: true source: 'Completion' } { name: 'Hate' severityThreshold: 'Medium' blocking: true enabled: true source: 'Completion' } { name: 'Sexual' severityThreshold: 'Medium' blocking: true enabled: true source: 'Completion' } { name: 'Selfharm' severityThreshold: 'Medium' blocking: true enabled: true source: 'Completion' } { name: 'Protected Material Text' blocking: true enabled: true source: 'Completion' } { name: 'Protected Material Code' blocking: false enabled: true source: 'Completion' } { name: 'Profanity' blocking: true enabled: true source: 'Completion' } ] resource raiPolicy 'Microsoft.CognitiveServices/accounts/raiPolicies@2024-06-01-preview' = { name: '${accountName}/${policyName}' properties: { mode: mode basePolicyName: basePolicyName contentFilters: contentFilters } }
Use o modelo
ai-services-deployment-template.bicep
para descrever implantações de modelo:ai-services-deployment-template.bicep
@description('Name of the Azure AI services account') param accountName string @description('Name of the model to deploy') param modelName string @description('Version of the model to deploy') param modelVersion string @allowed([ 'AI21 Labs' 'Cohere' 'Core42' 'DeepSeek' 'Meta' 'Microsoft' 'Mistral AI' 'OpenAI' ]) @description('Model provider') param modelPublisherFormat string @allowed([ 'GlobalStandard' 'Standard' 'GlobalProvisioned' 'Provisioned' ]) @description('Model deployment SKU name') param skuName string = 'GlobalStandard' @description('Content filter policy name') param contentFilterPolicyName string = 'Microsoft.DefaultV2' @description('Model deployment capacity') param capacity int = 1 resource modelDeployment 'Microsoft.CognitiveServices/accounts/deployments@2024-04-01-preview' = { name: '${accountName}/${modelName}' sku: { name: skuName capacity: capacity } properties: { model: { format: modelPublisherFormat name: modelName version: modelVersion } raiPolicyName: contentFilterPolicyName == null ? 'Microsoft.Nill' : contentFilterPolicyName } }
Crie a definição de implantação principal:
main.bicep
param accountName string param modelName string param modelVersion string param modelPublisherFormat string param contentFilterPolicyName string module raiPolicy 'ai-services-content-filter-template.bicep' = { name: 'raiPolicy' scope: resourceGroup(resourceGroupName) params: { accountName: accountName policyName: contentFilterPolicyName } } module modelDeployment 'ai-services-deployment-template.bicep' = { name: 'modelDeployment' scope: resourceGroup(resourceGroupName) params: { accountName: accountName modelName: modelName modelVersion: modelVersion modelPublisherFormat: modelPublisherFormat contentFilterPolicyName: contentFilterPolicyName } dependsOn: [ raiPolicy ] }
Execute a implantação:
RESOURCE_GROUP="<resource-group-name>" ACCOUNT_NAME="<azure-ai-model-inference-name>" MODEL_NAME="Phi-3.5-vision-instruct" PROVIDER="Microsoft" VERSION=2 RAI_POLICY_NAME="custom-policy" az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file main.bicep \ --parameters accountName=$ACCOUNT_NAME raiPolicyName=$RAI_POLICY_NAME modelName=$MODEL_NAME modelVersion=$VERSION modelPublisherFormat=$PROVIDER
Conta para filtragem de conteúdo no seu código
Depois que a filtragem de conteúdo tiver sido aplicada à implantação do modelo, as solicitações poderão ser intercetadas pelo serviço, dependendo das entradas e saídas. Quando um filtro de conteúdo é acionado, um código de erro 400 é retornado com a descrição da regra acionada.
Instale o pacote azure-ai-inference
usando seu gerenciador de pacotes, como pip:
pip install azure-ai-inference
Em seguida, você pode usar o pacote para consumir o modelo. O exemplo a seguir mostra como criar um cliente para consumir finalizações de chat:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
client = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)
Explore nossos exemplos e leia a documentação de referência da API para começar.
O exemplo a seguir mostra a resposta para uma solicitação de conclusão de bate-papo que acionou a segurança do conteúdo.
from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError
try:
response = model.complete(
messages=[
SystemMessage(content="You are an AI assistant that helps people find information."),
UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
]
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = json.loads(ex.response._content.decode('utf-8'))
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise ex
else:
raise ex
Siga as melhores práticas
Recomendamos informar suas decisões de configuração de filtragem de conteúdo por meio de uma identificação iterativa (por exemplo, teste de equipe vermelha, teste de esforço e análise) e processo de medição para abordar os danos potenciais que são relevantes para um modelo, aplicativo e cenário de implantação específicos. Depois de implementar atenuações, como filtragem de conteúdo, repita a medição para testar a eficácia.
As recomendações e as práticas recomendadas para IA Responsável para o Azure OpenAI, baseadas no Padrão de IA Responsável da Microsoft, podem ser encontradas na Visão Geral da IA Responsável para o Azure OpenAI.
Próximos passos
- 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.