Настройка фильтров содержимого (предварительная версия) для моделей в службах ИИ Azure
Внимание
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Система фильтрации содержимого, интегрированная в службы искусственного интеллекта Azure, работает вместе с основными моделями. В нем используется ансамбль моделей классификации с несколькими классами для обнаружения четырех категорий вредного содержимого (насилия, ненависти, сексуального и самовредения) на четырех уровнях серьезности соответственно (безопасный, низкий, средний и высокий). Он предлагает необязательные двоичные классификаторы для обнаружения риска, существующего текста и кода в общедоступных репозиториях. Дополнительные сведения о категориях контента, уровнях серьезности и поведении системы фильтрации содержимого в следующей статье
Конфигурация фильтрации содержимого по умолчанию используется для фильтрации по порогу средней серьезности для всех четырех категорий вреда содержимого для запросов и завершения. Поэтому содержимое, обнаруженное на уровне серьезности среднего или высокого уровня, фильтруется, а содержимое, обнаруженное на низком или безопасном уровне серьезности, не фильтруется.
Фильтры содержимого можно настроить на уровне ресурса и связать с одним или несколькими развертываниями.
Необходимые компоненты
Для работы с этой статьей необходимо иметь следующее.
Подписка Azure. Если вы используете модели GitHub, вы можете обновить интерфейс и создать подписку Azure в процессе. Ознакомьтесь с обновлением моделей GitHub до модели ИИ Azure, если это ваше дело.
Ресурс служб ИИ Azure. Дополнительные сведения см. в статье "Создание ресурса Служб искусственного интеллекта Azure".
- Проект ИИ, подключенный к ресурсу Служб искусственного интеллекта Azure. Выполните действия, описанные в статье "Настройка службы вывода модели ИИ Azure" в моем проекте в Azure AI Foundry.
Создание настраиваемого фильтра содержимого
Выполните следующие действия, чтобы создать пользовательский фильтр содержимого:
Перейдите на портал Azure AI Foundry.
Выберите "Безопасность и безопасность".
Выберите фильтры содержимого вкладкии нажмите кнопку "Создать фильтр контента".
В разделе "Основные сведения" укажите имя фильтра содержимого.
В разделе "Подключение" выберите подключение к ресурсу Служб искусственного интеллекта Azure, подключенного к проекту.
В разделе "Входной фильтр" настройте фильтр в зависимости от ваших требований. Эта конфигурация применяется до того, как запрос достигнет самой модели.
В разделе "Выходной фильтр" настройте фильтр в зависимости от ваших требований. Эта конфигурация применяется после выполнения модели и создания содержимого.
Выберите Далее.
При необходимости можно связать данное развертывание с созданным фильтром содержимого. Вы можете изменить развертывания модели, связанные в любое время.
После завершения развертывания новый фильтр содержимого применяется к развертыванию модели.
Учетная запись фильтрации содержимого в коде
После применения фильтрации содержимого к развертыванию модели запросы можно перехватывать службой в зависимости от входных и выходных данных. При активации фильтра содержимого возвращается код ошибки 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. Если вы используете модели GitHub, вы можете обновить интерфейс и создать подписку Azure в процессе. Ознакомьтесь с обновлением моделей GitHub до модели ИИ Azure, если это ваше дело.
Ресурс служб ИИ 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. Если вы используете модели GitHub, вы можете обновить интерфейс и создать подписку Azure в процессе. Ознакомьтесь с обновлением моделей GitHub до модели ИИ Azure, если это ваше дело.
Ресурс служб ИИ Azure. Дополнительные сведения см. в статье "Создание ресурса Служб искусственного интеллекта Azure".
Установите интерфейс командной строки Azure.
Определите следующие сведения:
Идентификатор вашей подписки Azure.
Имя ресурса Служб искусственного интеллекта Azure.
Группа ресурсов, в которой развернут ресурс Служб искусственного интеллекта Azure.
Имя модели, поставщик, версия и номер SKU, которые вы хотите развернуть. Вы можете использовать портал Azure AI Foundry или Azure CLI для идентификации. В этом примере мы развернем следующую модель:
-
Имя модели::
Phi-3.5-vision-instruct
-
Поставщик:
Microsoft
-
Версия:
2
- Тип развертывания: глобальный стандарт
-
Имя модели::
Добавление развертывания модели с настраиваемым фильтрацией содержимого
Используйте шаблон
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 } }
Используйте шаблон
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 } }
Создайте основное определение развертывания:
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 ] }
Запустите развертывание:
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.
Следующие шаги
- Дополнительные сведения о фильтрации содержимого категорий и уровней серьезности см. в службе Azure OpenAI.
- Дополнительные сведения о красной команде см. в статье "Общие сведения о красной команде больших языковых моделей ( LLMs).