Быстрый старт: анализ содержимого изображения

Начните работу с Content Studio, REST API или клиентских пакетов SDK для модерации изображений на базовом уровне. Служба Безопасность содержимого ИИ Azure предоставляет алгоритмы ИИ для пометки нежелательного содержимого. Выполните следующие действия, чтобы попробовать его.

Дополнительные сведения о модерации изображений см. на странице концепции категорий "Вред". Сведения о ограничениях ввода API см. в разделе "Требования к входным данным" в разделе "Обзор".

Внимание

Примеры данных и кода могут содержать оскорбительный контент. Рекомендуется использовать усмотрение пользователя.

Предварительные требования

Настройка

Чтобы воспользоваться страницей Попробуйте Безопасность содержимого, выполните следующие действия:

  1. Перейдите к Azure AI Foundry и перейдите к проекту или концентратору. Затем выберите вкладку "Guardrails + элементы управления" на левой панели навигации и выберите вкладку "Попробовать".
  2. На странице "Попробовать" можно поэкспериментировать с различными функциями Guardrails и возможностями управления, например, текстом и изображениями, используя настраиваемые пороговые значения для фильтрации неуместного или вредного содержимого.

Снимок экрана: страница пробной версии для Guardrails и элементов управления.

Анализ изображений

Страница Модерация изображений позволяет вам быстро опробовать функцию модерации изображений.

  1. Выберите панель умеренного содержимого изображений.
  2. Выберите образ из панелей на странице или отправьте собственное изображение.
  3. Выберите Запустить тест. Служба возвращает все обнаруженные категории с уровнем серьезности для каждой: 0 - Безопасно, 2 - Низкий, 4 - Средний, 6 - Высокий. Он также возвращает двоичный результат "Принято отклонено/" на основе настроенных фильтров. Используйте матрицу на вкладке "Настройка фильтров" справа, чтобы задать допустимые или запрещенные уровни серьезности для каждой категории. Затем вы можете снова запустить текст, чтобы узнать, как работает фильтр.

Просмотр и экспорт кода

Для просмотра и копирования примера кода можно использовать функцию Просмотр кода на страницах Анализ содержимого текста или Анализ содержимого изображения, которая включает конфигурацию для фильтрации по степени важности, черных списков и функций модерации. Затем вы можете развернуть код у себя.

Снимок экрана: кнопка

Предварительные требования

  • Подписка Azure — Создать бесплатно
  • Получив подписку Azure, создайте ресурс безопасности содержимого на портале Azure, чтобы получить ключ и конечную точку. Введите уникальное имя ресурса, выберите подписку и выберите группу ресурсов, поддерживаемый регион (см . доступность региона) и поддерживаемую ценовую категорию. Затем выберите Создать.
    • Развертывание ресурса занимает несколько минут. После завершения выберите перейти к ресурсу. В области слева в разделе "Управление ресурсами" выберите "Ключ подписки" и "Конечная точка". Конечная точка и любой из ключей используются для вызова API.
  • Установлен cURL.

Анализ графического содержимого

В следующем разделе описывается пример запроса модерации изображений с помощью cURL.

Подготовка примера изображения

Выберите образ для анализа и скачайте его на устройство.

См. требования к входным данным по ограничениям изображения. Если формат анимирован, служба извлекает первый кадр для анализа.

Вы можете ввести образ одним из двух методов: локальный файловый поток или URL-адрес хранилища BLOB-объектов.

  • Локальный файловый поток (рекомендуется): кодирование образа в base64. Для кодирования можно использовать веб-сайт, например codebeautify . Затем сохраните закодированную строку во временном расположении.

  • Blob storage URL: отправьте образ в учетную запись Хранилище BLOB-объектов Azure. Следуйте инструкции по быстрому началу работы по хранилищу BLOB-объектов, чтобы узнать, как это сделать. Затем откройте Обозреватель службы хранилища Azure и получите URL-адрес изображения. Сохраните его во временную папку.

    Затем необходимо предоставить ресурсу безопасности содержимого доступ для чтения из ресурса служба хранилища Azure. Включите системно назначаемое управляемое удостоверение для экземпляра Безопасность содержимого ИИ Azure и назначьте этому удостоверению роль Участник данных хранилища BLOB-объектов/Владелец:

    Внимание

    Только роли Участник данных BLOB-объектов хранилища или Владелец данных BLOB-объектов хранилища допустимы для продолжения.

    1. Активируйте управляемую идентификацию для экземпляра Безопасность содержимого ИИ Azure.

      Снимок экрана портала Azure, где включено управляемое удостоверение.

    2. Назначьте роль Storage Blob Data Contributor/Owner управляемому удостоверению. Все роли, выделенные ниже, должны работать.

      Скриншот экрана добавления назначения роли в портале Azure.

      Скриншот назначенных ролей портала Azure.

      Снимок экрана управляемой идентичности: роль.

