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


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

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

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

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

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

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

Получение маркера

Сначала необходимо получить маркер для доступа к API для создания, редактирования и удаления списков блокировок. Этот маркер можно получить с помощью следующей команды Azure CLI:

az account get-access-token 

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

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

  1. Замените {subscriptionId} идентификатором подписки.
  2. Замените {resourceGroupName} именем группы ресурсов.
  3. Замените {accountName} именем ресурса.
  4. Замените {raiBlocklistName} (в URL-адресе) настраиваемым именем списка. Допустимые символы: 0-9, A-Z, a-z, - . _ ~.
  5. Замените {token} маркером, полученным на шаге "Получить маркер" выше.
  6. При необходимости замените значение поля description настраиваемым описанием.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-03-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{ 
    "properties": { 
        "description": "This is a prompt blocklist"  
    } 
}' 

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

Применение списка блокировок к фильтру содержимого

Если вы еще не создали фильтр содержимого, его можно сделать на вкладке "Фильтры содержимого" на левой стороне. Чтобы использовать список блокировок, убедитесь, что этот фильтр содержимого применяется к развертыванию Azure OpenAI. Это можно сделать на вкладке "Развертывания" в левой части.

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

  1. Замените {subscriptionId} вашим вложенным идентификатором.
  2. Замените {resourceGroupName} именем группы ресурсов.
  3. Замените {accountName} именем ресурса.
  4. Замените {raiPolicyName} именем фильтра содержимого
  5. Замените {token} маркером, полученным на шаге "Получить маркер" выше.
  6. Замените "raiBlocklistName" в тексте настраиваемым именем списка. Допустимые символы: 0-9, A-Z, a-z, - . _ ~.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiPolicies/{raiPolicyName}?api-version=2024-03-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{ 
    "properties": { 
        "basePolicyName": "Microsoft.Default", 
        "completionBlocklists": [{ 
            "blocklistName": "raiBlocklistName", 
            "blocking": true 
        }], 
        "contentFilters": [ ] 
    } 
}' 

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

Примечание.

В одном списке допускается максимальное ограничение в 10 000 терминов.

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

  1. Замените {subscriptionId} вашим вложенным идентификатором.
  2. Замените {resourceGroupName} именем группы ресурсов.
  3. Замените {accountName} именем ресурса.
  4. Замените {raiBlocklistName} (в URL-адресе) настраиваемым именем списка. Допустимые символы: 0-9, A-Z, a-z, - . _ ~.
  5. Замените {raiBlocklistItemName} настраиваемым именем элемента списка.
  6. Замените {token} маркером, полученным на шаге "Получить маркер" выше.
  7. Замените значение "blocking pattern" поля элементом, который вы хотите добавить в список блокировок. Максимальная длина blockItem составляет 1000 символов. Также укажите, является ли шаблон регулярным или точным совпадением.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-03-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{  
    "properties": {  
        "pattern": "blocking pattern",  
        "isRegex": false  
    }  
}' 

Примечание.

Для добавления нового термина в блок-список может потребоваться около 5 минут. Проверите через 5 минут.

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

{ 
  "name": "raiBlocklistItemName", 
  "id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName", 
  "properties": { 
    "pattern": "blocking pattern", 
    "isRegex": false 
  } 
} 

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

Теперь вы можете протестировать развертывание с блок-списком. Самый простой способ сделать это — в Azure OpenAI Studio. Если содержимое было заблокировано в запросе или завершении, появится сообщение об ошибке, в котором была активирована система фильтрации содержимого.

Инструкции по вызову конечных точек Azure OpenAI см. в кратком руководстве.

В приведенном ниже примере развертывание GPT-35-Turbo с блок-списком блокирует запрос. Ответ возвращает ошибку 400 .

