Freigeben über


Azure KI Inhaltssicherheit Clientbibliothek für Python – Version 1.0.0

Azure KI Inhaltssicherheit erkennt schädliche benutzergenerierte und KI-generierte Inhalte in Anwendungen und Diensten. Content Safety umfasst Text- und Bild-APIs, mit denen Sie schädliches Material erkennen können:

  • Textanalyse-API: Scannt Text auf sexuelle Inhalte, Gewalt, Hass und Selbstverletzung mit mehreren Schweregraden.
  • Bildanalyse-API: Scannt Bilder auf sexuelle Inhalte, Gewalt, Hass und Selbstverletzung mit mehreren Schweregraden.
  • Textblocklist-Verwaltungs-APIs: Die standardmäßigen KI-Klassifizierer reichen für die meisten Anforderungen an die Inhaltssicherheit aus. Möglicherweise müssen Sie jedoch nach Begriffen suchen, die für Ihren Anwendungsfall spezifisch sind. Sie können Blocklisten mit Begriffen erstellen, die mit der Text-API verwendet werden sollen.

Dokumentation

Es stehen verschiedene Dokumentationen zur Verfügung, die Ihnen den Einstieg erleichtern

Erste Schritte

Voraussetzungen

Installieren des Pakets

pip install azure-ai-contentsafety

Authentifizieren des Clients

Abrufen des Endpunkts

Sie können den Endpunkt für Ihre Azure KI Inhaltssicherheit-Dienstressource über das Azure-Portal oder die Azure CLI finden:

# 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"

Erstellen eines ContentSafetyClient/BlocklistClient mit API-Schlüssel

So verwenden Sie einen API-Schlüssel als credential Parameter.

  • Schritt 1: Abrufen des API-Schlüssels. Den API-Schlüssel finden Sie im Azure-Portal oder indem Sie den folgenden Azure CLI-Befehl ausführen:

    az cognitiveservices account keys list --name "<resource-name>" --resource-group "<resource-group-name>"
    
  • Schritt 2: Übergeben Sie den Schlüssel als Zeichenfolge an eine instance von 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)
    

Erstellen eines ContentSafetyClient/BlocklistClient mit Microsoft Entra ID-Tokenanmeldeinformationen

  • Schritt 1: Aktivieren Sie Microsoft Entra-ID für Ihre Ressource. Die Schritte zum Aktivieren Microsoft Entra-ID für Ihre Ressource finden Sie in diesem Dokument Authentifizieren mit Microsoft Entra ID.

    Die Standard Schritte sind:

    • Erstellen Sie eine Ressource mit einer benutzerdefinierten Unterdomäne.
    • Erstellen Sie den Dienstprinzipal, und weisen Sie ihr die Cognitive Services-Benutzerrolle zu.
  • Schritt 2: Legen Sie die Werte der Client-ID, der Mandanten-ID und des geheimen Clientschlüssels der Microsoft Entra Anwendung als Umgebungsvariablen fest: AZURE_CLIENT_ID, AZURE_TENANT_ID, . AZURE_CLIENT_SECRET

    DefaultAzureCredential verwendet die Werte aus diesen Umgebungsvariablen.

    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)
    

Wichtige Begriffe

Verfügbare Features

In diesem Dienst stehen verschiedene Analysetypen zur Verfügung. In der folgenden Tabelle werden die derzeit verfügbaren APIs beschrieben.

Funktion BESCHREIBUNG
Textanalyse-API Scannt Text auf sexuelle Inhalte, Gewalt, Hass und Selbstverletzung mit mehreren Schweregraden.
Bildanalyse-API Scannt Bilder auf sexuelle Inhalte, Gewalt, Hass und Selbstverletzung mit mehreren Schweregraden.
Textblocklist-Verwaltungs-APIs Die standardmäßigen KI-Klassifizierer sind für die meisten Anforderungen an die Inhaltssicherheit ausreichend. Möglicherweise müssen Sie jedoch nach Begriffen suchen, die für Ihren Anwendungsfall spezifisch sind. Sie können Blocklisten mit Begriffen erstellen, die mit der Text-API verwendet werden sollen.

Schadenskategorien

