I dati di esempio in questa guida possono includere contenuto offensivo. La discrezione dell'utente è consigliata.
I classificatori di intelligenza artificiale predefiniti sono sufficienti per la maggior parte delle esigenze di moderazione dei contenuti. Può tuttavia essere necessario filtrare termini specifici per il proprio caso d’uso. Gli elenchi di blocchi consentono di aggiungere termini personalizzati ai classificatori di intelligenza artificiale. È possibile usare gli elenchi di blocchi per visualizzare termini o frasi specifici che si desidera contrassegnare nel contenuto.
Dopo aver creato la sottoscrizione di Azure, Creare una risorsa di Sicurezza dei contenuti nel portale di Azure per ottenere la chiave e l'endpoint. Immettere un nome univoco per la risorsa, selezionare la sottoscrizione, quindi selezionare un gruppo di risorse, un'area supportata (vedere Disponibilità di aree) 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.
L'installazione di Python deve includere pip. È possibile verificare se pip è installato eseguendo pip --version nella riga di comando. Ottenere pip installando la versione più recente di Python.
Se si usa Python, è necessario installare la libreria client di Sicurezza dei contenuti di Azure AI per Python. Eseguire il comando pip install azure-ai-contentsafety nella directory del progetto
Se si usa .NET, è necessario installare la libreria client di Sicurezza dei contenuti di Azure AI per .NET. Eseguire il comando dotnet add package Azure.AI.ContentSafety --prerelease nella directory del progetto
Creare variabili di ambiente
In questo esempio, sarà possibile scrivere le credenziali nelle variabili di ambiente nel computer locale che esegue l'applicazione.
Per impostare la variabile di ambiente per la chiave e l'endpoint, aprire una finestra della console e seguire le istruzioni del sistema operativo e dell'ambiente di sviluppo.
Per impostare la CONTENT_SAFETY_KEYvariabile di ambiente, sostituire YOUR_CONTENT_SAFETY_KEY con una delle chiavi della risorsa.
Per impostare la CONTENT_SAFETY_ENDPOINTvariabile di ambiente, sostituire YOUR_CONTENT_SAFETY_ENDPOINT con l'endpoint della risorsa.
Importante
Se si usa una chiave API, archiviarla in modo sicuro in un'altra posizione, ad esempio in Azure Key Vault. Non includere la chiave API direttamente nel codice e non esporla mai pubblicamente.
Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare gli eventuali programmi in esecuzione che leggeranno le variabili di ambiente, inclusa la finestra della console.
Copiare il comando cURL qui di seguito in un editor di testo e apportare le modifiche seguenti:
Sostituire <endpoint> con l'URL dell'endpoint.
Sostituire <enter_your_key_here> con la chiave.
Sostituire <your_list_name> (nell’URL) con un nome personalizzato per l'elenco. Sostituire anche l'ultimo termine dell'URL REST con lo stesso nome. Caratteri consentiti: 0-9, A-Z, a-z, - . _ ~.
Facoltativamente, sostituire il valore del campo "description" con una descrizione personalizzata.
Copiare il comando cURL qui di seguito in un editor di testo e apportare le modifiche seguenti:
Sostituire <endpoint> con l'URL dell'endpoint.
Sostituire <enter_your_key_here> con la chiave.
Sostituire <your_list_name> (nell'URL) con il nome usato nel passaggio di creazione dell'elenco.
Facoltativamente, sostituire il valore del campo "description" con una descrizione personalizzata.
Sostituire il valore del campo "text" con l'elemento che si desidera aggiungere alla blocklist. La lunghezza massima di un blocklistItem è di 128 caratteri.
Creare una nuova app console C# e aprirla in un editor o un IDE a scelta. Incollare il codice seguente.
string endpoint = Environment.GetEnvironmentVariable("CONTENT_SAFETY_ENDPOINT");
string key = Environment.GetEnvironmentVariable("CONTENT_SAFETY_KEY");
BlocklistClient blocklistClient = new BlocklistClient(new Uri(endpoint), new AzureKeyCredential(key));
var blocklistName = "<your_list_name>";
string blocklistItemText1 = "<block_item_text_1>";
string blocklistItemText2 = "<block_item_text_2>";
var blocklistItems = new TextBlocklistItem[] { new TextBlocklistItem(blocklistItemText1), new TextBlocklistItem(blocklistItemText2) };
var addedBlocklistItems = blocklistClient.AddOrUpdateBlocklistItems(blocklistName, new AddOrUpdateTextBlocklistItemsOptions(blocklistItems));
if (addedBlocklistItems != null && addedBlocklistItems.Value != null)
{
Console.WriteLine("\nBlocklistItems added:");
foreach (var addedBlocklistItem in addedBlocklistItems.Value.BlocklistItems)
{
Console.WriteLine("BlocklistItemId: {0}, Text: {1}, Description: {2}", addedBlocklistItem.BlocklistItemId, addedBlocklistItem.Text, addedBlocklistItem.Description);
}
}
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire i valori dei campi blocklistItemText1 e blocklistItemText2 con gli elementi da aggiungere all'elenco di blocchi. La lunghezza massima di un elemento block-level è di 128 caratteri.
Facoltativamente, aggiungere altre stringhe di elementi block-level al parametro blockItems.
Eseguire il codice.
Creare una nuova applicazione Java e aprirla in un editor o un IDE a scelta. Incollare il codice seguente.
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire i valori dei campi blockItemText1 e blockItemText2 con gli elementi da aggiungere all'elenco di blocchi. La lunghezza massima di un elemento block-level è di 128 caratteri.
Facoltativamente, aggiungere altre stringhe di elementi block-level al parametro blockItems.
Eseguire il codice.
Creare un nuovo script Python in un editor o un IDE a scelta. Incollare il codice seguente.
import os
from azure.ai.contentsafety import BlocklistClient
from azure.core.credentials import AzureKeyCredential
from azure.ai.contentsafety.models import (
AddOrUpdateTextBlocklistItemsOptions, TextBlocklistItem
)
from azure.core.exceptions import HttpResponseError
key = os.environ["CONTENT_SAFETY_KEY"]
endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]
# Create a Blocklist client
client = BlocklistClient(endpoint, AzureKeyCredential(key))
blocklist_name = "<your_list_name>"
blocklist_item_text_1 = "<block_item_text_1>"
blocklist_item_text_2 = "<block_item_text_2>"
blocklist_items = [TextBlocklistItem(text=blocklist_item_text_1), TextBlocklistItem(text=blocklist_item_text_2)]
try:
result = client.add_or_update_blocklist_items(
blocklist_name=blocklist_name, options=AddOrUpdateTextBlocklistItemsOptions(blocklist_items=blocklist_items)
for blocklist_item in result.blocklist_items:
print(
f"BlocklistItemId: {blocklist_item.blocklist_item_id}, Text: {blocklist_item.text}, Description: {blocklist_item.description}"
)
except HttpResponseError as e:
print("\nAdd blocklistItems failed: ")
if e.error:
print(f"Error code: {e.error.code}")
print(f"Error message: {e.error.message}")
raise
print(e)
raise
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire i valori dei campi blocklist_item_text_1 e blocklist_item_text_2 con gli elementi da aggiungere all'elenco di blocchi. La lunghezza massima di un elemento block-level è di 128 caratteri.
Facoltativamente, aggiungere altre stringhe di elementi block-level al parametro block_items.
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire i valori dei campi block_item_text_1 e block_item_text_2 con gli elementi da aggiungere all'elenco di blocchi. La lunghezza massima di un elemento block-level è di 128 caratteri.
Facoltativamente, aggiungere altre stringhe di elementi block-level al parametro blocklistItems.
Eseguire lo script.
Nota
Ci sarà un certo ritardo dopo l'aggiunta o la modifica di un elemento block-level prima che abbia effetto sull'analisi del testo, in genere non più di cinque minuti.
Copiare il comando cURL qui di seguito in un editor di testo e apportare le modifiche seguenti:
Sostituire <endpoint> con l'URL dell'endpoint.
Sostituire <enter_your_key_here> con la chiave.
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco. Il campo "blocklistNames" può contenere un array di diversi ID elenco.
Facoltativamente, modificare il valore di "breakByBlocklists". true indica che una volta trovata una corrispondenza con una blocklist, l'analisi restituirà immediatamente senza output del modello. false causerà la prosecuzione dell'analisi del modello nelle categorie predefinite.
Facoltativamente, modificare il valore del campo "text" in qualsiasi testo da analizzare.
curl --location --request POST '<endpoint>/contentsafety/text:analyze?api-version=2024-09-01&' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \
--data-raw '{
"text": "I want to beat you till you bleed",
"categories": [
"Hate",
"Sexual",
"SelfHarm",
"Violence"
],
"blocklistNames":["<your_list_name>"],
"haltOnBlocklistHit": false,
"outputType": "FourSeverityLevels"
}'
La risposta JSON conterrà un valore "blocklistMatchResults" che indica le corrispondenze con la blocklist. Segnala la posizione nella stringa di testo in cui è stata trovata la corrispondenza.
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire la il testo di input request con il testo che si desidera analizzare.
Eseguire lo script.
Creare un nuovo script Python in un editor o un IDE a scelta. Incollare il codice seguente.
import os
from azure.ai.contentsafety import ContentSafetyClient
from azure.core.credentials import AzureKeyCredential
from azure.ai.contentsafety.models import AnalyzeTextOptions
from azure.core.exceptions import HttpResponseError
key = os.environ["CONTENT_SAFETY_KEY"]
endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]
# Create a Content Safety client
client = ContentSafetyClient(endpoint, AzureKeyCredential(key))
blocklist_name = "<your_list_name>"
input_text = "<your_input_text>"
try:
# After you edit your blocklist, it usually takes effect in 5 minutes, please wait some time before analyzing
# with blocklist after editing.
analysis_result = client.analyze_text(
AnalyzeTextOptions(text=input_text, blocklist_names=[blocklist_name], halt_on_blocklist_hit=False)
)
if analysis_result and analysis_result.blocklists_match:
print("\nBlocklist match results: ")
for match_result in analysis_result.blocklists_match:
print(
f"BlocklistName: {match_result.blocklist_name}, BlocklistItemId: {match_result.blocklist_item_id}, "
f"BlocklistItemText: {match_result.blocklist_item_text}"
)
except HttpResponseError as e:
print("\nAnalyze text failed: ")
if e.error:
print(f"Error code: {e.error.code}")
print(f"Error message: {e.error.message}")
raise
print(e)
raise
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire la variabile input_text con il testo che si desidera analizzare.
Copiare il comando cURL qui di seguito in un editor di testo e apportare le modifiche seguenti:
Sostituire <endpoint> con l'URL dell'endpoint.
Sostituire <enter_your_key_here> con la chiave.
Sostituire <your_list_name> (nell'URL della richiesta) con il nome usato nel passaggio di creazione dell'elenco.
Sostituire <your_item_id> con il valore ID per il blocklistitem. Si tratta del valore del campo "blocklistItemId" dalle chiamate API Aggiungi blocklistItem o Ottieni tutti i blocklistItem.
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire <your_block_item_id> con l'ID dell'elemento da ottenere.
Eseguire lo script.
Rimuovere blocklistItem da un elenco di blocchi.
Nota
Ci sarà un certo ritardo dopo l’eliminazione di un elemento block-level prima che abbia effetto sull'analisi del testo, in genere non più di cinque minuti.
Copiare il comando cURL qui di seguito in un editor di testo e apportare le modifiche seguenti:
Sostituire <endpoint> con l'URL dell'endpoint.
Sostituire <enter_your_key_here> con la chiave.
Sostituire <your_list_name> (nell'URL della richiesta) con il nome usato nel passaggio di creazione dell'elenco.
Sostituire <item_id> con il valore ID per il blocklistitem. Si tratta del valore del campo "blocklistItemId" dalle chiamate API Aggiungi blocklistItem o Ottieni tutti i blocklistItem.
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire <your_block_item_id> con l'ID di un elemento aggiunto in precedenza.
Eseguire lo script.
Creare un nuovo script Python in un editor o un IDE a scelta. Incollare il codice seguente.
import os
from azure.ai.contentsafety import BlocklistClient
from azure.core.credentials import AzureKeyCredential
from azure.ai.contentsafety.models import (
TextBlocklistItem,
AddOrUpdateTextBlocklistItemsOptions,
RemoveTextBlocklistItemsOptions,
)
from azure.core.exceptions import HttpResponseError
key = os.environ["CONTENT_SAFETY_KEY"]
endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]
# Create a Blocklist client
client = BlocklistClient(endpoint, AzureKeyCredential(key))
blocklist_name = "<your_list_name>"
blocklist_item_text_1 = "<block_item_text>"
try:
# Add a blocklistItem
add_result = client.add_or_update_blocklist_items(
blocklist_name=blocklist_name,
options=AddOrUpdateTextBlocklistItemsOptions(blocklist_items=[TextBlocklistItem(text=blocklist_item_text_1)]),
)
if not add_result or not add_result.blocklist_items or len(add_result.blocklist_items) <= 0:
raise RuntimeError("BlocklistItem not created.")
blocklist_item_id = add_result.blocklist_items[0].blocklist_item_id
# Remove this blocklistItem by blocklistItemId
client.remove_blocklist_items(
blocklist_name=blocklist_name, options=RemoveTextBlocklistItemsOptions(blocklist_item_ids=[blocklist_item_id])
)
print(f"\nRemoved blocklistItem: {add_result.blocklist_items[0].blocklist_item_id}")
except HttpResponseError as e:
print("\nRemove blocklist item failed: ")
if e.error:
print(f"Error code: {e.error.code}")
print(f"Error message: {e.error.message}")
raise
print(e)
raise
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire <block_item_text> con il testo dell'elemento di blocco.
Sostituire <your_list_name> con il nome usato nel passaggio di creazione dell'elenco.
Sostituire <your_block_item_id con l'ID dell'elemento da rimuovere.
Eseguire lo script.
Eliminare un elenco e tutto il contenuto
Nota
Ci sarà un certo ritardo dopo l’eliminazione di un elenco prima che abbia effetto sull'analisi del testo, in genere non più di cinque minuti.