{ 
    "error": { 
        "message": "The response was filtered due to the prompt triggering Azure OpenAI’s content management policy. Please modify your prompt and retry. To learn more about our content filtering policies please read our documentation: https://go.microsoft.com/fwlink/?linkid=2198766", 
        "type": null, 
        "param": "prompt", 
        "code": "content_filter", 
        "status": 400, 
        "innererror": { 
            "code": "ResponsibleAIPolicyViolation", 
            "content_filter_result": { 
                "custom_blocklists": [ 
                    { 
                        "filtered": true, 
                        "id": "raiBlocklistName" 
                    } 
                ], 
                "hate": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "self_harm": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "sexual": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "violence": { 
                    "filtered": false, 
                    "severity": "safe" 
                } 
            } 
        } 
    } 
} 

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

{ 
    "id": "chatcmpl-85NkyY0AkeBMunOjyxivQSiTaxGAl", 
    "object": "chat.completion", 
    "created": 1696293652, 
    "model": "gpt-35-turbo", 
    "prompt_filter_results": [ 
        { 
            "prompt_index": 0, 
            "content_filter_results": { 
                "hate": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "self_harm": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "sexual": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "violence": { 
                    "filtered": false, 
                    "severity": "safe" 
                } 
            } 
        } 
    ], 
    "choices": [ 
        { 
            "index": 0, 
            "finish_reason": "content_filter", 
            "message": { 
                "role": "assistant" 
            }, 
            "content_filter_results": { 
                "custom_blocklists": [ 
                    { 
                        "filtered": true, 
                        "id": "myBlocklistName" 
                    } 
                ], 
                "hate": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "self_harm": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "sexual": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "violence": { 
                    "filtered": false, 
                    "severity": "safe" 
                } 
            } 
        } 
    ], 
    "usage": { 
        "completion_tokens": 75, 
        "prompt_tokens": 27, 
        "total_tokens": 102 
    } 
} 

Использование блок-списков в Azure OpenAI Studio

Вы также можете создать настраиваемые списки блокировок в Azure OpenAI Studio в рамках конфигураций фильтрации содержимого (общедоступная предварительная версия). Инструкции по созданию пользовательских фильтров содержимого см . здесь. Ниже показано, как создать настраиваемые блок-списки в рамках фильтров содержимого с помощью Azure OpenAI Studio.

  1. Выберите фильтры содержимого в меню слева. Перейдите на вкладку "Блок-списки" рядом с вкладкой "Фильтры содержимого". Затем выберите "Создать список блокировок". Снимок экрана: выбор блочного списка.
  2. Создайте имя для списка блокировок, добавьте описание и нажмите кнопку "Создать список блокировок". Снимок экрана: имя и описание блока.
  3. Выберите пользовательский список блокировок после его создания и нажмите кнопку "Добавить новый термин". Снимок экрана: настраиваемый термин добавления списка блокировок.
  4. Добавьте термин, который следует отфильтровать, и выберите "Добавить термин". Вы также можете создать регрессию. Снимок экрана: добавление элемента пользовательского списка блокировок.
  5. Вы можете удалить каждый термин в списке блокировок. Снимок экрана: экран редактирования настраиваемого списка блокировок.
  6. Когда список блоков будет готов, перейдите в раздел "Фильтры содержимого ( предварительная версия) и создайте новую настраиваемую конфигурацию фильтра содержимого. Откроется мастер с несколькими компонентами безопасности содержимого ИИ. Дополнительные сведения о настройке основных фильтров и необязательных моделей см. здесь. Перейдите к добавлению списка блокировок (необязательно).
  7. Теперь вы увидите все доступные списки блокировок. Существует два типа блок-списков — созданные блок-списки и предварительно созданные списки блокировок, которые корпорация Майкрософт предоставляет, в этом случае блок-список ненормативной лексики (английский язык)
  8. Теперь вы можете решить, какие из доступных списков блокировок вы хотите включить в конфигурацию фильтрации содержимого. В приведенном ниже примере мы применяем CustomBlocklist1, который мы только что создали. Последним шагом является проверка и завершение конфигурации фильтрации содержимого, нажав кнопку "Далее". Снимок экрана: фильтрация управления конфигурацией.
  9. Вы всегда можете вернуться и изменить конфигурацию. Когда он будет готов, нажмите кнопку "Создать фильтр контента". Теперь к развертыванию можно применить новую конфигурацию, включающую списки блокировок. Подробные инструкции можно найти здесь.

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