Content Safety erkennt vier verschiedene Kategorien anstößiger Inhalte.

Category BESCHREIBUNG
Hass Hass- und Fairnessschäden beziehen sich auf alle Inhalte, die eine abwertende oder diskriminierende Sprache mit Bezug auf eine Person oder Identitätsgruppe auf der Grundlage bestimmter differenzierender Attribute dieser Gruppen angreifen oder verwenden, einschließlich, aber nicht beschränkt auf Rasse, ethnische Zugehörigkeit, Nationalität, Geschlechtsidentität und Ausdruck, sexuelle Orientierung, Religion, Einwanderung status, Fähigkeit status, persönliches Aussehen und Körpergröße.
Sexuell Sexuell beschreibt Sprache im Zusammenhang mit anatomischen Organen und Genitalien, romantische Beziehungen, erotisch oder liebevoll dargestellte Handlungen, Schwangerschaft, körperliche sexuelle Handlungen, einschließlich solcher, die als Übergriff oder erzwungene sexuelle Gewalt gegen den Willen dargestellt werden, Prostitution, Pornografie und Missbrauch.
Gewalt Gewalt beschreibt Sprache im Zusammenhang mit körperlichen Handlungen, die dazu dienen, jemanden oder etwas zu verletzen, zu verletzen, zu beschädigen oder zu töten; beschreibt Waffen, Waffen und verwandte Entitäten wie Hersteller, Verbände, Gesetzgebung usw.
Selbstverletzung Selbstverletzung beschreibt Sprache im Zusammenhang mit körperlichen Handlungen, die dazu dienen, den eigenen Körper absichtlich zu verletzen, zu verletzen oder sich selbst zu töten.

Die Klassifizierung kann mit mehreren Bezeichnungen versehen werden. Wenn z. B. ein Textbeispiel das Textmoderationsmodell durchläuft, kann es sowohl als sexueller als auch als gewalttätiger Inhalt eingestuft werden.

Schweregrade

Jede Schadenskategorie des Diensts verfügt auch über eine Bewertung des Schweregrads. Der Schweregrad gibt an, wie schwerwiegend die Folgen des Zeigens des gekennzeichneten Inhalts sind.

Text: Die aktuelle Version des Textmodells unterstützt den vollständigen Schweregrad 0 bis 7. Standardmäßig gibt die Antwort 4 Werte aus: 0, 2, 4 und 6. Jede zwei benachbarten Ebenen wird einer einzelnen Ebene zugeordnet. Benutzer können "outputType" in der Anforderung verwenden und auf "EightSeverityLevels" festlegen, um 8 Werte in der Ausgabe abzurufen: 0,1,2,3,4,5,6,7. Ausführliche Informationen finden Sie unter Definitionen von Schweregraden für Textinhalt .

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

Bild: Die aktuelle Version des Imagemodells unterstützt die gekürzte Version des vollständigen Schweregrads von 0 bis 7. Der Klassifizierer gibt nur die Schweregrade 0, 2, 4 und 6 zurück. jede zwei benachbarten Ebenen werden einer einzelnen Ebene zugeordnet. Ausführliche Informationen finden Sie unter Definitionen der Schweregrade von Bildinhalten .

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

Verwaltung von Textblocklisten

Folgende Vorgänge werden unterstützt, um Ihre Textblockliste zu verwalten:

  • Erstellen oder Ändern einer Sperrliste
  • Auflisten aller Sperrlisten
  • Abrufen einer Blockliste nach blocklistName
  • Hinzufügen von blocklistItems zu einer Blockliste
  • Entfernen von blocklistItems aus einer Blockliste
  • Auflisten aller blocklistItems in einer Blockliste nach blocklistName
  • Abrufen eines blocklistItem in einer Blockliste nach blocklistItemId und blocklistName
  • Löschen einer Blockliste und aller zugehörigen blocklistItems

Sie können die Blocklisten festlegen, die Sie beim Analysieren von Text verwenden möchten, und dann können Sie das Ergebnis der Blocklisteneinstimmung aus der zurückgegebenen Antwort abrufen.

Beispiele

Der folgende Abschnitt enthält mehrere Codeausschnitte, die einige der häufigsten Aufgaben des Inhaltssicherheitsdiensts behandeln, einschließlich:

