Condividi tramite


libreria client Sicurezza dei contenuti di Azure AI per Python - versione 1.0.0

Sicurezza dei contenuti di Azure AI rileva contenuti dannosi generati dall'utente e generati dall'intelligenza artificiale in applicazioni e servizi. Content Safety include API di testo e immagine che consentono di rilevare materiale dannoso:

  • API Analisi del testo: analizza il testo per contenuti sessuali, violenza, odio e autolesionismo con livelli di gravità multipla.
  • API Analisi immagini: analizza immagini per contenuti sessuali, violenza, odio e autolesionismo con livelli di gravità multipla.
  • API di gestione blocklist di testo: i classificatori di intelligenza artificiale predefiniti sono sufficienti per la maggior parte delle esigenze di sicurezza dei contenuti; Potrebbe tuttavia essere necessario visualizzare una schermata per i termini specifici del caso d'uso. È possibile creare elenchi bloccati di termini da usare con l'API Text.

Documentazione

Sono disponibili varie documentazioni per iniziare

Introduzione

Prerequisiti

Installare il pacchetto

pip install azure-ai-contentsafety

Autenticare il client

Ottenere l'endpoint

È possibile trovare l'endpoint per la risorsa del servizio Sicurezza dei contenuti di Azure AI usando il portale di Azure o l'interfaccia della riga di comando di Azure:

# Get the endpoint for the Azure AI Content Safety service resource
az cognitiveservices account show --name "resource-name" --resource-group "resource-group-name" --query "properties.endpoint"

Creare un oggetto ContentSafetyClient/BlocklistClient con la chiave API

Per usare una chiave API come credential parametro.

  • Passaggio 1: Ottenere la chiave API. La chiave API è disponibile nel portale di Azure o eseguendo il comando seguente dell'interfaccia della riga di comando di Azure :

    az cognitiveservices account keys list --name "<resource-name>" --resource-group "<resource-group-name>"
    
  • Passaggio 2: Passare la chiave come stringa in un'istanza di AzureKeyCredential.

    from azure.core.credentials import AzureKeyCredential
    from azure.ai.contentsafety import ContentSafetyClient, BlocklistClient
    
    endpoint = "https://<my-custom-subdomain>.cognitiveservices.azure.com/"
    credential = AzureKeyCredential("<api_key>")
    content_safety_client = ContentSafetyClient(endpoint, credential)
    blocklist_client = BlocklistClient(endpoint, credential)
    

Creare un oggetto ContentSafetyClient/BlocklistClient con credenziali del token ID Microsoft Entra

  • Passaggio 1: Abilitare Microsoft Entra ID per la risorsa. Fare riferimento a questo documento Eseguire l'autenticazione con Microsoft Entra ID per i passaggi per abilitare Microsoft Entra ID per la risorsa.

    I passaggi principali sono:

    • Creare una risorsa con un sottodominio personalizzato.
    • Creare un'entità servizio e assegnarvi il ruolo utente servizi cognitivi.
  • Passaggio 2: Impostare i valori dell'ID client, dell'ID tenant e del segreto client dell'applicazione Microsoft Entra come variabili di ambiente: AZURE_CLIENT_ID, , AZURE_TENANT_IDAZURE_CLIENT_SECRET.

    DefaultAzureCredential userà i valori di queste variabili di ambiente.

    from azure.identity import DefaultAzureCredential
    from azure.ai.contentsafety import ContentSafetyClient, BlocklistClient
    
    endpoint = "https://<my-custom-subdomain>.cognitiveservices.azure.com/"
    credential = DefaultAzureCredential()
    content_safety_client = ContentSafetyClient(endpoint, credential)
    blocklist_client = BlocklistClient(endpoint, credential)
    

Concetti chiave

Funzionalità disponibili

Esistono diversi tipi di analisi disponibili da questo servizio. La tabella seguente descrive le API attualmente disponibili.

Funzionalità Descrizione
API Analisi del testo Analizza il testo per contenuti sessuali, violenza, odio e autolesionismo con livelli di gravità multipla.
API di analisi delle immagini Analizza le immagini per contenuti sessuali, violenza, odio e autolesionismo con livelli di gravità multipla.
API di gestione dell'elenco di blocchi di testo I classificatori di intelligenza artificiale predefiniti sono sufficienti per la maggior parte delle esigenze di sicurezza dei contenuti. Tuttavia, potrebbe essere necessario visualizzare la schermata per i termini specifici del caso d'uso. È possibile creare elenchi bloccati di termini da usare con l'API Text.

Categorie di danni

Content Safety riconosce quattro categorie distinte di contenuto discutibile.

Category Descrizione
Odio I danni correlati all'odio e all'equità fanno riferimento a qualsiasi contenuto che attacca o usa linguaggio pejorative o discriminatorio con riferimento a una persona o a un gruppo di identità basato su determinati attributi differenzianti di questi gruppi, tra cui razza, etnia, nazionalità, identità di genere ed espressione, orientamento sessuale, religione, stato di immigrazione, stato di abilità, aspetto personale e dimensioni del corpo.
Sessuale Il linguaggio sessuale descrive il linguaggio correlato a organi anatomici e genitali, relazioni romantiche, atti interpretati in termini erotici o affettuosi, gravidanza, atti sessuali fisici, compresi quelli rappresentati come un assalto o un atto violento sessuale forzato contro la volontà, la prostituzione, la pornografia e l'abuso.
Violenza La violenza descrive il linguaggio correlato alle azioni fisiche destinate a ferire, ferire, danneggiare o uccidere qualcuno o qualcosa del genere; descrive armi, armi e entità correlate, ad esempio produttori, associazioni, legislazione e così via.
Autolesionismo L'autolesionismo descrive il linguaggio correlato alle azioni fisiche destinate a ferire intenzionalmente, ferire, danneggiare il corpo o uccidersi.

La classificazione può essere con etichetta multipla. Ad esempio, quando un campione di testo passa attraverso il modello di moderazione del testo, può essere classificato come contenuto sessuale e violenza.

Livelli di gravità

Ogni categoria di danni applicata dal servizio include anche una classificazione del livello di gravità. Il livello di gravità è destinato a indicare la gravità delle conseguenze della visualizzazione del contenuto contrassegnato.

Testo: la versione corrente del modello di testo supporta la scala di gravità completa di 0-7. Per impostazione predefinita, la risposta restituirà 4 valori: 0, 2, 4 e 6. Ogni due livelli adiacenti viene mappato a un singolo livello. Gli utenti possono usare "outputType" nella richiesta e impostarlo come "EightSeverityLevels" per ottenere 8 valori nell'output: 0,1,2,3,4,5,6,7. Per informazioni dettagliate, è possibile fare riferimento alle definizioni dei livelli di gravità del contenuto del testo .

  • [0,1] -> 0
  • [2,3] -> 2
  • [4,5] -> 4
  • [6,7] -> 6

Immagine: la versione corrente del modello di immagine supporta la versione ridotta della scala di gravità completa di 0-7. Il classificatore restituisce solo i livelli di gravità 0, 2, 4 e 6; ognuno dei due livelli adiacenti viene mappato a un singolo livello. Per informazioni dettagliate, è possibile fare riferimento alle definizioni dei livelli di gravità del contenuto dell'immagine .

  • [0,1] -> 0
  • [2,3] -> 2
  • [4,5] -> 4
  • [6,7] -> 6

Gestione degli elenchi di blocchi di testo

Per gestire l'elenco di blocchi di testo sono supportate le operazioni seguenti:

  • Creare o modificare un elenco di blocchi
  • Elencare tutti gli elenchi bloccati
  • Ottenere un elenco di blocchi per blocklistName
  • Aggiungere blocklistItems a un elenco di blocchi
  • Rimuovere blocklistItems da un elenco di blocchi
  • Elencare tutti gli elementi blocklist in un elenco di blocchi per blocklistName
  • Ottenere un blocklistItem in un elenco di blocchi per blocklistItemId e blocklistName
  • Eliminare un elenco di blocchi e tutti i relativi blocklistItems

È possibile impostare gli elenchi di blocchi da usare per l'analisi del testo, quindi è possibile ottenere il risultato della corrispondenza dell'elenco di blocchi dalla risposta restituita.

Esempio

La sezione seguente fornisce diversi frammenti di codice che illustrano alcune delle attività più comuni del servizio Content Safety, tra cui:

Fare riferimento ai dati di esempio usati qui. Per altri esempi, vedere esempi.

Analizzare il testo

Analizzare il testo senza elenchi di blocchi


    import os
    from azure.ai.contentsafety import ContentSafetyClient
    from azure.ai.contentsafety.models import TextCategory
    from azure.core.credentials import AzureKeyCredential
    from azure.core.exceptions import HttpResponseError
    from azure.ai.contentsafety.models import AnalyzeTextOptions

    key = os.environ["CONTENT_SAFETY_KEY"]
    endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]

    # Create a Content Safety client
    client = ContentSafetyClient(endpoint, AzureKeyCredential(key))

    # Construct a request
    request = AnalyzeTextOptions(text="You are an idiot")

    # Analyze text
    try:
        response = client.analyze_text(request)
    except HttpResponseError as e:
        print("Analyze text failed.")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

    hate_result = next(item for item in response.categories_analysis if item.category == TextCategory.HATE)
    self_harm_result = next(item for item in response.categories_analysis if item.category == TextCategory.SELF_HARM)
    sexual_result = next(item for item in response.categories_analysis if item.category == TextCategory.SEXUAL)
    violence_result = next(item for item in response.categories_analysis if item.category == TextCategory.VIOLENCE)

    if hate_result:
        print(f"Hate severity: {hate_result.severity}")
    if self_harm_result:
        print(f"SelfHarm severity: {self_harm_result.severity}")
    if sexual_result:
        print(f"Sexual severity: {sexual_result.severity}")
    if violence_result:
        print(f"Violence severity: {violence_result.severity}")

Analizzare il testo con elenchi di blocchi


    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 = "TestBlocklist"
    input_text = "I h*te you and I want to k*ll you."

    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}, BlockItemId: {match_result.blocklist_item_id}, "
                    f"BlockItemText: {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

Analizzare l'immagine


    import os
    from azure.ai.contentsafety import ContentSafetyClient
    from azure.ai.contentsafety.models import ImageCategory
    from azure.core.credentials import AzureKeyCredential
    from azure.core.exceptions import HttpResponseError
    from azure.ai.contentsafety.models import AnalyzeImageOptions, ImageData

    key = os.environ["CONTENT_SAFETY_KEY"]
    endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]
    image_path = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "./sample_data/image.jpg"))

    # Create a Content Safety client
    client = ContentSafetyClient(endpoint, AzureKeyCredential(key))

    # Build request
    with open(image_path, "rb") as file:
        request = AnalyzeImageOptions(image=ImageData(content=file.read()))

    # Analyze image
    try:
        response = client.analyze_image(request)
    except HttpResponseError as e:
        print("Analyze image failed.")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

    hate_result = next(item for item in response.categories_analysis if item.category == ImageCategory.HATE)
    self_harm_result = next(item for item in response.categories_analysis if item.category == ImageCategory.SELF_HARM)
    sexual_result = next(item for item in response.categories_analysis if item.category == ImageCategory.SEXUAL)
    violence_result = next(item for item in response.categories_analysis if item.category == ImageCategory.VIOLENCE)

    if hate_result:
        print(f"Hate severity: {hate_result.severity}")
    if self_harm_result:
        print(f"SelfHarm severity: {self_harm_result.severity}")
    if sexual_result:
        print(f"Sexual severity: {sexual_result.severity}")
    if violence_result:
        print(f"Violence severity: {violence_result.severity}")

Gestire l'elenco dei blocchi di testo

Creare o aggiornare l'elenco di blocchi di testo


    import os
    from azure.ai.contentsafety import BlocklistClient
    from azure.ai.contentsafety.models import TextBlocklist
    from azure.core.credentials import AzureKeyCredential
    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 = "TestBlocklist"
    blocklist_description = "Test blocklist management."

    try:
        blocklist = client.create_or_update_text_blocklist(
            blocklist_name=blocklist_name,
            options=TextBlocklist(blocklist_name=blocklist_name, description=blocklist_description),
        )
        if blocklist:
            print("\nBlocklist created or updated: ")
            print(f"Name: {blocklist.blocklist_name}, Description: {blocklist.description}")
    except HttpResponseError as e:
        print("\nCreate or update text blocklist failed: ")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

