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


Масштабирование Azure OpenAI для JavaScript с помощью Azure API Management.

Узнайте, как добавить балансировку нагрузки уровня предприятия в ваше приложение, чтобы чат-бот мог выйти за пределы установленных лимитов токена и квоты модели службы Azure OpenAI. Этот подход использует службу Azure API Management для интеллектуального управления трафиком между тремя ресурсами Azure OpenAI.

В этой статье требуется развернуть два отдельных примера:

  • Приложение чата:
    • Дождитесь развертывания приложения чата до тех пор, пока не будет развернут пример подсистемы балансировки нагрузки.
    • Если вы уже развернули приложение чата один раз, измените переменную среды для поддержки пользовательской конечной точки для подсистемы балансировки нагрузки и повторно разверните ее.
  • Подсистема балансировки нагрузки с помощью службы "Управление API Azure".

Примечание.

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

Архитектура балансировки нагрузки для Azure OpenAI с использованием Управления API Azure

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

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

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

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

Ресурс управления API в качестве слоя API находится перед набором ресурсов Azure OpenAI. Уровень API применяется к двум сценариям: нормальный и ограниченный. В обычном сценарии , где доступна квота маркера и модели, ресурс Azure OpenAI возвращает 200 обратно через уровень API и сервер серверного приложения.

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

Если ресурс ограничен из-за ограничений квот, слой API может сразу попробовать использовать другой ресурс Azure OpenAI, чтобы удовлетворить исходный запрос чат-приложения.

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

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

Откройте пример приложения локального балансировщика API Azure.

GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с помощью Visual Studio Code для Интернета в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.

Открыть в GitHub Codespaces.

Внимание

Все учетные записи GitHub могут использовать GitHub Codespaces до 60 часов бесплатно каждый месяц на двух процессорных ядрах. Дополнительные сведения см. в GitHub Codespaces - ежемесячно включенное хранилище и основные часы.

Развертывание подсистемы балансировки нагрузки управления API Azure

  1. Чтобы развернуть подсистему балансировки нагрузки в Azure, войдите в интерфейс командной строки разработчика Azure (AZD):

    azd auth login
    
  2. Завершите процесс входа.

  3. Разверните приложение подсистемы балансировки нагрузки:

    azd up
    

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

  4. Дождитесь завершения развертывания, прежде чем продолжить. Этот процесс может занять до 30 минут.

Получите конечную точку балансировщика нагрузки

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

azd env get-values | grep APIM_GATEWAY_URL

Разверните повторно приложение чата с конечной точкой балансировщика нагрузки.

Эти примеры завершены в примере приложения чата.

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

    Язык Пространства GitHub для кода Visual Studio Code
    .СЕТЬ Open in GitHub CodespacesОткрытие в GitHub Codespaces Открыть в контейнерах разработкиОткрыть в контейнерах разработки
    JavaScript Open in GitHub CodespacesОткрытие в GitHub Codespaces Открыть в контейнерах разработкиОткрыть в контейнерах разработки
    Питон Open in GitHub CodespacesОткрытие в GitHub Codespaces Открыть в контейнерах разработкиОткрыть в контейнерах разработки
  2. Войдите в интерфейс командной строки разработчика Azure (AZD):

    azd auth login
    

    Завершите процесс входа.

  3. Создайте среду AZD с именем, например chat-app:

    azd env new <name>
    
  4. Добавьте следующую переменную среды, которая сообщает серверной части приложения чата использовать настраиваемый URL-адрес для запросов Azure OpenAI:

    azd env set OPENAI_HOST azure_custom
    
  5. Добавьте эту переменную среды, чтобы сообщить серверной части приложения чата пользовательский URL-адрес для запроса Azure OpenAI:

    azd env set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
    
  6. Разверните приложение чата:

    azd up
    

Настройка квоты TPM (трастового платформенного модуля)

По умолчанию каждый экземпляр Azure OpenAI в системе балансировки нагрузки развертывается с емкостью 30 000 маркеров в минуту (TPM). Вы можете использовать приложение чата с уверенностью в том, что оно масштабируется на большое количество пользователей без превышения квоты. Измените это значение, если:

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

    azd env set OPENAI_CAPACITY 50
    
  2. Повторно разверните подсистему балансировки нагрузки:

    azd up
    

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

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

Очистка ресурсов приложения чата

Вернитесь в статью о приложении чата, чтобы очистить эти ресурсы.

Очистка ресурсов подсистемы балансировки нагрузки

Удалите ресурсы Azure и удалите исходный код:

azd down --purge --force

Переключатели предоставляют:

  • purge: Удаленные ресурсы удаляются немедленно. Вы можете повторно использовать маркеры Azure OpenAI в течение минуты.
  • force: удаление происходит незаметно, без согласия пользователя.

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

Удаление среды GitHub Codespaces гарантирует, что вы можете максимально увеличить объем бесплатных прав на базовые часы, которые вы получаете для вашей учетной записи.

Внимание

Для получения дополнительной информации о правах вашей учетной записи GitHub см. Годовые включенные объемы хранения и вычислительные часы для GitHub Codespaces.

  1. Войдите в панель управленияGitHub Codespaces.

  2. Найдите в настоящее время запущенные пространства кода, созданные из репозитория azure-samples/openai-apim-lb GitHub.

    снимок экрана, на котором показаны все выполняемые пространства кода, включая их состояние и шаблоны.

  3. Откройте контекстное меню для элемента GitHub Codespaces, а затем выберите Удалить.

    снимок экрана, показывающий контекстное меню для одного пространства кода с выделенным параметром

Получить помощь

Если у вас возникли проблемы с развертыванием подсистемы балансировки нагрузки службы "Управление API Azure", добавьте проблему на веб-страницу репозитория.

Пример кода

Примеры, используемые в этой статье, включают:

Дальнейшие действия

  • Узнайте больше о том, как AZD используется в этом шаблоне: