Condividi tramite


Come configurare i filtri di contenuto (anteprima) per i modelli nei servizi di intelligenza artificiale di Azure

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Il sistema di filtro dei contenuti integrato in Servizi di intelligenza artificiale di Azure viene eseguito insieme ai modelli di base. Usa un insieme di modelli di classificazione multiclasse per rilevare quattro categorie di contenuto dannoso (violenza, odio, sesso e autolesionismo) rispettivamente a quattro livelli di gravità (sicuri, bassi, medi e alti). Offre classificatori binari facoltativi per rilevare il rischio di jailbreak, il testo esistente e il codice nei repository pubblici. Altre informazioni sulle categorie di contenuto, i livelli di gravità e il comportamento del sistema di filtro del contenuto nell'articolo seguente

La configurazione di filtro del contenuto predefinita è impostata per filtrare in base alla soglia di gravità media per tutte e quattro le categorie di contenuto dannose per richieste e completamenti. Di conseguenza, il contenuto rilevato a livello di gravità medio o alto viene filtrato, mentre il contenuto rilevato a livello di gravità basso o sicuro non viene filtrato.

I filtri di contenuto possono essere configurati a livello di risorsa e associati a una o più distribuzioni.

Prerequisiti

Per completare questo articolo, devi avere quanto segue:

Creare un filtro contenuto personalizzato

Per creare un filtro contenuto personalizzato, seguire questa procedura:

  1. Passare al portale di Azure AI Foundry.

  2. Selezionare Sicurezza e sicurezza.

  3. Selezionare la scheda Filtri contenuto e quindi selezionare Crea filtro contenuto.

  4. In Informazioni di base assegnare un nome al filtro del contenuto.

  5. In Connessione selezionare la connessione alla risorsa di Servizi di intelligenza artificiale di Azure connessa al progetto.

  6. In Filtro di input configurare il filtro in base ai requisiti. Questa configurazione viene applicata prima che la richiesta raggiunga il modello stesso.

  7. In Filtro di output configurare il filtro in base ai requisiti. Questa configurazione viene applicata dopo l'esecuzione del modello e il contenuto viene generato.

  8. Selezionare Avanti.

  9. Facoltativamente, è possibile associare una determinata distribuzione al filtro contenuto creato. È possibile modificare le distribuzioni del modello associate in qualsiasi momento.

  10. Al termine della distribuzione, il nuovo filtro contenuto viene applicato alla distribuzione del modello.

Account per il filtro del contenuto nel codice

Dopo l'applicazione del filtro del contenuto alla distribuzione del modello, le richieste possono essere intercettate dal servizio a seconda degli input e degli output. Quando viene attivato un filtro contenuto, viene restituito un codice di errore 400 con la descrizione della regola attivata.

Installare il pacchetto azure-ai-inference usando la propria gestione pacchetti, come pip:

pip install azure-ai-inference

Quindi, è possibile usare il pacchetto per utilizzare il modello. Gli esempi seguenti mostrano come creare un client per utilizzare i completamenti chat:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

model = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)

Esplorare gli esempi e leggere la documentazione di riferimento sulle API per iniziare.

L'esempio seguente mostra la risposta per una richiesta di completamento della chat che ha attivato la sicurezza del contenuto.

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

Seguire le procedura consigliate

È consigliabile informare le decisioni di configurazione del filtro del contenuto tramite un'identificazione iterativa (ad esempio, test red team, test di stress e analisi) e un processo di misurazione per risolvere i potenziali danni rilevanti per uno scenario specifico di modello, applicazione e distribuzione. Dopo aver implementato mitigazioni come il filtro del contenuto, ripetere la misurazione per testare l'efficacia.

Le raccomandazioni e le procedure consigliate per l'intelligenza artificiale responsabile per Azure OpenAI, riportate in Microsoft Responsible AI Standard sono disponibili nella Panoramica dell'intelligenza artificiale responsabile per Azure OpenAI.

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Il sistema di filtro dei contenuti integrato in Servizi di intelligenza artificiale di Azure viene eseguito insieme ai modelli di base. Usa un insieme di modelli di classificazione multiclasse per rilevare quattro categorie di contenuto dannoso (violenza, odio, sesso e autolesionismo) rispettivamente a quattro livelli di gravità (sicuri, bassi, medi e alti). Offre classificatori binari facoltativi per rilevare il rischio di jailbreak, il testo esistente e il codice nei repository pubblici. Altre informazioni sulle categorie di contenuto, i livelli di gravità e il comportamento del sistema di filtro del contenuto nell'articolo seguente

La configurazione di filtro del contenuto predefinita è impostata per filtrare in base alla soglia di gravità media per tutte e quattro le categorie di contenuto dannose per richieste e completamenti. Di conseguenza, il contenuto rilevato a livello di gravità medio o alto viene filtrato, mentre il contenuto rilevato a livello di gravità basso o sicuro non viene filtrato.

I filtri di contenuto possono essere configurati a livello di risorsa e associati a una o più distribuzioni.

Prerequisiti

Per completare questo articolo, devi avere quanto segue:

Aggiungere una distribuzione del modello con filtri di contenuto personalizzati

È consigliabile creare filtri di contenuto usando il portale di Azure AI Foundry o nel codice usando Bicep. La creazione di filtri di contenuto personalizzati o l'applicazione alle distribuzioni non è supportata tramite l'interfaccia della riga di comando di Azure.

