Поделиться через


Настройка фильтров содержимого (предварительная версия) для моделей в службах ИИ Azure

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Система фильтрации содержимого, интегрированная в службы искусственного интеллекта Azure, работает вместе с основными моделями. В нем используется ансамбль моделей классификации с несколькими классами для обнаружения четырех категорий вредного содержимого (насилия, ненависти, сексуального и самовредения) на четырех уровнях серьезности соответственно (безопасный, низкий, средний и высокий). Он предлагает необязательные двоичные классификаторы для обнаружения риска, существующего текста и кода в общедоступных репозиториях. Дополнительные сведения о категориях контента, уровнях серьезности и поведении системы фильтрации содержимого в следующей статье

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

Фильтры содержимого можно настроить на уровне ресурса и связать с одним или несколькими развертываниями.

Необходимые компоненты

Для работы с этой статьей необходимо иметь следующее.

Создание настраиваемого фильтра содержимого

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

  1. Перейдите на портал Azure AI Foundry.

  2. Выберите "Безопасность и безопасность".

  3. Выберите фильтры содержимого вкладкии нажмите кнопку "Создать фильтр контента".

  4. В разделе "Основные сведения" укажите имя фильтра содержимого.

  5. В разделе "Подключение" выберите подключение к ресурсу Служб искусственного интеллекта Azure, подключенного к проекту.

  6. В разделе "Входной фильтр" настройте фильтр в зависимости от ваших требований. Эта конфигурация применяется до того, как запрос достигнет самой модели.

  7. В разделе "Выходной фильтр" настройте фильтр в зависимости от ваших требований. Эта конфигурация применяется после выполнения модели и создания содержимого.

  8. Выберите Далее.

  9. При необходимости можно связать данное развертывание с созданным фильтром содержимого. Вы можете изменить развертывания модели, связанные в любое время.

  10. После завершения развертывания новый фильтр содержимого применяется к развертыванию модели.

Учетная запись фильтрации содержимого в коде

После применения фильтрации содержимого к развертыванию модели запросы можно перехватывать службой в зависимости от входных и выходных данных. При активации фильтра содержимого возвращается код ошибки 400 с описанием запуска правила.

Установите пакет azure-ai-inference с помощью диспетчера пакетов, например pip:

pip install azure-ai-inference

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

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

Ознакомьтесь с нашими примерами и ознакомьтесь со справочной документацией по API, чтобы приступить к работе.

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

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError

try:
    response = model.complete(
        messages=[
            SystemMessage(content="You are an AI assistant that helps people find information."),
            UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
        ]
    )

    print(response.choices[0].message.content)

except HttpResponseError as ex:
    if ex.status_code == 400:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "error" in response:
            print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
        else:
            raise ex
    else:
        raise ex

Применение рекомендаций

Мы рекомендуем сообщить о решениях по настройке фильтрации содержимого с помощью итеративной идентификации (например, красного тестирования, стресс-тестирования и анализа) и процесса измерения, чтобы устранить потенциальные последствия, которые относятся к определенной модели, приложению и сценарию развертывания. После реализации таких мер, как фильтрация содержимого, повторите измерение для проверки эффективности.

Рекомендации и рекомендации по ответственному ИИ для Azure OpenAI, основанные на стандарте Ответственного ИИ Майкрософт, можно найти в обзоре ответственного ИИ для Azure OpenAI.

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Система фильтрации содержимого, интегрированная в службы искусственного интеллекта Azure, работает вместе с основными моделями. В нем используется ансамбль моделей классификации с несколькими классами для обнаружения четырех категорий вредного содержимого (насилия, ненависти, сексуального и самовредения) на четырех уровнях серьезности соответственно (безопасный, низкий, средний и высокий). Он предлагает необязательные двоичные классификаторы для обнаружения риска, существующего текста и кода в общедоступных репозиториях. Дополнительные сведения о категориях контента, уровнях серьезности и поведении системы фильтрации содержимого в следующей статье

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

Фильтры содержимого можно настроить на уровне ресурса и связать с одним или несколькими развертываниями.

Необходимые компоненты

Для работы с этой статьей необходимо иметь следующее.

Добавление развертывания модели с настраиваемым фильтрацией содержимого

Рекомендуется создавать фильтры содержимого с помощью портала Azure AI Foundry или кода с помощью Bicep. Создание пользовательских фильтров содержимого или применение их к развертываниям не поддерживается с помощью Azure CLI.

Учетная запись фильтрации содержимого в коде

После применения фильтрации содержимого к развертыванию модели запросы можно перехватывать службой в зависимости от входных и выходных данных. При активации фильтра содержимого возвращается код ошибки 400 с описанием запуска правила.

Установите пакет azure-ai-inference с помощью диспетчера пакетов, например pip:

pip install azure-ai-inference

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

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

