Bezpečnost obsahu Azure AI klientské knihovny pro Python – verze 1.0.0
Bezpečnost obsahu Azure AI detekuje v aplikacích a službách škodlivý obsah generovaný uživateli a AI. Zabezpečení obsahu zahrnuje rozhraní API pro text a obrázky, která umožňují detekovat škodlivý materiál:
- Rozhraní API pro analýzu textu: Vyhledá v textu sexuální obsah, násilí, nenávist a sebepoškozování s více úrovněmi závažnosti.
- Rozhraní API pro analýzu obrázků: Skenuje na obrázcích sexuální obsah, násilí, nenávist a sebepoškozování s více úrovněmi závažnosti.
- Rozhraní API pro správu seznamu blokovaných bloků textu: Výchozí klasifikátory AI jsou dostatečné pro většinu potřeb zabezpečení obsahu. Možná ale budete muset vyhledat podmínky, které jsou specifické pro váš případ použití. Můžete vytvořit seznamy blokovaných termínů pro použití s rozhraním Text API.
Dokumentace
K dispozici je různá dokumentace, která vám pomůže začít.
Začínáme
Požadavky
- K použití tohoto balíčku se vyžaduje Python 3.7 nebo novější.
- K použití tohoto balíčku potřebujete předplatné Azure .
- Prostředek Bezpečnost obsahu Azure AI, pokud žádný prostředek neexistuje, můžete vytvořit nový.
Instalace balíčku
pip install azure-ai-contentsafety
Ověření klienta
Získání koncového bodu
Koncový bod prostředku služby Bezpečnost obsahu Azure AI můžete najít pomocí webu Azure Portal nebo Azure CLI:
# 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"
Vytvoření ContentSafetyClient/BlocklistClient s klíčem rozhraní API
Použití klíče rozhraní API jako parametru credential
Krok 1: Získejte klíč rozhraní API. Klíč rozhraní API najdete na webu Azure Portal nebo spuštěním následujícího příkazu Azure CLI :
az cognitiveservices account keys list --name "<resource-name>" --resource-group "<resource-group-name>"
Krok 2: Předejte klíč jako řetězec do instance .
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)
Vytvoření objektu ContentSafetyClient/BlocklistClient s přihlašovacími údaji tokenu id Microsoft Entra
Krok 1: Povolte id Microsoft Entra pro váš prostředek. Postup povolení ID Microsoft Entra pro váš prostředek najdete v tomto dokumentu Ověření pomocí ID Microsoft Entra.
Hlavní kroky jsou:
- Vytvořte prostředek s vlastní subdoménou.
- Vytvořte instanční objekt a přiřaďte mu roli uživatele služeb Cognitive Services.
Krok 2: Nastavte hodnoty ID klienta, ID tenanta a tajného klíče klienta aplikace Microsoft Entra jako proměnné prostředí:
AZURE_CLIENT_ID
,AZURE_TENANT_ID
, .AZURE_CLIENT_SECRET
DefaultAzureCredential použije hodnoty z těchto proměnných prostředí.
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)
Klíčové koncepty
Dostupné funkce
Tato služba má k dispozici různé typy analýz. Následující tabulka popisuje aktuálně dostupná rozhraní API.
Funkce | Popis |
---|---|
Rozhraní API pro analýzu textu | Vyhledá v textu sexuální obsah, násilí, nenávist a sebepoškozování s více úrovněmi závažnosti. |
Rozhraní API pro analýzu obrázků | Skenuje na obrázcích sexuální obsah, násilí, nenávist a sebepoškozování s více úrovněmi závažnosti. |
Rozhraní API pro správu seznamu blokovaných bloků textu | Výchozí klasifikátory AI jsou dostatečné pro většinu potřeb zabezpečení obsahu. Možná ale budete muset zjistit podmínky, které jsou specifické pro váš případ použití. Můžete vytvořit seznamy blokovaných termínů pro použití s rozhraním Text API. |
Kategorie škod
Zabezpečení obsahu rozpozná čtyři různé kategorie problematického obsahu.
Kategorie | Popis |
---|---|
Nenávidět | Škoda související s nenávistí a nestranností označuje jakýkoli obsah, který napadá nebo používá pejorativní nebo diskriminující jazyk s odkazem na osobu nebo skupinu identit na základě určitých odlišujících atributů těchto skupin, včetně mimo jiné rasy, etnické příslušnosti, národnosti, genderové identity a výrazu, sexuální orientace, náboženství, statusu imigrace, statusu schopností, osobního vzhledu a velikosti těla. |
Sexuální | Sex popisuje jazyk související s anatomickými orgány a genitáliemi, romantické vztahy, akty vykreslené erotickými nebo náklonnými výrazy, těhotenství, fyzické sexuální činy, včetně těch, které jsou vykreslovány jako napadení nebo vynucené sexuální násilí proti chtě, prostituci, pornografii a zneužívání. |
Násilí | Násilí popisuje jazyk související s fyzickými činy, jejichž cílem je ublížit, zranit, poškodit nebo zabít někoho nebo něco; popisuje zbraně, zbraně a související subjekty, jako jsou výrobci, sdružení, právní předpisy atd. |
Sebepoškozování | Sebepoškozování popisuje jazyk související s fyzickými činnostmi, jejichž cílem je úmyslně ublížit, zranit, poškodit tělo nebo se zabít. |
Klasifikace může být označená více popisky. Když například ukázka textu prochází modelem moderování textu, může být klasifikována jako sexuální obsah i násilí.
Úrovně závažnosti
Každá kategorie škod, na které se služba vztahuje, má také hodnocení úrovně závažnosti. Úroveň závažnosti označuje závažnost následků zobrazení obsahu s příznakem.
Text: Aktuální verze textového modelu podporuje úplné měřítko závažnosti 0–7. Ve výchozím nastavení bude odpověď výstupem 4 hodnoty: 0, 2, 4 a 6. Každá dvě sousední úrovně jsou mapovány na jednu úroveň. Uživatelé můžou v požadavku použít outputType a nastavit ho jako "EightSeverityLevels", aby získali 8 hodnot ve výstupu: 0,1,2,3,4,5,6,7. Podrobnosti najdete v definicích úrovní závažnosti textového obsahu .
- [0,1] –> 0
- [2,3] –> 2
- [4,5] –> 4
- [6,7] –> 6
Obrázek: Aktuální verze image modelu podporuje oříznutou verzi úplné škály závažnosti 0–7. Klasifikátor vrátí pouze závažnosti 0, 2, 4 a 6; každá dvě sousední úrovně jsou mapovány na jednu úroveň. Podrobnosti najdete v definicích úrovní závažnosti obsahu obrázků .
- [0,1] –> 0
- [2,3] –> 2
- [4,5] –> 4
- [6,7] –> 6
Správa seznamu blokovaných textů
Pro správu seznamu blokovaných textů se podporují následující operace:
- Vytvoření nebo úprava seznamu blokovaných
- Vypsat všechny seznamy blokovaných
- Získání seznamu blokovaných podle blocklistName
- Přidání blocklistItems do seznamu blokovaných
- Odebrání blocklistItems ze seznamu blokovaných
- Výpis všech blocklistItems v seznamu blokovaných položek podle blocklistName
- Získání blocklistItem v seznamu blokovaných pomocí blocklistItemId a blocklistName
- Odstranění seznamu blokovaných a všech jeho položek blocklistItems
Můžete nastavit seznamy blokovaných, které chcete použít při analýze textu, a pak můžete získat výsledek shody seznamu bloků z vrácené odpovědi.
Příklady
Následující část obsahuje několik fragmentů kódu, které pokrývají některé z nejběžnějších úloh služby Zabezpečení obsahu, mezi které patří:
Ukázková data pro použitá data najdete tady. Další ukázky najdete v ukázkách.
Analýza textu
Analýza textu bez seznamů blokovaných
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}")
Analýza textu pomocí seznamů blokovaných
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
Analýza obrázku
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}")
Správa seznamu blokovaných textů
Vytvoření nebo aktualizace seznamu blokovaných textů
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
Seznam textových seznamů blokovaných
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
Získání seznamu blokovaných textů
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
Odstranění seznamu blokovaných textů
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
Přidání 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
Vypsat položky blokování
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
Získání 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
Odebrání 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
Poradce při potížích
Obecné
Bezpečnost obsahu Azure AI klientská knihovna vyvolá výjimky definované v Azure Core. Kódy chyb jsou definovány takto:
Kód chyby | Možné důvody | Návrhy |
---|---|---|
InvalidRequestBody | Jedno nebo více polí v textu požadavku neodpovídá definici rozhraní API. | 1. Zkontrolujte verzi rozhraní API, kterou jste zadali ve volání rozhraní API. 2. Zkontrolujte odpovídající definici rozhraní API pro verzi rozhraní API, kterou jste vybrali. |
Neplatný název zdroje | Název prostředku, který jste zadali v adrese URL, nesplňuje požadavky, jako je název seznamu blokovaných, ID termínu seznamu blokovaných atd. | 1. Zkontrolujte verzi rozhraní API, kterou jste zadali ve volání rozhraní API. 2. Podle definice rozhraní API zkontrolujte, jestli daný název obsahuje neplatné znaky. |
ResourceNotFound | Prostředek, který jste zadali v adrese URL, nemusí existovat, například název seznamu blokovaných. | 1. Zkontrolujte verzi rozhraní API, kterou jste zadali ve volání rozhraní API. 2. Pečlivě zkontrolujte existenci prostředku zadaného v adrese URL. |
InternalError | Na straně serveru se aktivovaly některé neočekávané situace. | 1. Možná budete chtít akci opakovat několikrát po malé době a uvidíte, že k problému dochází znovu. 2. Pokud tento problém přetrvává, obraťte se na podporu Azure. |
ServerOvá sběrnice | Serverová strana nemůže požadavek dočasně zpracovat. | 1. Možná budete chtít akci opakovat několikrát po malé době a uvidíte, že k problému dochází znovu. 2. Pokud tento problém přetrvává, obraťte se na podporu Azure. |
TooManyRequests | Aktuální RPS překročila kvótu pro aktuální skladovou položku. | 1. Projděte si tabulku cen a seznamte se s kvótou RPS. 2. Pokud potřebujete další QPS, obraťte se na podporu Azure. |
protokolování
Tato knihovna používá k protokolování standardní knihovnu protokolování .
Základní informace o relacích HTTP (adresy URL, hlavičky atd.) se protokolují na INFO
úrovni.
Podrobné DEBUG
protokolování úrovně, včetně těl požadavků/odpovědí a nezopravovaných hlaviček, je možné povolit u klienta nebo pro jednotlivé operace pomocí argumentu klíčového logging_enable
slova.
Kompletní dokumentaci k protokolování sady SDK s příklady najdete tady.
Volitelná konfigurace
Volitelné argumenty klíčových slov je možné předat na úrovni klienta a pro jednotlivé operace. Referenční dokumentace azure-core popisuje dostupné konfigurace pro opakování, protokolování, přenosové protokoly a další.
Další kroky
Další dokumentace
Podrobnější dokumentaci k Zabezpečení obsahu Azure najdete v Bezpečnost obsahu Azure AI na docs.microsoft.com.
Přispívání
Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete tady: https://cla.microsoft.com
Při odesílání žádosti o přijetí změn robot CLA automaticky určí, jestli je potřeba poskytnout smlouvu CLA, a příslušným způsobem žádost o přijetí změn upraví (např. přidáním jmenovky nebo komentáře). Stačí postupovat podle pokynů robota. Pro všechna úložiště používající naši smlouvu CLA to stačí udělat jenom jednou.
Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování. V případě jakýchkoli dotazů nebo připomínek kontaktujte opencode@microsoft.com.
Azure SDK for Python