Elencare elenchi di blocchi di testo


    import os
    from azure.ai.contentsafety import BlocklistClient
    from azure.core.credentials import AzureKeyCredential
    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))

    try:
        blocklists = client.list_text_blocklists()
        if blocklists:
            print("\nList blocklists: ")
            for blocklist in blocklists:
                print(f"Name: {blocklist.blocklist_name}, Description: {blocklist.description}")
    except HttpResponseError as e:
        print("\nList text blocklists failed: ")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

Ottenere l'elenco dei blocchi di testo


    import os
    from azure.ai.contentsafety import BlocklistClient
    from azure.core.credentials import AzureKeyCredential
    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 = "TestBlocklist"

    try:
        blocklist = client.get_text_blocklist(blocklist_name=blocklist_name)
        if blocklist:
            print("\nGet blocklist: ")
            print(f"Name: {blocklist.blocklist_name}, Description: {blocklist.description}")
    except HttpResponseError as e:
        print("\nGet text blocklist failed: ")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

Eliminare l'elenco di blocchi di testo


    import os
    from azure.ai.contentsafety import BlocklistClient
    from azure.core.credentials import AzureKeyCredential
    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 = "TestBlocklist"

    try:
        client.delete_text_blocklist(blocklist_name=blocklist_name)
        print(f"\nDeleted blocklist: {blocklist_name}")
    except HttpResponseError as e:
        print("\nDelete blocklist failed:")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

Aggiungere blockItems


    import os
    from azure.ai.contentsafety import BlocklistClient
    from azure.ai.contentsafety.models import AddOrUpdateTextBlocklistItemsOptions, TextBlocklistItem
    from azure.core.credentials import AzureKeyCredential
    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 = "TestBlocklist"
    block_item_text_1 = "k*ll"
    block_item_text_2 = "h*te"

    block_items = [TextBlocklistItem(text=block_item_text_1), TextBlocklistItem(text=block_item_text_2)]
    try:
        result = client.add_or_update_blocklist_items(
            blocklist_name=blocklist_name, options=AddOrUpdateTextBlocklistItemsOptions(blocklist_items=block_items)
        )
        for block_item in result.blocklist_items:
            print(
                f"BlockItemId: {block_item.blocklist_item_id}, Text: {block_item.text}, Description: {block_item.description}"
            )
    except HttpResponseError as e:
        print("\nAdd block items failed: ")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

List blockItems


    import os
    from azure.ai.contentsafety import BlocklistClient
    from azure.core.credentials import AzureKeyCredential
    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 = "TestBlocklist"

    try:
        block_items = client.list_text_blocklist_items(blocklist_name=blocklist_name)
        if block_items:
            print("\nList block items: ")
            for block_item in block_items:
                print(
                    f"BlockItemId: {block_item.blocklist_item_id}, Text: {block_item.text}, "
                    f"Description: {block_item.description}"
                )
    except HttpResponseError as e:
        print("\nList block items failed: ")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

Get blockItem


    import os
    from azure.ai.contentsafety import BlocklistClient
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.contentsafety.models import TextBlocklistItem, AddOrUpdateTextBlocklistItemsOptions
    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 = "TestBlocklist"
    block_item_text_1 = "k*ll"

    try:
        # Add a blockItem
        add_result = client.add_or_update_blocklist_items(
            blocklist_name=blocklist_name,
            options=AddOrUpdateTextBlocklistItemsOptions(blocklist_items=[TextBlocklistItem(text=block_item_text_1)]),
        )
        if not add_result or not add_result.blocklist_items or len(add_result.blocklist_items) <= 0:
            raise RuntimeError("BlockItem not created.")
        block_item_id = add_result.blocklist_items[0].blocklist_item_id

        # Get this blockItem by blockItemId
        block_item = client.get_text_blocklist_item(blocklist_name=blocklist_name, blocklist_item_id=block_item_id)
        print("\nGet blockitem: ")
        print(
            f"BlockItemId: {block_item.blocklist_item_id}, Text: {block_item.text}, Description: {block_item.description}"
        )
    except HttpResponseError as e:
        print("\nGet block item failed: ")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