Анализ графического содержимого

Вставьте приведенную ниже команду в текстовый редактор и внесите следующие изменения.

  1. Замените <endpoint> на URL-адрес конечной точки вашего ресурса.
  2. Замените <your_subscription_key> собственным ключом.
  3. Заполните поле "image" в тексте полем "content" или полем "blobUrl". Пример: {"image": {"content": "<base_64_string>"} или {"image": {"blobUrl": "<your_storage_url>"}.
curl --location --request POST '<endpoint>/contentsafety/image:analyze?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "image": {
    "content": "<base_64_string>"
  },
  "categories": ["Hate", "SelfHarm", "Sexual", "Violence"],
  "outputType": "FourSeverityLevels"
}'

Примечание.

Если вы используете URL-адрес хранилища BLOB-объектов, тело запроса должно выглядеть следующим образом:

{
  "image": {
    "blobUrl": "<your_storage_url>"
  }
}

Следующие поля должны быть включены в URL-адрес:

Имя. Обязательное? Описание Тип
Версия API Обязательное поле Это проверяемая версия API. Текущая версия: api-version=2024-09-01. Пример: <endpoint>/contentsafety/image:analyze?api-version=2024-09-01 текстовая строка

Параметры в тексте запроса определяются в этой таблице:

Имя. Обязательное? Описание Тип
содержание Обязательное поле Содержимое или BLOB URL-адреса элемента изображения. Я могу быть байтами в кодировке base64 или URL-адресом blob. Если оба заданы, запрос отклоняется. Максимальный допустимый размер изображения составляет 7200 x 7200 пикселей, а максимальный размер файла — 4 МБ. Минимальный размер изображения составляет 50 пикселей x 50 пикселей. текстовая строка
Категории Необязательно Предполагается, что это массив имен категорий. См. руководство по категориям вреда для списка доступных имен категорий. Если категории не указаны, используются все четыре категории. Мы используем несколько категорий, чтобы получить оценки в одном запросе. текстовая строка
типВывода Необязательно API модерации изображений поддерживает только "FourSeverityLevels". Выведите уровни серьёзности на четырёх уровнях. Значение может быть 0,2,4,6 текстовая строка

Откройте окно командной строки и выполните команду cURL.

Выходные данные

Результаты модерации изображений отображаются в виде данных JSON в консоли. Например:

{
  "categoriesAnalysis": [
    {
      "category": "Hate",
      "severity": 2
    },
    {
      "category": "SelfHarm",
      "severity": 0
    },
    {
      "category": "Sexual",
      "severity": 0
    },
    {
      "category": "Violence",
      "severity": 0
    }
  ]
}

Поля JSON в выходных данных определяются здесь:

Имя. Описание Тип
АнализКатегорий Каждый выходной класс, прогнозируемый API. Классификация может быть многоярлыковой. Например, когда изображение передается в модель модерации изображений, его можно классифицировать как сексуальное содержимое, так и насилие. Категории вреда текстовая строка
Уровень серьезности Степень серьёзности индикатора в каждой категории вреда. Категории вреда Целое

Справочная документация | Исходный код библиотеки | Пакет (NuGet) | Примеры

Предварительные требования

  • Подписка Azure — Создать бесплатно
  • Visual Studio IDE с включенной функцией разработки настольных приложений .NET. Или если вы не планируете использовать Visual Studio IDE, вам нужна текущая версия .NET Core.
  • .NET Runtime установлен.
  • Получив подписку Azure, создайте ресурс безопасности содержимого на портале Azure, чтобы получить ключ и конечную точку. Введите уникальное имя ресурса, выберите подписку и выберите группу ресурсов, поддерживаемый регион (см . доступность региона) и поддерживаемую ценовую категорию. Затем выберите Создать.
    • Развертывание ресурса занимает несколько минут. После завершения выберите перейти к ресурсу. В области слева в разделе "Управление ресурсами" выберите "Ключ подписки" и "Конечная точка". Конечная точка и любой из ключей используются для вызова API.

