Cómo moderar texto con Azure AI Content Safety en Python
La moderación de contenido ha dejado de ser opcional en cualquier aplicación que reciba texto escrito por usuarios. Azure AI Content Safety analiza una frase y devuelve un nivel de severidad para cuatro categorías de riesgo — odio, violencia, contenido sexual y autolesión — sin que tengas que entrenar ningún modelo ni mantener listas de palabras prohibidas. Aprenderás a configurar el servicio y a moderar texto con Python en pocos minutos, con un ejemplo funcional que puedes adaptar a tu producto.
Requisitos previos
- Una suscripción de Azure activa (el servicio tiene un plan gratuito para pruebas).
- Python 3.8 o superior instalado.
- Permisos para crear recursos en el portal de Azure.
- Conocimientos básicos de línea de comandos y de Python.
Paso 1: Crear el recurso Azure AI Content Safety
En el portal de Azure, crea un recurso de tipo Content Safety (también disponible como parte de un recurso Azure AI Services multiservicio). Elige la suscripción, un grupo de recursos, una región cercana a tus usuarios y un nombre. La región importa por dos motivos: reduce la latencia de las llamadas y ayuda a cumplir requisitos de residencia de datos. Una vez creado, abre la sección Keys and Endpoint y copia una de las claves y el endpoint — necesitarás ambos en el código.
Paso 2: Instalar el SDK y guardar las credenciales
Instala la biblioteca oficial con pip. Es buena práctica guardar la clave y el endpoint en variables de entorno, para no dejar secretos escritos en el código ni en repositorios.
pip install azure-ai-contentsafety
# Linux / macOS
export CONTENT_SAFETY_KEY="a-tua-chave"
export CONTENT_SAFETY_ENDPOINT="https://SEU-RECURSO.cognitiveservices.azure.com/"
En Windows usa setx en lugar de export y vuelve a abrir la terminal para que las variables estén disponibles.
Paso 3: Analizar texto en Python
Crea un archivo moderar.py. El código crea un ContentSafetyClient, envía una frase y recibe el análisis de las cuatro categorías de contenido.
import os
from azure.ai.contentsafety import ContentSafetyClient
from azure.ai.contentsafety.models import AnalyzeTextOptions
from azure.core.credentials import AzureKeyCredential
endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]
key = os.environ["CONTENT_SAFETY_KEY"]
client = ContentSafetyClient(endpoint, AzureKeyCredential(key))
texto = "Bom dia! Alguem me pode ajudar com uma duvida?"
resposta = client.analyze_text(AnalyzeTextOptions(text=texto))
for item in resposta.categories_analysis:
print(f"{item.category}: severidade {item.severity}")
Ejecútalo con python moderar.py. Cada línea muestra una categoría — Hate, SelfHarm, Sexual y Violence — y el nivel de severidad correspondiente devuelto por el servicio. Cada categoría se evalúa de forma independiente, por lo que la misma frase puede tener severidad alta en una y 0 en las demás.
Paso 4: Decidir qué bloquear con un umbral
El servicio no decide por ti si el contenido es aceptable: solo devuelve severidades. Es tu aplicación la que define el umbral a partir del cual rechaza el texto. Un umbral de 4 suele ser un buen punto de partida.
LIMIAR = 4
bloquear = any(item.severity >= LIMIAR for item in resposta.categories_analysis)
print("Conteudo bloqueado" if bloquear else "Conteudo aprovado")
Ajusta el valor según el contexto: un foro para niños necesita un umbral más bajo que una plataforma para adultos. Además, puedes aplicar umbrales diferentes por categoría.
Nunca confíes solo en la moderación automática para decisiones de alto riesgo: combínala con revisión humana siempre que la severidad sea limítrofe.
Verificar el resultado
Para confirmar que la integración funciona, prueba con frases claramente seguras y claramente problemáticas. Una frase neutra debería devolver severidad 0 en todas las categorías, mientras que una frase ofensiva debería elevar la severidad en la categoría correspondiente. La escala va de 0 (seguro) a 6 (riesgo alto), con los valores por defecto 0, 2, 4 y 6. Si recibes un error de autenticación, comprueba el endpoint y la clave; si el resultado es siempre 0, asegúrate de que realmente estás enviando el texto de prueba correcto.
Conclusión
Con pocas líneas de Python ya tienes moderación de texto lista para integrar en formularios, chats o comentarios, sin entrenar modelos ni mantener listas de palabras a mano. El siguiente paso natural es analizar también imágenes con el método analyze_image, crear blocklists personalizadas para términos específicos de tu dominio y registrar las decisiones para auditoría. ¿Qué umbral tiene sentido para tu producto — prefieres bloquear de más, o arriesgarte a dejar pasar algo?