Ознакомьтесь с нашими примерами и ознакомьтесь со справочной документацией по API, чтобы приступить к работе.

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

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError

try:
    response = model.complete(
        messages=[
            SystemMessage(content="You are an AI assistant that helps people find information."),
            UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
        ]
    )

    print(response.choices[0].message.content)

except HttpResponseError as ex:
    if ex.status_code == 400:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "error" in response:
            print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
        else:
            raise ex
    else:
        raise ex

Применение рекомендаций

Мы рекомендуем сообщить о решениях по настройке фильтрации содержимого с помощью итеративной идентификации (например, красного тестирования, стресс-тестирования и анализа) и процесса измерения, чтобы устранить потенциальные последствия, которые относятся к определенной модели, приложению и сценарию развертывания. После реализации таких мер, как фильтрация содержимого, повторите измерение для проверки эффективности.

Рекомендации и рекомендации по ответственному ИИ для Azure OpenAI, основанные на стандарте Ответственного ИИ Майкрософт, можно найти в обзоре ответственного ИИ для Azure OpenAI.

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Система фильтрации содержимого, интегрированная в службы искусственного интеллекта Azure, работает вместе с основными моделями. В нем используется ансамбль моделей классификации с несколькими классами для обнаружения четырех категорий вредного содержимого (насилия, ненависти, сексуального и самовредения) на четырех уровнях серьезности соответственно (безопасный, низкий, средний и высокий). Он предлагает необязательные двоичные классификаторы для обнаружения риска, существующего текста и кода в общедоступных репозиториях. Дополнительные сведения о категориях контента, уровнях серьезности и поведении системы фильтрации содержимого в следующей статье

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

Фильтры содержимого можно настроить на уровне ресурса и связать с одним или несколькими развертываниями.

Необходимые компоненты

Для работы с этой статьей необходимо иметь следующее.

  • Установите интерфейс командной строки Azure.

  • Определите следующие сведения:

    • Идентификатор вашей подписки Azure.

    • Имя ресурса Служб искусственного интеллекта Azure.

    • Группа ресурсов, в которой развернут ресурс Служб искусственного интеллекта Azure.

    • Имя модели, поставщик, версия и номер SKU, которые вы хотите развернуть. Вы можете использовать портал Azure AI Foundry или Azure CLI для идентификации. В этом примере мы развернем следующую модель:

      • Имя модели:: Phi-3.5-vision-instruct
      • Поставщик: Microsoft
      • Версия:2
      • Тип развертывания: глобальный стандарт

