Usare un elenco di blocchi con Azure OpenAI
I filtri di contenuto configurabili sono sufficienti per la maggior parte delle esigenze di moderazione dei contenuti. Tuttavia, potrebbe essere necessario filtrare i termini specifici del caso d'uso.
Prerequisiti
- Una sottoscrizione di Azure. Crearne una gratuitamente.
- Dopo aver creato la sottoscrizione di Azure, creare una risorsa Azure OpenAI nel portale di Azure per ottenere il token, la chiave e l'endpoint. Immettere un nome univoco per la risorsa, selezionare la sottoscrizione immessa nel modulo dell'applicazione, selezionare un gruppo di risorse, un'area supportata e un piano tariffario supportato. Selezionare Crea.
- La distribuzione della risorsa richiede alcuni minuti. Al termine, selezionare Vai alla risorsa. Nel riquadro a sinistra, in Gestione risorse selezionare Chiave di sottoscrizione ed endpoint. L'endpoint e una delle chiavi vengono usati per chiamare le API.
- Interfaccia della riga di comando di Azure installata
- cURL installato
Usare elenchi elementi bloccati
È possibile creare elenchi di blocchi con l'API Azure OpenAI. Per iniziare, seguire questa procedura.
Ottenere il token
Prima di tutto, è necessario ottenere un token per accedere alle API per la creazione, la modifica e l'eliminazione di elenchi di blocchi. È possibile ottenere questo token con il comando seguente dell'interfaccia della riga di comando di Azure:
az account get-access-token
Creare o modificare una blocklist
Copiare il comando cURL qui di seguito in un editor di testo e apportare le modifiche seguenti:
- Sostituire {subscriptionId} con l'ID sottoscrizione in uso.
- Sostituire {resourceGroupName} con il nome del gruppo di risorse.
- Sostituire {accountName} con il nome della risorsa.
- Sostituire {raiBlocklistName} (nell’URL) con un nome personalizzato per l'elenco. Caratteri consentiti:
0-9, A-Z, a-z, - . _ ~
. - Sostituire {token} con il token ottenuto dal passaggio "Ottenere il token" precedente.
- Facoltativamente, sostituire il valore del campo "descrizione" con una descrizione personalizzata.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-04-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"description": "This is a prompt blocklist"
}
}'
Il codice di risposta deve essere 201
(creazione di un nuovo elenco) o 200
(aggiornamento di un elenco esistente).
Applicare un elenco di blocchi a un filtro contenuto
Se non è ancora stato creato un filtro di contenuto, è possibile farlo in Azure AI Foundry. Vedere Filtro del contenuto.
Per applicare una lista di blocco di completamento a un filtro contenuto, usare il comando cURL seguente:
- Sostituire {subscriptionId} con l'ID sottoscrizione in uso.
- Sostituire {resourceGroupName} con il nome del gruppo di risorse.
- Sostituire {accountName} con il nome della risorsa.
- Sostituire {raiPolicyName} con il nome del filtro contenuto
- Sostituire {token} con il token ottenuto dal passaggio "Ottenere il token" precedente.
- Facoltativamente, modificare il
"completionBlocklists"
titolo in"promptBlocklists"
se si vuole che l'elenco di blocchi venga applicato alle richieste degli utenti anziché ai completamenti del modello di intelligenza artificiale. - Sostituire
"raiBlocklistName"
nel corpo con un nome personalizzato per l'elenco. Caratteri consentiti: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-04-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"basePolicyName": "Microsoft.Default",
"completionBlocklists": [{
"blocklistName": "raiBlocklistName",
"blocking": true
}],
"contentFilters": [ ]
}
}'
Aggiungere elementi block-level all’elenco
Nota
Vi è un limite massimo di 10.000 termini consentiti in un elenco.
Copiare il comando cURL qui di seguito in un editor di testo e apportare le modifiche seguenti:
- Sostituire {subscriptionId} con l'ID sottoscrizione in uso.
- Sostituire {resourceGroupName} con il nome del gruppo di risorse.
- Sostituire {accountName} con il nome della risorsa.
- Sostituire {raiBlocklistName} (nell’URL) con un nome personalizzato per l'elenco. Caratteri consentiti:
0-9, A-Z, a-z, - . _ ~
. - Sostituire {raiBlocklistItemName} con un nome personalizzato per l'elemento elenco.
- Sostituire {token} con il token ottenuto dal passaggio "Ottenere il token" precedente.
- Sostituire il valore del campo
"blocking pattern"
con l'elemento che si desidera aggiungere alla blocklist. La lunghezza massima di un elemento block-level è di 1000 caratteri. Specificare anche se il criterio è regex o corrispondenza esatta.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-04-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}'
Nota
L'aggiunta di un nuovo termine all'elenco di blocchi può richiedere circa 5 minuti. Provare dopo 5 minuti.
Il codice di risposta deve essere 200
.
{
"name": "raiBlocklistItemName",
"id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName",
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}
Analizzare il testo con una blocklist
È ora possibile testare la distribuzione con l'elenco di blocchi. Per istruzioni sulla chiamata agli endpoint OpenAI di Azure, vedere Avvio rapido.
Nell'esempio seguente, una distribuzione GPT-35-Turbo con un elenco di blocchi blocca il prompt. La risposta restituisce un errore 400
.
{
"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 il completamento stesso è bloccato, la risposta restituisce 200
, perché il completamento si interrompe solo quando viene trovata una corrispondenza con il contenuto dell'elenco di blocchi. Le annotazioni indicano che è stata trovata una corrispondenza in un elenco di blocchi.
{
"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
}
}
Passaggi successivi
Altre informazioni sulle procedure di intelligenza artificiale responsabile per Azure OpenAI: Panoramica delle procedure di intelligenza artificiale responsabili per i modelli OpenAI di Azure.
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.