Использование списка блокировок

Внимание

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

Классификаторы ИИ по умолчанию достаточно для большинства потребностей режим палатки. Однако может потребоваться экран для элементов, относящихся к вашему варианту использования. Блок-списки позволяют добавлять пользовательские термины в классификаторы ИИ. Вы можете использовать блок-списки для отображения определенных терминов или фраз, которые вы хотите пометить в содержимом.

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

  • подписка Azure — создайте бесплатную учетную запись.
  • После получения подписки Azure создайте ресурс безопасности содержимого в портал Azure, чтобы получить ключ и конечную точку. Введите уникальное имя ресурса, выберите подписку и выберите группу ресурсов, поддерживаемый регион (см . доступность региона) и поддерживаемую ценовую категорию. Затем выберите Создать.
    • Развертывание ресурса занимает несколько минут. После завершения выберите ресурс. В области слева в разделе "Управление ресурсами" выберите "Ключ подписки" и "Конечная точка". Конечная точка и любой из ключей используются для вызова API.
  • Одна из следующих установленных:
    • cURL для вызовов REST API.
    • Установлен Python 3.x
      • Установка Python должна включать pip. Чтобы проверить, установлен ли pip, выполните команду pip --version в командной строке. Чтобы использовать pip, установите последнюю версию Python.
      • Если вы используете Python, вам потребуется установить клиентскую библиотеку безопасности содержимого Azure для Python. Выполните команду pip install azure-ai-contentsafety в каталоге проекта.
    • Установленная среда выполнения .NET.
      • Установленный пакет SDK для .NET Core .
      • Если вы используете .NET, необходимо установить клиентскую библиотеку безопасности содержимого Azure для .NET. Выполните команду dotnet add package Azure.AI.ContentSafety --prerelease в каталоге проекта.

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

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

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

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

Внимание

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

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

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

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

Анализ текста с помощью списка блокировок

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

Создание или изменение списка блокировок

Скопируйте приведенную ниже команду cURL в текстовый редактор и внесите следующие изменения:

  1. Замените <endpoint> URL-адрес конечной точки.
  2. Замените <enter_your_key_here> собственным ключом.
  3. Замените <your_list_name> (в URL-адресе) настраиваемым именем для списка. Кроме того, замените последний термин URL-адреса REST тем же именем. Допустимые символы: 0-9, A-Z, a-z, - . _ ~.
  4. При необходимости замените значение "description" поля пользовательским описанием.
curl --location --request PATCH '<endpoint>/contentsafety/text/blocklists/<your_list_name>?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "description": "This is a violence list"
}'

Код ответа должен быть 201(создан новый список) или 200(обновлен существующий список).

Добавление blocklistItems в список

Примечание.

Существует максимальное ограничение в 10 000 терминов в общей сложности во всех списках. Вы можете добавить не более 100 элементов blacklistItem в одном запросе.

Скопируйте приведенную ниже команду cURL в текстовый редактор и внесите следующие изменения:

  1. Замените <endpoint> URL-адрес конечной точки.
  2. Замените <enter_your_key_here> собственным ключом.
  3. Замените <your_list_name> (в URL-адресе) именем, которое вы использовали на шаге создания списка.
  4. При необходимости замените значение "description" поля пользовательским описанием.
  5. Замените значение "text" поля элементом, который вы хотите добавить в список блокировок. Максимальная длина blocklistItem составляет 128 символов.
curl --location --request POST '<endpoint>/contentsafety/text/blocklists/<your_list_name>:addOrUpdateBlocklistItems?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \
--data-raw '"blocklistItems": [{
    "description": "string",
    "text": "bleed"
}]'

Совет

Можно добавить несколько blocklistItems в одном вызове API. Сделайте текст запроса массивом данных JSON групп данных:

{
   "blocklistItems": [
       {
           "description": "string",
           "text": "bleed"
       },
       {
           "description": "string",
           "text": "blood"
       }
   ]
}

Код ответа должен быть 200.

{
"blocklistItems:"[
  {
  "blocklistItemId": "string",
  "description": "string",
  "text": "bleed"
  
   }
 ]
}

Примечание.

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

Анализ текста с помощью списка блокировок

Скопируйте приведенную ниже команду cURL в текстовый редактор и внесите следующие изменения:

  1. Замените <endpoint> URL-адрес конечной точки.
  2. Замените <enter_your_key_here> собственным ключом.
  3. Замените <your_list_name> имя, которое вы использовали в шаге создания списка. Поле "blocklistNames" может содержать массив нескольких идентификаторов списка.
  4. При необходимости измените значение "breakByBlocklists". true указывает, что после сопоставления блок-списка анализ возвращается немедленно без выходных данных модели. false Приведет к тому, что модель продолжит выполнять анализ в категориях по умолчанию.
  5. При необходимости измените значение "text" поля на любой текст, который требуется проанализировать.
curl --location --request POST '<endpoint>/contentsafety/text:analyze?api-version=2024-09-01&' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "text": "I want to beat you till you bleed",
  "categories": [
    "Hate",
    "Sexual",
    "SelfHarm",
    "Violence"
  ],
  "blocklistNames":["<your_list_name>"],
  "haltOnBlocklistHit": false,
  "outputType": "FourSeverityLevels"
}'

