Partilhar via


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.

Criar um filtro de conteúdo personalizado

Siga estas etapas para criar um filtro de conteúdo personalizado:

  1. Vá para o portal do Azure AI Foundry.

  2. Selecione Segurança + proteção.

  3. Selecione a guia Filtros de conteúdo e, em seguida, selecione Criar filtro de conteúdo.

  4. Em Informações básicas, dê um nome ao filtro de conteúdo.

  5. Em Conexão, selecione a conexão com o recurso dos Serviços de IA do Azure que está conectado ao seu projeto.

  6. 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.

  7. 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.

  8. Selecione Seguinte.

  9. 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.

  10. 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

Adicionar uma implantação de modelo com filtragem de conteúdo personalizada

  1. 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
        }
    }
    
  2. 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
      }
    }
    
  3. 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
        ]
    }
    
  4. 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