Настройка приложения

Создайте приложение C#.

Откройте Visual Studio и в разделе Get started выберите Create новый проект. Задайте для фильтров шаблонов значение C#/All Platform/Console. Выберите Console App (приложение командной строки, которое может работать в .NET на Windows, Linux и macOS) и выберите Next. Измените имя проекта на ContentSafetyQuickstart и нажмите кнопку "Далее". Выберите .NET 6.0 или более поздней версии и выберите Create для создания проекта.

Установка клиентского пакета SDK

После создания нового проекта установите клиентский пакет SDK, щелкнув правой кнопкой мыши решение проекта в Обозреватель решений и выбрав Manage NuGet Packages. В открывщемся диспетчере пакетов выберите Browse и найдите Azure.AI.ContentSafety. Выберите Установить.

Создание переменной среды

В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа и конечной точки, откройте окно консоли и следуйте инструкциям для операционной системы и среды разработки.

  • Чтобы задать CONTENT_SAFETY_KEY переменную среды, замените YOUR_CONTENT_SAFETY_KEY одним из ключей ресурса.
  • Чтобы задать переменную среды, замените CONTENT_SAFETY_ENDPOINT на конечную точку вашего ресурса.

Внимание

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. Если вы используете ключ API, сохраните его безопасно в Azure Key Vault. Дополнительные сведения о безопасном использовании ключей API в приложениях см. в разделе Ключи API с Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые будут считывать переменные среды, включая окно консоли.

Анализ графического содержимого

В каталоге проекта откройте файл Program.cs , созданный ранее. Вставьте приведенный ниже код.

using System;
using Azure.AI.ContentSafety;

namespace Azure.AI.ContentSafety.Dotnet.Sample
{
  class ContentSafetySampleAnalyzeImage
  {
    public static void AnalyzeImage()
    {
      // retrieve the endpoint and key from the environment variables created earlier
      string endpoint = Environment.GetEnvironmentVariable("CONTENT_SAFETY_ENDPOINT");
      string key = Environment.GetEnvironmentVariable("CONTENT_SAFETY_KEY");

      ContentSafetyClient client = new ContentSafetyClient(new Uri(endpoint), new AzureKeyCredential(key));

      // Example: analyze image

      string imagePath = @"sample_data\image.png";
      ContentSafetyImageData image = new ContentSafetyImageData(BinaryData.FromBytes(File.ReadAllBytes(imagePath)));

      var request = new AnalyzeImageOptions(image);

      Response<AnalyzeImageResult> response;
      try
      {
          response = client.AnalyzeImage(request);
      }
      catch (RequestFailedException ex)
      {
          Console.WriteLine("Analyze image failed.\nStatus code: {0}, Error code: {1}, Error message: {2}", ex.Status, ex.ErrorCode, ex.Message);
          throw;
      }

      Console.WriteLine("Hate severity: {0}", response.Value.CategoriesAnalysis.FirstOrDefault(a => a.Category == ImageCategory.Hate)?.Severity ?? 0);
      Console.WriteLine("SelfHarm severity: {0}", response.Value.CategoriesAnalysis.FirstOrDefault(a => a.Category == ImageCategory.SelfHarm)?.Severity ?? 0);
      Console.WriteLine("Sexual severity: {0}", response.Value.CategoriesAnalysis.FirstOrDefault(a => a.Category == ImageCategory.Sexual)?.Severity ?? 0);
      Console.WriteLine("Violence severity: {0}", response.Value.CategoriesAnalysis.FirstOrDefault(a => a.Category == ImageCategory.Violence)?.Severity ?? 0);
    }
    static void Main()
    {
      AnalyzeImage();
    }
  }
}

Создайте папку sample_data в каталоге проекта и добавьте в него файл image.png .

Создайте и запустите приложение, выбрав "Начать отладку " в меню отладки в верхней части окна интегрированной среды разработки (или нажмите клавишу F5).

документация по Reference | исходный код библиотеки | пакет (PyPI) | Примеры |

Предварительные требования

  • Подписка Azure — Создать бесплатно
  • Получив подписку Azure, создайте ресурс безопасности содержимого на портале Azure, чтобы получить ключ и конечную точку. Введите уникальное имя ресурса, выберите подписку и выберите группу ресурсов, поддерживаемый регион (см . доступность региона) и поддерживаемую ценовую категорию. Затем выберите Создать.
    • Развертывание ресурса занимает несколько минут. После завершения выберите перейти к ресурсу. В области слева в разделе "Управление ресурсами" выберите "Ключ подписки" и "Конечная точка". Конечная точка и любой из ключей используются для вызова API.
  • Python 3.8 или более поздней версии
    • Установка Python должна содержать pip. Чтобы проверить, установлен ли pip, выполните команду pip --version в командной строке. Получите pip, установив последнюю версию Python.

Создание переменной среды

В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа и конечной точки, откройте окно консоли и следуйте инструкциям для операционной системы и среды разработки.

  • Чтобы задать CONTENT_SAFETY_KEY переменную среды, замените YOUR_CONTENT_SAFETY_KEY одним из ключей ресурса.
  • Чтобы задать переменную среды, замените CONTENT_SAFETY_ENDPOINT на конечную точку вашего ресурса.

Внимание

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. Если вы используете ключ API, сохраните его безопасно в Azure Key Vault. Дополнительные сведения о безопасном использовании ключей API в приложениях см. в разделе Ключи API с Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые будут считывать переменные среды, включая окно консоли.

Анализ графического содержимого

В следующем разделе описывается пример запроса с помощью пакета SDK для Python.

  1. Откройте командную строку, перейдите в папку проекта и создайте файл с именем quickstart.py.

  2. Выполните следующую команду, чтобы установить клиентская библиотека Безопасность содержимого ИИ Azure:

    python -m pip install azure-ai-contentsafety
    
  3. Скопируйте следующий код в quickstart.py:

    import os
    
    from azure.ai.contentsafety import ContentSafetyClient
    from azure.ai.contentsafety.models import AnalyzeImageOptions, ImageData, ImageCategory
    from azure.core.credentials import AzureKeyCredential
    from azure.core.exceptions import HttpResponseError
    
    def analyze_image():
        endpoint = os.environ.get('CONTENT_SAFETY_ENDPOINT')
        key = os.environ.get('CONTENT_SAFETY_KEY')
        image_path = os.path.join("sample_data", "image.jpg")
    
        # Create an Azure AI 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}")
    
    if __name__ == "__main__":
        analyze_image()
    
  4. Замените "sample_data" и "image.jpg" на путь и имя локального файла, который вы хотите использовать.

  5. Затем запустите приложение с помощью команды python в файле quickstart.

    python quickstart.py
    

Справочная документация | Исходный код библиотеки | Артефакт (Maven) | Примеры

Предварительные требования

  • Подписка Azure — Создать бесплатно
  • Текущая версия пакета средств разработки Java (JDK)
  • Средство сборки Gradle или другой диспетчер зависимостей.
  • Получив подписку Azure, создайте ресурс безопасности содержимого на портале Azure, чтобы получить ключ и конечную точку. Введите уникальное имя ресурса, выберите подписку и выберите группу ресурсов, поддерживаемый регион (см . доступность региона) и поддерживаемую ценовую категорию. Затем выберите Создать.
    • Развертывание ресурса занимает несколько минут. После завершения выберите перейти к ресурсу. В области слева в разделе "Управление ресурсами" выберите "Ключ подписки" и "Конечная точка". Конечная точка и любой из ключей используются для вызова API.

Настройка приложения

Создайте проект Gradle.

В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите в него.

mkdir myapp && cd myapp

Выполните команду gradle init из рабочей папки. Эта команда создает необходимые файлы сборки для Gradle, включая build.gradle.kts, который используется во время выполнения для создания и настройки приложения.

gradle init --type basic

Когда появится запрос на выбор DSL, выберите Kotlin.

В рабочей папке выполните следующую команду, чтобы создать исходную папку проекта.

mkdir -p src/main/java

Перейдите к новой папке и создайте файл с именем ContentSafetyQuickstart.java.

Кроме того, создайте src/resources папку в корне проекта и добавьте в нее образец изображения.

Установка клиентского пакета SDK