Rimuovere blockItems


    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 = "TestBlocklist"
    block_item_text_1 = "k*ll"

    try:
        # Add a blockItem
        add_result = client.add_or_update_blocklist_items(
            blocklist_name=blocklist_name,
            options=AddOrUpdateTextBlocklistItemsOptions(blocklist_items=[TextBlocklistItem(text=block_item_text_1)]),
        )
        if not add_result or not add_result.blocklist_items or len(add_result.blocklist_items) <= 0:
            raise RuntimeError("BlockItem not created.")
        block_item_id = add_result.blocklist_items[0].blocklist_item_id

        # Remove this blockItem by blockItemId
        client.remove_blocklist_items(
            blocklist_name=blocklist_name, options=RemoveTextBlocklistItemsOptions(blocklist_item_ids=[block_item_id])
        )
        print(f"\nRemoved blockItem: {add_result.blocklist_items[0].blocklist_item_id}")
    except HttpResponseError as e:
        print("\nRemove block item failed: ")
        if e.error:
            print(f"Error code: {e.error.code}")
            print(f"Error message: {e.error.message}")
            raise
        print(e)
        raise

Risoluzione dei problemi

Generale

Sicurezza dei contenuti di Azure AI libreria client genererà eccezioni definite in Azure Core. I codici di errore sono definiti di seguito:

Codice di errore Motivi possibili Suggerimenti
InvalidRequestBody Uno o più campi nel corpo della richiesta non corrispondono alla definizione dell'API. 1. Controllare la versione dell'API specificata nella chiamata API.
2. Controllare la definizione API corrispondente per la versione dell'API selezionata.
InvalidResourceName Il nome della risorsa specificato nell'URL non soddisfa i requisiti, ad esempio il nome dell'elenco di blocchi, l'ID termine blocklist e così via. 1. Controllare la versione dell'API specificata nella chiamata API.
2. Verificare se il nome specificato ha caratteri non validi in base alla definizione dell'API.
ResourceNotFound La risorsa specificata nell'URL potrebbe non esistere, ad esempio il nome dell'elenco di blocchi. 1. Controllare la versione dell'API specificata nella chiamata API.
2. Controllare doppiamente l'esistenza della risorsa specificata nell'URL.
InternalError Alcune situazioni impreviste sul lato server sono state attivate. 1. È possibile riprovare qualche volta dopo un piccolo periodo e vedere che il problema si verifica di nuovo.
2. Contattare il supporto tecnico di Azure se questo problema persiste.
ServerBusy Il lato server non può elaborare temporaneamente la richiesta. 1. È possibile riprovare qualche volta dopo un piccolo periodo e vedere che il problema si verifica di nuovo.
2.Contattare il supporto tecnico di Azure se questo problema persiste.
TooManyRequests Il servizio RPS corrente ha superato la quota per lo SKU corrente. 1. Controllare la tabella dei prezzi per comprendere la quota RPS.
2.Contattare il supporto tecnico di Azure se è necessario più QPS.

Registrazione

Questa libreria usa la libreria di registrazione standard per la registrazione.

Le informazioni di base sulle sessioni HTTP (URL, intestazioni e così via) vengono registrate a INFO livello.

La registrazione dettagliata DEBUG a livello, inclusi i corpi di richiesta/risposta e le intestazioni non contrassegnate , può essere abilitata nel client o per operazione con l'argomento logging_enable parola chiave.

Vedere la documentazione completa sulla registrazione sdk con esempi qui.

Configurazione facoltativa

Gli argomenti delle parole chiave facoltativi possono essere passati al client e a livello di operazione. La documentazione di riferimento di azure-core descrive le configurazioni disponibili per tentativi, registrazione, protocolli di trasporto e altro ancora.

Passaggi successivi

Documentazione aggiuntiva

Per una documentazione più completa sulla sicurezza dei contenuti di Azure, vedere l'Sicurezza dei contenuti di Azure AI su docs.microsoft.com.

Contributo

In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, vedere https://cla.microsoft.com.

Quando si invia una richiesta pull, un bot CLA determina automaticamente se è necessario specificare un contratto CLA e completare la richiesta pull in modo appropriato (ad esempio con un'etichetta e un commento). Seguire le istruzioni specificate dal bot. È sufficiente eseguire questa operazione una sola volta per tutti i repository che usano il contratto CLA Microsoft.

Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.