Добавление развертывания модели с настраиваемым фильтрацией содержимого

  1. Используйте шаблон ai-services-content-filter-template.bicep для описания политики фильтрации содержимого:

    ai-services-content-filter-template.bicep

    @description('Name of the Azure AI Services account where the policy will be created')
    param accountName string
    
    @description('Name of the policy to be created')
    param policyName string
    
    @allowed(['Asynchronous_filter', 'Blocking', 'Default', 'Deferred'])
    param mode string = 'Default'
    
    @description('Base policy to be used for the new policy')
    param basePolicyName string = 'Microsoft.DefaultV2'
    
    param contentFilters array = [
      {
          name: 'Violence'
          severityThreshold: 'Medium'
          blocking: true
          enabled: true
          source: 'Prompt'
      }
      {
          name: 'Hate'
          severityThreshold: 'Medium'
          blocking: true
          enabled: true
          source: 'Prompt'
      }
      {
          name: 'Sexual'
          severityThreshold: 'Medium'
          blocking: true
          enabled: true
          source: 'Prompt'
      }
      {
          name: 'Selfharm'
          severityThreshold: 'Medium'
          blocking: true
          enabled: true
          source: 'Prompt'
      }
      {
          name: 'Jailbreak'
          blocking: true
          enabled: true
          source: 'Prompt'
      }
      {
          name: 'Indirect Attack'
          blocking: true
          enabled: true
          source: 'Prompt'
      }
      {
          name: 'Profanity'
          blocking: true
          enabled: true
          source: 'Prompt'
      }
      {
          name: 'Violence'
          severityThreshold: 'Medium'
          blocking: true
          enabled: true
          source: 'Completion'
      }
      {
          name: 'Hate'
          severityThreshold: 'Medium'
          blocking: true
          enabled: true
          source: 'Completion'
      }
      {
          name: 'Sexual'
          severityThreshold: 'Medium'
          blocking: true
          enabled: true
          source: 'Completion'
      }
      {
          name: 'Selfharm'
          severityThreshold: 'Medium'
          blocking: true
          enabled: true
          source: 'Completion'
      }
      {
          name: 'Protected Material Text'
          blocking: true
          enabled: true
          source: 'Completion'
      }
      {
          name: 'Protected Material Code'
          blocking: false
          enabled: true
          source: 'Completion'
      }
      {
          name: 'Profanity'
          blocking: true
          enabled: true
          source: 'Completion'
      }
    ]
    
    resource raiPolicy 'Microsoft.CognitiveServices/accounts/raiPolicies@2024-06-01-preview' = {
        name: '${accountName}/${policyName}'
        properties: {
            mode: mode
            basePolicyName: basePolicyName
            contentFilters: contentFilters
        }
    }
    
  2. Используйте шаблон ai-services-deployment-template.bicep для описания развертываний моделей:

    ai-services-deployment-template.bicep

    @description('Name of the Azure AI services account')
    param accountName string
    
    @description('Name of the model to deploy')
    param modelName string
    
    @description('Version of the model to deploy')
    param modelVersion string
    
    @allowed([
      'AI21 Labs'
      'Cohere'
      'Core42'
      'DeepSeek'
      'Meta'
      'Microsoft'
      'Mistral AI'
      'OpenAI'
    ])
    @description('Model provider')
    param modelPublisherFormat string
    
    @allowed([
        'GlobalStandard'
        'Standard'
        'GlobalProvisioned'
        'Provisioned'
    ])
    @description('Model deployment SKU name')
    param skuName string = 'GlobalStandard'
    
    @description('Content filter policy name')
    param contentFilterPolicyName string = 'Microsoft.DefaultV2'
    
    @description('Model deployment capacity')
    param capacity int = 1
    
    resource modelDeployment 'Microsoft.CognitiveServices/accounts/deployments@2024-04-01-preview' = {
      name: '${accountName}/${modelName}'
      sku: {
        name: skuName
        capacity: capacity
      }
      properties: {
        model: {
          format: modelPublisherFormat
          name: modelName
          version: modelVersion
        }
        raiPolicyName: contentFilterPolicyName == null ? 'Microsoft.Nill' : contentFilterPolicyName
      }
    }
    
  3. Создайте основное определение развертывания:

    main.bicep

    param accountName string
    param modelName string
    param modelVersion string
    param modelPublisherFormat string
    param contentFilterPolicyName string
    
    module raiPolicy 'ai-services-content-filter-template.bicep' = {
      name: 'raiPolicy'
      scope: resourceGroup(resourceGroupName)
      params: {
        accountName: accountName
        policyName: contentFilterPolicyName
      }
    }
    
    module modelDeployment 'ai-services-deployment-template.bicep' = {
        name: 'modelDeployment'
        scope: resourceGroup(resourceGroupName)
        params: {
            accountName: accountName
            modelName: modelName
            modelVersion: modelVersion
            modelPublisherFormat: modelPublisherFormat
            contentFilterPolicyName: contentFilterPolicyName
        }
        dependsOn: [
            raiPolicy
        ]
    }
    
  4. Запустите развертывание:

    RESOURCE_GROUP="<resource-group-name>"
    ACCOUNT_NAME="<azure-ai-model-inference-name>" 
    MODEL_NAME="Phi-3.5-vision-instruct"
    PROVIDER="Microsoft"
    VERSION=2
    RAI_POLICY_NAME="custom-policy"
    
    az deployment group create \
        --resource-group $RESOURCE_GROUP \
        --template-file main.bicep \
        --parameters accountName=$ACCOUNT_NAME raiPolicyName=$RAI_POLICY_NAME modelName=$MODEL_NAME modelVersion=$VERSION modelPublisherFormat=$PROVIDER
    

Учетная запись фильтрации содержимого в коде

После применения фильтрации содержимого к развертыванию модели запросы можно перехватывать службой в зависимости от входных и выходных данных. При активации фильтра содержимого возвращается код ошибки 400 с описанием запуска правила.

Установите пакет azure-ai-inference с помощью диспетчера пакетов, например pip:

pip install azure-ai-inference

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

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

Ознакомьтесь с нашими примерами и ознакомьтесь со справочной документацией по API, чтобы приступить к работе.

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

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError

try:
    response = model.complete(
        messages=[
            SystemMessage(content="You are an AI assistant that helps people find information."),
            UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
        ]
    )

    print(response.choices[0].message.content)

except HttpResponseError as ex:
    if ex.status_code == 400:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "error" in response:
            print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
        else:
            raise ex
    else:
        raise ex

Применение рекомендаций

Мы рекомендуем сообщить о решениях по настройке фильтрации содержимого с помощью итеративной идентификации (например, красного тестирования, стресс-тестирования и анализа) и процесса измерения, чтобы устранить потенциальные последствия, которые относятся к определенной модели, приложению и сценарию развертывания. После реализации таких мер, как фильтрация содержимого, повторите измерение для проверки эффективности.

Рекомендации и рекомендации по ответственному ИИ для Azure OpenAI, основанные на стандарте Ответственного ИИ Майкрософт, можно найти в обзоре ответственного ИИ для Azure OpenAI.

Следующие шаги