В этой краткой инструкции используется менеджер зависимостей Gradle. Клиентскую библиотеку и информацию для других диспетчеров зависимостей можно найти в центральном репозитории Maven.

Найдите файл build.gradle.kts и откройте его в предпочитаемой интегрированной среде разработки или текстовом редакторе. Затем скопируйте и вставьте в файл приведенную ниже конфигурацию сборки. Эта конфигурация определяет проект как приложение Java, точка входа которого является классом ContentSafetyQuickstart. Он импортирует библиотеку Зрение ИИ Azure.

plugins {
    java
    application
}
application { 
    mainClass.set("ContentSafetyQuickstart")
}
repositories {
    mavenCentral()
}
dependencies {
    implementation(group = "com.azure", name = "azure-ai-contentsafety", version = "1.0.0")
}

Создание переменной среды

В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа и конечной точки, откройте окно консоли и следуйте инструкциям для операционной системы и среды разработки.

  • Чтобы задать CONTENT_SAFETY_KEY переменную среды, замените YOUR_CONTENT_SAFETY_KEY одним из ключей ресурса.
  • Чтобы задать переменную среды, замените CONTENT_SAFETY_ENDPOINT на конечную точку вашего ресурса.

Внимание

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. Если вы используете ключ API, сохраните его безопасно в Azure Key Vault. Дополнительные сведения о безопасном использовании ключей API в приложениях см. в разделе Ключи API с Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые будут считывать переменные среды, включая окно консоли.

Анализ графического содержимого

Откройте ContentSafetyQuickstart.java в предпочитаемом редакторе или интегрированной среде разработки и вставьте следующий код. Замените переменную source на путь к вашему образцу изображения.

import com.azure.ai.contentsafety.ContentSafetyClient;
import com.azure.ai.contentsafety.ContentSafetyClientBuilder;
import com.azure.ai.contentsafety.models.AnalyzeImageOptions;
import com.azure.ai.contentsafety.models.AnalyzeImageResult;
import com.azure.ai.contentsafety.models.ContentSafetyImageData;
import com.azure.ai.contentsafety.models.ImageCategoriesAnalysis;
import com.azure.core.credential.KeyCredential;
import com.azure.core.util.BinaryData;
import com.azure.core.util.Configuration;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;


public class ContentSafetyQuickstart {
    public static void main(String[] args) throws IOException {

        // get endpoint and key from environment variables
        String endpoint = System.getenv("CONTENT_SAFETY_ENDPOINT");
        String key = System.getenv("CONTENT_SAFETY_KEY");

        ContentSafetyClient contentSafetyClient = new ContentSafetyClientBuilder()
            .credential(new KeyCredential(key))
            .endpoint(endpoint).buildClient();

        ContentSafetyImageData image = new ContentSafetyImageData();
        String cwd = System.getProperty("user.dir");
        String source = "/src/samples/resources/image.png";

        image.setContent(BinaryData.fromBytes(Files.readAllBytes(Paths.get(cwd, source))));

        AnalyzeImageResult response =
                contentSafetyClient.analyzeImage(new AnalyzeImageOptions(image));

        for (ImageCategoriesAnalysis result : response.getCategoriesAnalysis()) {
            System.out.println(result.getCategory() + " severity: " + result.getSeverity());
        }
    }
}

Вернитесь в корневую папку проекта и выполните сборку приложения:

gradle build

Затем запустите его с помощью команды gradle run:

gradle run

Выходные данные

Hate severity: 0
SelfHarm severity: 0
Sexual severity: 0
Violence severity: 0

Справочная документация | Исходный код библиотеки | Пакет (npm) | Примеры |

Предварительные требования

  • Подписка Azure — Создать бесплатно
  • Текущая версия Node.js
  • Получив подписку Azure, создайте ресурс безопасности содержимого на портале Azure, чтобы получить ключ и конечную точку. Введите уникальное имя ресурса, выберите подписку и выберите группу ресурсов, поддерживаемый регион (см . доступность региона) и поддерживаемую ценовую категорию. Затем выберите Создать.
    • Развертывание ресурса занимает несколько минут. После завершения выберите перейти к ресурсу. В области слева в разделе "Управление ресурсами" выберите "Ключ подписки" и "Конечная точка". Конечная точка и любой из ключей используются для вызова API.

Настройка приложения

Создайте новое приложение Node.js. В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите в него.

