Usare un elenco di blocchi in Azure OpenAI
I filtri di contenuto configurabili sono sufficienti per la maggior parte delle esigenze di con modalità tenda ration. 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 OpenAI di Azure nella 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 sinistro, 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 di blocchi
È possibile creare elenchi di blocchi con l'API OpenAI di Azure. La procedura seguente consente di iniziare.
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 usando il comando seguente dell'interfaccia della riga di comando di Azure:
az account get-access-token
Creare o modificare un elenco di blocchi
Copiare il comando cURL seguente in un editor di testo e apportare le modifiche seguenti:
- Sostituire {subscriptionId} con l'ID sottoscrizione.
- 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 "description" 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
(creato un nuovo elenco) o 200
(aggiornato 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 un elenco di blocchi di completamento a un filtro contenuto, usare il comando cURL seguente:
- Sostituire {subscriptionId} con l'ID secondario.
- 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.
- 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 blockItems all'elenco
Nota
Esiste un limite massimo di 10.000 termini consentiti in un elenco.
Copiare il comando cURL seguente in un editor di testo e apportare le modifiche seguenti:
- Sostituire {subscriptionId} con l'ID secondario.
- 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 la voce di elenco.
- Sostituire {token} con il token ottenuto dal passaggio "Ottenere il token" precedente.
- Sostituire il valore del
"blocking pattern"
campo con l'elemento che si vuole aggiungere all'elenco di blocchi. La lunghezza massima di un blockItem è 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. Prova 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 un elenco di blocchi
È ora possibile testare la distribuzione con l'elenco di blocchi. Il modo più semplice per eseguire questa operazione è in Azure OpenAI Studio. 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 400
errore.
{
"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 viene interrotto 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 Azure OpenAI Studio
È anche possibile creare elenchi di blocchi personalizzati in Azure OpenAI Studio 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 Azure OpenAI Studio.
- Selezionare la scheda Elenchi di blocchi accanto alla scheda Filtri contenuto.
- Selezionare Crea elenco di blocchi
- Creare un nome per l'elenco di blocchi, aggiungere una descrizione e selezionare Crea.
- Selezionare l'elenco di blocchi personalizzato dopo la creazione e selezionare Aggiungi termine.
- Aggiungere un termine che deve essere filtrato e selezionare Crea. È anche possibile creare un'espressione regolare.
- È possibile modificare ed eliminare ogni termine nell'elenco di blocchi.
- 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).
- Verranno ora visualizzati tutti gli elenchi di blocchi disponibili. Esistono due tipi di blocklist: gli elenchi bloccati creati e gli elenchi di blocchi predefiniti forniti da Microsoft, in questo caso un elenco di blocchi Volgarity (inglese)
- È ora possibile decidere quali elenchi di blocchi disponibili includere nella configurazione del filtro del contenuto ed è possibile selezionare se deve essere applicato a prompt, completamenti o entrambi. Nell'esempio seguente viene applicato CustomBlocklist1 appena creato a prompt e completamenti e l'elenco di blocchi Contenuto volgare solo ai completamenti. L'ultimo passaggio consiste nel rivedere e completare la configurazione del filtro del contenuto facendo clic su Avanti.
- È sempre possibile tornare indietro e modificare la configurazione. Dopo averla pronta, selezionare Crea filtro contenuto. La nuova configurazione che include gli elenchi di blocchi può ora essere applicata a una distribuzione. Le istruzioni dettagliate sono disponibili qui.
Passaggi successivi
Altre informazioni sulle procedure di intelligenza artificiale responsabile per Azure OpenAI: Panoramica delle procedure di intelligenza artificiale responsabile per i modelli OpenAI di Azure.
Altre informazioni sui filtri dei contenuti e sui livelli di gravità con il servizio OpenAI di Azure.
Per altre informazioni sul red teaming, vedere l'articolo Introduzione al red teaming di modelli linguistici di grandi dimensioni.