Die hier verwendeten Daten finden Sie unter Beispieldaten . Weitere Beispiele finden Sie unter Beispiele.

Analysieren von Text

Analysieren von Text ohne Blocklisten


    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}")

Analysieren von Text mit Blocklisten


    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

Bild analysieren


    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}")

Textblockliste verwalten

Erstellen oder Aktualisieren einer Textblockliste


    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

Textblocklisten auflisten


    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

Textblockliste abrufen


    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

Textblockliste löschen


    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

Hinzufügen von 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

ListenblockItems


    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

BlockItem abrufen


    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

Entfernen von 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

Problembehandlung

Allgemein

Azure KI Inhaltssicherheit Clientbibliothek löst in Azure Core definierte Ausnahmen aus. Fehlercodes werden wie folgt definiert:

Fehlercode Mögliche Ursachen Vorschläge
InvalidRequestBody Mindestens ein Feld im Anforderungstext entspricht nicht der API-Definition. 1. Überprüfen Sie die API-Version, die Sie im API-Aufruf angegeben haben.
2. Überprüfen Sie die entsprechende API-Definition für die ausgewählte API-Version.
InvalidResourceName Der Ressourcenname, den Sie in der URL angegeben haben, erfüllt nicht die Anforderungen, z. B. den Namen der Blockliste, die Begriffs-ID der Blockliste usw. 1. Überprüfen Sie die API-Version, die Sie im API-Aufruf angegeben haben.
2. Überprüfen Sie, ob der angegebene Name gemäß der API-Definition ungültige Zeichen aufweist.
ResourceNotFound Die Ressource, die Sie in der URL angegeben haben, ist möglicherweise nicht vorhanden, z. B. der Name der Blockliste. 1. Überprüfen Sie die API-Version, die Sie im API-Aufruf angegeben haben.
2. Überprüfen Sie das Vorhandensein der in der URL angegebenen Ressource.
InternalError Einige unerwartete Situationen auf der Serverseite wurden ausgelöst. 1. Sie können es nach einem kurzen Zeitraum noch einige Male wiederholen und feststellen, ob das Problem erneut auftritt.
2. Wenden Sie sich an den Azure-Support, wenn dieses Problem weiterhin besteht.
ServerBusy Die Serverseite kann die Anforderung vorübergehend nicht verarbeiten. 1. Sie können es nach einem kurzen Zeitraum noch einige Male wiederholen und feststellen, ob das Problem erneut auftritt.
2. Wenden Sie sich an den Azure-Support, wenn dieses Problem weiterhin besteht.
TooManyRequests Der aktuelle RPS hat das Kontingent für Ihre aktuelle SKU überschritten. 1. Überprüfen Sie die Preistabelle, um das RPS-Kontingent zu verstehen.
2. Wenden Sie sich an den Azure-Support, wenn Sie mehr QPS benötigen.

Protokollierung

Diese Bibliothek verwendet die Standardprotokollierungsbibliothek für die Protokollierung.

Grundlegende Informationen zu HTTP-Sitzungen (URLs, Header usw.) werden auf Ebene INFO protokolliert.

Die detaillierte DEBUG Protokollierung auf Ebene, einschließlich Anforderungs-/Antworttexten und nicht ausgeführten Headern, kann auf dem Client oder pro Vorgang mit dem logging_enable argument Schlüsselwort (keyword) aktiviert werden.

Sehen Sie sich die vollständige SDK-Protokollierungsdokumentation mit Beispielen hier an.

Optionale Konfiguration

Optionale Schlüsselwort (keyword) Argumente können auf Client- und Vorgangsebene übergeben werden. Die azure-core-Referenzdokumentation beschreibt verfügbare Konfigurationen für Wiederholungen, Protokollierung, Transportprotokolle und vieles mehr.

Nächste Schritte

Zusätzliche Dokumentation

Eine ausführlichere Dokumentation zu Azure Content Safety finden Sie im Azure KI Inhaltssicherheit auf docs.microsoft.com.

Mitwirken

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.

Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex, oder wenden Sie sich mit weiteren Fragen oder Kommentaren an opencode@microsoft.com.