azure-ai-contentsafety-py
azure-ai-contentsafety-py — это скилл по Python SDK Azure AI Content Safety для обнаружения потенциально вредного пользовательского и сгенерированного моделью контента. В официальной инструкции указаны сценарии анализа текста и изображений с классификацией по нескольким уровням серьёзности. Скилл срабатывает по задачам, связанным с пакетом azure-ai-contentsafety, ContentSafetyClient, модерацией, harmful content, анализом текста и анализом изображения. Установка пакета выполняется через pip, а для работы клиента нужен endpoint ресурса Content Safety. Основной рекомендуемый путь аутентификации — DefaultAzureCredential. Инструкция объясняет его как единый вариант для локальной разработки через Azure CLI, VS Code или Developer CLI и для запуска в Azure через managed identity или workload identity. В production предлагается ограничивать цепочку переменной AZURE_TOKEN_CREDENTIALS со значением prod либо конкретным допустимым credential. API-ключ оставлен как legacy-вариант для уже существующих keyed deployments, которые ещё не переведены на Entra ID; новый код не должен выбирать его вместо современной схемы без причины. Клиент получает endpoint из конфигурации окружения, а credential передаётся явно. Каждый клиент и асинхронный credential следует оборачивать в context manager. Для синхронного пути используется with ContentSafetyClient, для асинхронного — async with клиента и async credential из azure.identity.aio. Это нужно для детерминированного освобождения HTTP-транспортов, сокетов и token cache. Скилл также просит выбрать синхронный или асинхронный режим для конкретного модуля и не смешивать sync-клиенты azure.ai.contentsafety с aio-клиентами в одном call path. Текст проверяется через AnalyzeTextOptions и analyze_text. Ответ содержит анализ категорий, а пример скилла рассматривает Hate, SelfHarm, Sexual и Violence и читает severity для каждой присутствующей категории. Изображение проверяется через AnalyzeImageOptions и ImageData: данные можно передать как base64-содержимое файла или как blob_url. Для обработки файла пример сначала читает байты и кодирует их в base64. Категории описаны отдельно: Hate относится к атакам по идентичности, Sexual — к сексуальному содержимому, отношениям и анатомии, Violence — к физическому вреду, оружию и травмам, SelfHarm — к самоповреждению, суициду и расстройствам пищевого поведения. Для текстовой модерации доступны пользовательские blocklist. BlocklistClient создаёт или обновляет список, в него добавляются TextBlocklistItem, а при анализе можно передать blocklist_names. Параметр halt_on_blocklist_hit позволяет остановить обработку при совпадении. Ответ может содержать blocklists_match, где доступны совпавшие элементы. Это полезно для доменных терминов, которые не покрываются одной общей категорией вредного контента. По умолчанию SDK возвращает четыре уровня severity: 0, 2, 4 и 6. При необходимости можно выбрать режим с восемью уровнями 0–7 через AnalyzeTextOutputType.EIGHT_SEVERITY_LEVELS. В таблице скилла уровни 0, 2, 4 и 6 обозначены соответственно как Safe, Low, Medium и High; одинаковая шкала показана для текста и изображений. Порог реакции нужно выбирать под конкретный продукт, а не считать любой ненулевой результат одинаковым. В скилле разделены два типа клиентов: ContentSafetyClient анализирует текст и изображения, BlocklistClient управляет пользовательскими списками. В рекомендациях также указаны обработка нескольких категорий одновременно, настройка severity thresholds, журналирование результатов для аудита и улучшения, выбор восьмиуровневого режима при необходимости большей детализации и предварительная модерация AI-выходов до показа пользователю. Эти рекомендации не заменяют проектную политику блокировки: приложение должно самостоятельно определить, какой порог ведёт к отклонению, проверке человеком или пропуску контента.
Для чего подходит
- Модерация текста и изображений
- Классификация harmful content по severity
- Интеграция Content Safety SDK в Python
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-python/skills/azure-ai-contentsafety-py