Azure AI Content Safety SDK for Python Detect harmful user-generated and AI-generated content in applications. Installation pip install azure-ai-contentsafety Environment Variables CONTENT_SAFETY_ENDPOINT = https:// < resource
.cognitiveservices.azure.com CONTENT_SAFETY_KEY = < your-api-key
Authentication API Key from azure . ai . contentsafety import ContentSafetyClient from azure . core . credentials import AzureKeyCredential import os client = ContentSafetyClient ( endpoint = os . environ [ "CONTENT_SAFETY_ENDPOINT" ] , credential = AzureKeyCredential ( os . environ [ "CONTENT_SAFETY_KEY" ] ) ) Entra ID from azure . ai . contentsafety import ContentSafetyClient from azure . identity import DefaultAzureCredential client = ContentSafetyClient ( endpoint = os . environ [ "CONTENT_SAFETY_ENDPOINT" ] , credential = DefaultAzureCredential ( ) ) Analyze Text from azure . ai . contentsafety import ContentSafetyClient from azure . ai . contentsafety . models import AnalyzeTextOptions , TextCategory from azure . core . credentials import AzureKeyCredential client = ContentSafetyClient ( endpoint , AzureKeyCredential ( key ) ) request = AnalyzeTextOptions ( text = "Your text content to analyze" ) response = client . analyze_text ( request )
Check each category
- for
- category
- in
- [
- TextCategory
- .
- HATE
- ,
- TextCategory
- .
- SELF_HARM
- ,
- TextCategory
- .
- SEXUAL
- ,
- TextCategory
- .
- VIOLENCE
- ]
- :
- result
- =
- next
- (
- (
- r
- for
- r
- in
- response
- .
- categories_analysis
- if
- r
- .
- category
- ==
- category
- )
- ,
- None
- )
- if
- result
- :
- (
- f"
- {
- category
- }
- severity { result . severity } " ) Analyze Image from azure . ai . contentsafety import ContentSafetyClient from azure . ai . contentsafety . models import AnalyzeImageOptions , ImageData from azure . core . credentials import AzureKeyCredential import base64 client = ContentSafetyClient ( endpoint , AzureKeyCredential ( key ) )
From file
- with
- open
- (
- "image.jpg"
- ,
- "rb"
- )
- as
- f
- :
- image_data
- =
- base64
- .
- b64encode
- (
- f
- .
- read
- (
- )
- )
- .
- decode
- (
- "utf-8"
- )
- request
- =
- AnalyzeImageOptions
- (
- image
- =
- ImageData
- (
- content
- =
- image_data
- )
- )
- response
- =
- client
- .
- analyze_image
- (
- request
- )
- for
- result
- in
- response
- .
- categories_analysis
- :
- (
- f"
- {
- result
- .
- category
- }
- severity { result . severity } " ) Image from URL from azure . ai . contentsafety . models import AnalyzeImageOptions , ImageData request = AnalyzeImageOptions ( image = ImageData ( blob_url = "https://example.com/image.jpg" ) ) response = client . analyze_image ( request ) Text Blocklist Management Create Blocklist from azure . ai . contentsafety import BlocklistClient from azure . ai . contentsafety . models import TextBlocklist from azure . core . credentials import AzureKeyCredential blocklist_client = BlocklistClient ( endpoint , AzureKeyCredential ( key ) ) blocklist = TextBlocklist ( blocklist_name = "my-blocklist" , description = "Custom terms to block" ) result = blocklist_client . create_or_update_text_blocklist ( blocklist_name = "my-blocklist" , options = blocklist ) Add Block Items from azure . ai . contentsafety . models import AddOrUpdateTextBlocklistItemsOptions , TextBlocklistItem items = AddOrUpdateTextBlocklistItemsOptions ( blocklist_items = [ TextBlocklistItem ( text = "blocked-term-1" ) , TextBlocklistItem ( text = "blocked-term-2" ) ] ) result = blocklist_client . add_or_update_blocklist_items ( blocklist_name = "my-blocklist" , options = items ) Analyze with Blocklist from azure . ai . contentsafety . models import AnalyzeTextOptions request = AnalyzeTextOptions ( text = "Text containing blocked-term-1" , blocklist_names = [ "my-blocklist" ] , halt_on_blocklist_hit = True ) response = client . analyze_text ( request ) if response . blocklists_match : for match in response . blocklists_match : print ( f"Blocked: { match . blocklist_item_text } " ) Severity Levels Text analysis returns 4 severity levels (0, 2, 4, 6) by default. For 8 levels (0-7): from azure . ai . contentsafety . models import AnalyzeTextOptions , AnalyzeTextOutputType request = AnalyzeTextOptions ( text = "Your text" , output_type = AnalyzeTextOutputType . EIGHT_SEVERITY_LEVELS ) Harm Categories Category Description Hate Attacks based on identity (race, religion, gender, etc.) Sexual Sexual content, relationships, anatomy Violence Physical harm, weapons, injury SelfHarm Self-injury, suicide, eating disorders Severity Scale Level Text Range Image Range Meaning 0 Safe Safe No harmful content 2 Low Low Mild references 4 Medium Medium Moderate content 6 High High Severe content Client Types Client Purpose ContentSafetyClient Analyze text and images BlocklistClient Manage custom blocklists Best Practices Use blocklists for domain-specific terms Set severity thresholds appropriate for your use case Handle multiple categories — content can be harmful in multiple ways Use halt_on_blocklist_hit for immediate rejection Log analysis results for audit and improvement Consider 8-severity mode for finer-grained control Pre-moderate AI outputs before showing to users When to Use This skill is applicable to execute the workflow or actions described in the overview.