mkdir myapp && cd myapp

Выполните команду npm init, чтобы создать приложение узла с помощью файла package.json.

npm init

Кроме того, создайте /resources папку в корне проекта и добавьте в нее образец изображения.

Установка клиентского пакета SDK

Установите пакет npm @azure-rest/ai-content-safety:

npm install @azure-rest/ai-content-safety

Кроме того, установите dotenv модуль для использования переменных среды:

npm install dotenv

Файл package.json вашего приложения будет дополнен зависимостями.

Создание переменной среды

В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа и конечной точки, откройте окно консоли и следуйте инструкциям для операционной системы и среды разработки.

  • Чтобы задать CONTENT_SAFETY_KEY переменную среды, замените YOUR_CONTENT_SAFETY_KEY одним из ключей ресурса.
  • Чтобы задать переменную среды, замените CONTENT_SAFETY_ENDPOINT на конечную точку вашего ресурса.

Внимание

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. Если вы используете ключ API, сохраните его безопасно в Azure Key Vault. Дополнительные сведения о безопасном использовании ключей API в приложениях см. в разделе Ключи API с Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые будут считывать переменные среды, включая окно консоли.

Анализ графического содержимого

Создайте файл в каталоге index.js. Откройте его в предпочитаемом редакторе или интегрированной среде разработки и вставьте следующий код. Замените переменную image_path на путь к вашему образцу изображения.

const ContentSafetyClient = require("@azure-rest/ai-content-safety").default,
  { isUnexpected } = require("@azure-rest/ai-content-safety");
const { AzureKeyCredential } = require("@azure/core-auth");
const fs = require("fs");
const path = require("path");

// Load the .env file if it exists
require("dotenv").config();

async function main() {
    // get endpoint and key from environment variables
    const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"];
    const key = process.env["CONTENT_SAFETY_KEY"];
    
    const credential = new AzureKeyCredential(key);
    const client = ContentSafetyClient(endpoint, credential);
    
    // replace with your own sample image file path 
    const image_path = path.resolve(__dirname, "./resources/image.jpg");
    
    const imageBuffer = fs.readFileSync(image_path);
    const base64Image = imageBuffer.toString("base64");
    const analyzeImageOption = { image: { content: base64Image } };
    const analyzeImageParameters = { body: analyzeImageOption };
    
    const result = await client.path("/image:analyze").post(analyzeImageParameters);
    
    if (isUnexpected(result)) {
        throw result;
    }
    for (let i = 0; i < result.body.categoriesAnalysis.length; i++) {
    const imageCategoriesAnalysisOutput = result.body.categoriesAnalysis[i];
    console.log(
      imageCategoriesAnalysisOutput.category,
      " severity: ",
      imageCategoriesAnalysisOutput.severity
    );
  }
}

main().catch((err) => {
    console.error("The sample encountered an error:", err);
});

Запустите приложение, выполнив команду node для файла quickstart.

node index.js

Выходные данные

Hate severity:  0
SelfHarm severity:  0
Sexual severity:  0
Violence severity:  0

Справочная документация | Исходный код библиотеки | Пакет (npm) | Примеры |

Предварительные требования

  • Подписка Azure — Создать бесплатно
  • Node.js LTS
  • TypeScript
  • Visual Studio Code
  • Получив подписку Azure, создайте ресурс безопасности содержимого на портале Azure, чтобы получить ключ и конечную точку. Введите уникальное имя ресурса, выберите подписку и выберите группу ресурсов, поддерживаемый регион (см . доступность региона) и поддерживаемую ценовую категорию. Затем выберите Создать.
    • Развертывание ресурса занимает несколько минут. После завершения выберите перейти к ресурсу. В области слева в разделе "Управление ресурсами" выберите "Ключ подписки" и "Конечная точка". Конечная точка и любой из ключей используются для вызова API.