Ответ JSON будет содержать любое совпадение со списком "blocklistMatchResults" блокировок. Он сообщает расположение в текстовой строке, в которой найдено совпадение.

{
  "blocklistsMatch": [
    {
      "blocklistName": "string",
      "blocklistItemId": "string",
      "blocklistItemText": "bleed"
    }
  ],
  "categoriesAnalysis": [
    {
      "category": "Hate",
      "severity": 0
    }
  ]
}

Другие операции с блок-списком

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

Список всех blocklistItems в списке

Скопируйте приведенную ниже команду cURL в текстовый редактор и внесите следующие изменения:

  1. Замените <endpoint> URL-адрес конечной точки.
  2. Замените <enter_your_key_here> собственным ключом.
  3. Замените <your_list_name> (в URL-адресе запроса) именем, используемым на шаге создания списка.
curl --location --request GET '<endpoint>/contentsafety/text/blocklists/<your_list_name>/blocklistItems?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json'

Код состояния должен выглядеть 200 следующим образом:

{
 "values": [
  {
   "blocklistItemId": "string",
   "description": "string",
   "text": "bleed",
  }
 ]
}

Список всех списков блокировок

Скопируйте приведенную ниже команду cURL в текстовый редактор и внесите следующие изменения:

  1. Замените <endpoint> URL-адрес конечной точки.
  2. Замените <enter_your_key_here> собственным ключом.
curl --location --request GET '<endpoint>/contentsafety/text/blocklists?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json'

Код состояния должен быть 200. Ответ JSON выглядит следующим образом:

"value": [
  {
    "blocklistName": "string",
    "description": "string"
  }
]

Получение списка блоков по blocklistName

Скопируйте приведенную ниже команду cURL в текстовый редактор и внесите следующие изменения:

  1. Замените <endpoint> URL-адрес конечной точки.
  2. Замените <enter_your_key_here> собственным ключом.
  3. Замените <your_list_name> (в URL-адресе запроса) именем, используемым на шаге создания списка.
cURL --location '<endpoint>contentsafety/text/blocklists/<your_list_name>?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--data ''

Код состояния должен быть 200. Ответ JSON выглядит следующим образом:

{
  "blocklistName": "string",
  "description": "string"
}

Получение blocklistItem по blocklistName и blocklistItemId

Скопируйте приведенную ниже команду cURL в текстовый редактор и внесите следующие изменения:

  1. Замените <endpoint> URL-адрес конечной точки.
  2. Замените <enter_your_key_here> собственным ключом.
  3. Замените <your_list_name> (в URL-адресе запроса) именем, используемым на шаге создания списка.
  4. Замените <your_item_id> значением идентификатора для blocklistItem. Это значение "blocklistItemId" поля из параметра Add blocklistItem или Get all blocklistItems API.
cURL --location '<endpoint>contentsafety/text/blocklists/<your_list_name>/blocklistItems/<your_item_id>?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--data ''

Код состояния должен быть 200. Ответ JSON выглядит следующим образом:

{
  "blocklistItemId": "string",
  "description": "string",
  "text": "string"
}
  1. Замените <your_list_name> имя, которое вы использовали в шаге создания списка.
  2. Замените <your_block_item_id> идентификатором элемента, который вы хотите получить.
  3. Выполните скрипт.

Удалите blocklistItems из списка блоков.

Примечание.

После удаления элемента произойдет задержка, прежде чем она вступает в силу при анализе текста, обычно не более пяти минут.

Скопируйте приведенную ниже команду cURL в текстовый редактор и внесите следующие изменения:

  1. Замените <endpoint> URL-адрес конечной точки.
  2. Замените <enter_your_key_here> собственным ключом.
  3. Замените <your_list_name> (в URL-адресе запроса) именем, используемым на шаге создания списка.
  4. Замените <item_id> значением идентификатора для blocklistItem. Это значение "blocklistItemId" поля из параметра Add blocklistItem или Get all blocklistItems API.
curl --location --request POST '<endpoint>/contentsafety/text/blocklists/<your_list_name>:removeBlocklistItems?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json'
--data-raw '"blocklistItemIds":[
    "<item_id>"
]'

Совет

Можно удалить несколько blocklistItems в одном вызове API. Сделайте текст запроса массивом значений blocklistItemId .

Код ответа должен быть 204.

Удаление списка и всех его содержимого

Примечание.

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

Скопируйте приведенную ниже команду cURL в текстовый редактор и внесите следующие изменения:

  1. Замените <endpoint> URL-адрес конечной точки.
  2. Замените <enter_your_key_here> собственным ключом.
  3. Замените <your_list_name> (в URL-адресе запроса) именем, используемым на шаге создания списка.
curl --location --request DELETE '<endpoint>/contentsafety/text/blocklists/<your_list_name>?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \

Код ответа должен быть 204.

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

Дополнительные сведения об API, используемых в этом руководстве, см. в справочной документации по API.