Usare un elenco di blocchi in 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:

  1. Sostituire {subscriptionId} con l'ID sottoscrizione in uso.
  2. Sostituire {resourceGroupName} con il nome del gruppo di risorse.
  3. Sostituire {accountName} con il nome della risorsa.
  4. Sostituire {raiBlocklistName} (nell’URL) con un nome personalizzato per l'elenco. Caratteri consentiti: 0-9, A-Z, a-z, - . _ ~.
  5. Sostituire {token} con il token ottenuto dal passaggio "Ottenere il token" precedente.
  6. 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-03-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 contenuto, è possibile farlo in Studio nella scheda Filtri contenuto a sinistra. Per usare l'elenco di blocchi, assicurarsi che questo filtro contenuto venga applicato a una distribuzione di Azure OpenAI. È possibile eseguire questa operazione nella scheda Distribuzioni sul lato sinistro.

Per applicare una lista di blocco di completamento a un filtro contenuto, usare il comando cURL seguente:

  1. Sostituire {subscriptionId} con l'ID sottoscrizione in uso.
  2. Sostituire {resourceGroupName} con il nome del gruppo di risorse.
  3. Sostituire {accountName} con il nome della risorsa.
  4. Sostituire {raiPolicyName} con il nome del filtro contenuto
  5. Sostituire {token} con il token ottenuto dal passaggio "Ottenere il token" precedente.
  6. 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-03-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:

  1. Sostituire {subscriptionId} con l'ID sottoscrizione in uso.
  2. Sostituire {resourceGroupName} con il nome del gruppo di risorse.
  3. Sostituire {accountName} con il nome della risorsa.
  4. Sostituire {raiBlocklistName} (nell’URL) con un nome personalizzato per l'elenco. Caratteri consentiti: 0-9, A-Z, a-z, - . _ ~.
  5. Sostituire {raiBlocklistItemName} con un nome personalizzato per l'elemento elenco.
  6. Sostituire {token} con il token ottenuto dal passaggio "Ottenere il token" precedente.
  7. 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-03-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. Il modo più semplice per eseguire questa operazione è Servizio OpenAI di Azure. Se il contenuto è stato bloccato al prompt o al completamento, verrà visualizzato un messaggio di errore che indica che il sistema di filtro del contenuto è stato attivato.

Per istruzioni sulla chiamata degli 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 
    } 
} 

Usare gli elenchi di blocchi in Servizio OpenAI di Azure

È anche possibile creare elenchi di blocchi personalizzati in Servizio OpenAI di Azure come parte delle configurazioni di filtro del contenuto (anteprima pubblica). Le istruzioni su come creare filtri di contenuto personalizzati sono disponibili qui. I passaggi seguenti illustrano come creare elenchi di blocchi personalizzati come parte dei filtri di contenuto tramite Servizio OpenAI di Azure.

  1. Selezionare Filtri contenuto dal menu a sinistra. Selezionare la scheda Elenchi di blocchi accanto alla scheda Filtri contenuto. Selezionare quindi Crea elenco di blocchi. Screenshot della selezione di creazione dell'elenco di blocchi.
  2. Creare un nome per l'elenco di blocchi, aggiungere una descrizione e selezionare Crea elenco blocchi. Screenshot del nome e della descrizione dell'elenco di blocchi.
  3. Selezionare l'elenco di blocchi personalizzato dopo la creazione e selezionare Aggiungi nuovo termine. Screenshot di aggiunta di un termine all'elenco di blocchi personalizzato.
  4. Aggiungere un termine che deve essere filtrato e selezionare Aggiungi termine. È anche possibile creare un regex. Screenshot di aggiunta di un elemento all'elenco di blocchi personalizzato.
  5. È possibile eliminare ogni termine nell'elenco di blocchi. Screenshot della schermata di modifica dell'elenco di blocchi personalizzata.
  6. Quando l'elenco di blocchi è pronto, passare alla sezione Filtri contenuto (anteprima) e creare una nuova configurazione del filtro contenuto personalizzata. Verrà aperta una procedura guidata con diversi componenti di sicurezza dei contenuti di intelligenza artificiale. Altre informazioni su come configurare i filtri principali e i modelli facoltativi sono disponibili qui. Passare a Aggiungi elenco di blocchi (facoltativo).
  7. Verranno ora visualizzati tutti gli elenchi di blocchi disponibili. Esistono due tipi di elenchi di blocchi: elenchi di blocchi creati e elenchi di blocchi predefiniti forniti da Microsoft, in questo caso un elenco di blocchi Profanity (inglese)
  8. È ora possibile decidere quali elenchi di blocchi disponibili includere nella configurazione del filtro del contenuto. Nell'esempio seguente viene applicato CustomBlocklist1 appena creato. L'ultimo passaggio consiste nel rivedere e completare la configurazione del filtro del contenuto facendo clic su Avanti. Screenshot della gestione della configurazione del filtro.
  9. È sempre possibile tornare indietro e modificare la configurazione. Al termine, selezionare Crea filtro contenuto. La nuova configurazione che include gli elenchi di blocchi può ora essere applicata a una distribuzione. Le istruzioni dettagliate sono consultabili qui.

Passaggi successivi