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:
Una sottoscrizione di Azure. Se si usano i modelli GitHub, è possibile aggiornare l'esperienza e creare una sottoscrizione di Azure nel processo. Leggere Eseguire l'aggiornamento da modelli GitHub all'inferenza del modello di intelligenza artificiale di Azure se è il caso.
Una risorsa dei servizi di intelligenza artificiale di Azure. Per altre informazioni, vedere Creare una risorsa di Servizi di intelligenza artificiale di Azure.
- Un progetto di intelligenza artificiale connesso alla risorsa di Servizi di intelligenza artificiale di Azure. Chiamare la procedura descritta in Configurare il servizio di inferenza del modello di intelligenza artificiale di Azure nel progetto in Azure AI Foundry.
Creare un filtro contenuto personalizzato
Per creare un filtro contenuto personalizzato, seguire questa procedura:
Passare al portale di Azure AI Foundry.
Selezionare Sicurezza e sicurezza.
Selezionare la scheda Filtri contenuto e quindi selezionare Crea filtro contenuto.
In Informazioni di base assegnare un nome al filtro del contenuto.
In Connessione selezionare la connessione alla risorsa di Servizi di intelligenza artificiale di Azure connessa al progetto.
In Filtro di input configurare il filtro in base ai requisiti. Questa configurazione viene applicata prima che la richiesta raggiunga il modello stesso.
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.
Selezionare Avanti.
Facoltativamente, è possibile associare una determinata distribuzione al filtro contenuto creato. È possibile modificare le distribuzioni del modello associate in qualsiasi momento.
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:
Una sottoscrizione di Azure. Se si usano i modelli GitHub, è possibile aggiornare l'esperienza e creare una sottoscrizione di Azure nel processo. Leggere Eseguire l'aggiornamento da modelli GitHub all'inferenza del modello di intelligenza artificiale di Azure se è il caso.
Una risorsa dei servizi di intelligenza artificiale di Azure. Per altre informazioni, vedere Creare una risorsa di Servizi di intelligenza artificiale di Azure.
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:
Una sottoscrizione di Azure. Se si usano i modelli GitHub, è possibile aggiornare l'esperienza e creare una sottoscrizione di Azure nel processo. Leggere Eseguire l'aggiornamento da modelli GitHub all'inferenza del modello di intelligenza artificiale di Azure se è il caso.
Una risorsa dei servizi di intelligenza artificiale di Azure. Per altre informazioni, vedere Creare una risorsa di Servizi di intelligenza artificiale di Azure.
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
-
Nome modello::
Aggiungere una distribuzione del modello con filtri di contenuto personalizzati
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 } }
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 } }
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 ] }
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
- Altre informazioni su categorie di filtro del contenuto e livelli di gravità con il servizio OpenAI di Azure.
- Per altre informazioni sul red teaming, vedere l'articolo Introduzione al red teaming di modelli di linguaggio di grandi dimensioni.