Account per il filtro del contenuto nel codice

Dopo l'applicazione del filtro del contenuto alla distribuzione del modello, le richieste possono essere intercettate dal servizio a seconda degli input e degli output. Quando viene attivato un filtro contenuto, viene restituito un codice di errore 400 con la descrizione della regola attivata.

Installare il pacchetto azure-ai-inference usando la propria gestione pacchetti, come pip:

pip install azure-ai-inference

Quindi, è possibile usare il pacchetto per utilizzare il modello. Gli esempi seguenti mostrano come creare un client per utilizzare i completamenti chat:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

model = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)

Esplorare gli esempi e leggere la documentazione di riferimento sulle API per iniziare.

L'esempio seguente mostra la risposta per una richiesta di completamento della chat che ha attivato la sicurezza del contenuto.

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

Seguire le procedura consigliate

È consigliabile informare le decisioni di configurazione del filtro del contenuto tramite un'identificazione iterativa (ad esempio, test red team, test di stress e analisi) e un processo di misurazione per risolvere i potenziali danni rilevanti per uno scenario specifico di modello, applicazione e distribuzione. Dopo aver implementato mitigazioni come il filtro del contenuto, ripetere la misurazione per testare l'efficacia.

Le raccomandazioni e le procedure consigliate per l'intelligenza artificiale responsabile per Azure OpenAI, riportate in Microsoft Responsible AI Standard sono disponibili nella Panoramica dell'intelligenza artificiale responsabile per Azure OpenAI.

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Il sistema di filtro dei contenuti integrato in Servizi di intelligenza artificiale di Azure viene eseguito insieme ai modelli di base. Usa un insieme di modelli di classificazione multiclasse per rilevare quattro categorie di contenuto dannoso (violenza, odio, sesso e autolesionismo) rispettivamente a quattro livelli di gravità (sicuri, bassi, medi e alti). Offre classificatori binari facoltativi per rilevare il rischio di jailbreak, il testo esistente e il codice nei repository pubblici. Altre informazioni sulle categorie di contenuto, i livelli di gravità e il comportamento del sistema di filtro del contenuto nell'articolo seguente

La configurazione di filtro del contenuto predefinita è impostata per filtrare in base alla soglia di gravità media per tutte e quattro le categorie di contenuto dannose per richieste e completamenti. Di conseguenza, il contenuto rilevato a livello di gravità medio o alto viene filtrato, mentre il contenuto rilevato a livello di gravità basso o sicuro non viene filtrato.

I filtri di contenuto possono essere configurati a livello di risorsa e associati a una o più distribuzioni.

Prerequisiti

Per completare questo articolo, devi avere quanto segue:

  • Installare l'interfaccia della riga di comando di Azure.

  • Identificare le informazioni seguenti:

    • L'ID sottoscrizione di Azure.

    • Nome della risorsa di Servizi di intelligenza artificiale di Azure.

    • Gruppo di risorse in cui viene distribuita la risorsa di Servizi di intelligenza artificiale di Azure.

    • Nome del modello, provider, versione e SKU da distribuire. È possibile usare il portale di Azure AI Foundry o l'interfaccia della riga di comando di Azure per identificarlo. In questo esempio viene distribuito il modello seguente:

      • Nome modello:: Phi-3.5-vision-instruct
      • Provider: Microsoft
      • Versione:2
      • Tipo di distribuzione: standard globale

Aggiungere una distribuzione del modello con filtri di contenuto personalizzati

  1. Usare il modello ai-services-content-filter-template.bicep per descrivere i criteri di filtro del contenuto:

    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. Usare il modello ai-services-deployment-template.bicep per descrivere le distribuzioni di modelli:

    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. Creare la definizione di distribuzione principale:

    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. Eseguire la distribuzione:

    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
    

Account per il filtro del contenuto nel codice

Dopo l'applicazione del filtro del contenuto alla distribuzione del modello, le richieste possono essere intercettate dal servizio a seconda degli input e degli output. Quando viene attivato un filtro contenuto, viene restituito un codice di errore 400 con la descrizione della regola attivata.

Installare il pacchetto azure-ai-inference usando la propria gestione pacchetti, come pip:

pip install azure-ai-inference

Quindi, è possibile usare il pacchetto per utilizzare il modello. Gli esempi seguenti mostrano come creare un client per utilizzare i completamenti chat:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

model = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)

Esplorare gli esempi e leggere la documentazione di riferimento sulle API per iniziare.

L'esempio seguente mostra la risposta per una richiesta di completamento della chat che ha attivato la sicurezza del contenuto.

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

Seguire le procedura consigliate

È consigliabile informare le decisioni di configurazione del filtro del contenuto tramite un'identificazione iterativa (ad esempio, test red team, test di stress e analisi) e un processo di misurazione per risolvere i potenziali danni rilevanti per uno scenario specifico di modello, applicazione e distribuzione. Dopo aver implementato mitigazioni come il filtro del contenuto, ripetere la misurazione per testare l'efficacia.

Le raccomandazioni e le procedure consigliate per l'intelligenza artificiale responsabile per Azure OpenAI, riportate in Microsoft Responsible AI Standard sono disponibili nella Panoramica dell'intelligenza artificiale responsabile per Azure OpenAI.

Passaggi successivi