Настройка локальной среды разработки

  1. Создайте новый каталог для проекта и перейдите к нему:

    mkdir content-safety-image-analysis
    cd content-safety-image-analysis
    code .
    
  2. Создайте новый пакет для модулей ESM в каталоге проекта:

    npm init -y
    npm pkg set type=module
    
  3. Установите необходимые пакеты:

    npm install @azure-rest/ai-content-safety
    
  4. Установите зависимости для разработки:

    npm install typescript @types/node --save-dev
    
  5. Создайте файл в каталоге tsconfig.json проекта:

    {
      "compilerOptions": {
        "target": "es2022",
        "module": "esnext",
        "moduleResolution": "bundler",
        "rootDir": "./src",
        "outDir": "./dist/",
        "esModuleInterop": true,
        "forceConsistentCasingInFileNames": true,
        "strict": true,
        "skipLibCheck": true,
        "declaration": true,
        "sourceMap": true,
        "resolveJsonModule": true,
        "moduleDetection": "force",
        "allowSyntheticDefaultImports": true,
        "verbatimModuleSyntax": false
      },
      "include": [
        "src/**/*.ts"
      ],
      "exclude": [
        "node_modules/**/*",
        "**/*.spec.ts"
      ]
    }
    
  6. Обновите package.json, чтобы включить скрипт для создания файлов TypeScript.

    "scripts": {
      "build": "tsc",
      "start": "node dist/index.js"
    }
    
  7. Создайте папку resources и добавьте в нее образец.

  8. src Создайте каталог для кода TypeScript.

Создание переменной среды

В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа и конечной точки, откройте окно консоли и следуйте инструкциям для операционной системы и среды разработки.

  • Чтобы задать CONTENT_SAFETY_KEY переменную среды, замените YOUR_CONTENT_SAFETY_KEY одним из ключей ресурса.
  • Чтобы задать переменную среды, замените CONTENT_SAFETY_ENDPOINT на конечную точку вашего ресурса.

Внимание

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. Если вы используете ключ API, сохраните его безопасно в Azure Key Vault. Дополнительные сведения о безопасном использовании ключей API в приложениях см. в разделе Ключи API с Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые будут считывать переменные среды, включая окно консоли.

Анализ графического содержимого

Создайте файл в src каталоге index.ts и вставьте следующий код. Замените строку, используемую для создания переменной imagePath, на путь к вашему образцу изображения.

import ContentSafetyClient, {
    isUnexpected,
    AnalyzeImageParameters,
    AnalyzeImage200Response,
    AnalyzeImageDefaultResponse,
    AnalyzeImageOptions,
    ImageCategoriesAnalysisOutput
} from "@azure-rest/ai-content-safety";
import { AzureKeyCredential } from "@azure/core-auth";
import * as fs from "fs";
import * as path from "path";
import { fileURLToPath } from "url";

// Create __dirname equivalent for ESM modules
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// Get endpoint and key from environment variables
const endpoint = process.env.CONTENT_SAFETY_ENDPOINT;
const key = process.env.CONTENT_SAFETY_KEY;

if (!endpoint || !key) {
    throw new Error("Missing required environment variables CONTENT_SAFETY_ENDPOINT or CONTENT_SAFETY_KEY");
}

try {

    const credential = new AzureKeyCredential(key);
    const client = ContentSafetyClient(endpoint, credential);

    const imagePath = path.join(__dirname, '../resources/image.jpg');

    const imageBuffer = fs.readFileSync(imagePath);
    const base64Image = imageBuffer.toString("base64");
    const analyzeImageOption: AnalyzeImageOptions = { image: { content: base64Image } };
    const analyzeImageParameters: AnalyzeImageParameters = { body: analyzeImageOption };

    const result: AnalyzeImage200Response | AnalyzeImageDefaultResponse = await client.path("/image:analyze").post(analyzeImageParameters);

    if (isUnexpected(result)) {
        throw result;
    }

    const categoriesAnalysis = result.body.categoriesAnalysis as ImageCategoriesAnalysisOutput[];

    for (const analysis of categoriesAnalysis) {
        console.log(`${analysis.category} severity: ${analysis.severity}`);
    }
} catch (error) {
    console.error("Error analyzing image:", error);
}

Сборка и запуск примера

  1. Скомпилируйте код TypeScript:

    npm run build
    
  2. Запустите скомпилированный JavaScript:

    node dist/index.js
    

Выходные данные

Hate severity:  0
SelfHarm severity:  0
Sexual severity:  0
Violence severity:  0

Очистка ресурсов

Если вы хотите очистить и удалить подписку Azure AI services, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

  • Категории вреда
  • Настройте фильтры для каждой категории и проверьте наборы данных с помощью Content Safety Studio, экспортируйте код и разверните его.