Масштабирование чата Azure OpenAI для Python с помощью RAG с приложениями контейнеров Azure
Статья
Узнайте, как добавить балансировку нагрузки в ваше приложение, чтобы расширить возможности приложения-чата за пределы ограничений токенов и лимитов модели службы Azure OpenAI. Этот подход использует приложения контейнеров Azure для создания трех конечных точек Azure OpenAI и основного контейнера для направления входящего трафика к одной из трех конечных точек.
В этой статье требуется развернуть два отдельных примера:
Приложение чата
Если вы еще не развернули приложение чата, дождитесь развертывания примера подсистемы балансировки нагрузки.
Если вы уже развернули приложение чата один раз, измените переменную среды для поддержки пользовательской конечной точки для подсистемы балансировки нагрузки и повторно разверните ее.
В этой статье используется один или несколько шаблонов приложений ИИ в качестве основы для примеров и рекомендаций в этой статье. Шаблоны приложений искусственного интеллекта предоставляют вам хорошо поддерживаемые эталонные реализации, которые легко развертываться. Они помогают обеспечить высококачественную отправную точку для приложений ИИ.
Архитектура балансировки нагрузки Azure OpenAI с помощью приложений контейнеров Azure
Так как ресурс Azure OpenAI имеет определенные ограничения маркера и квоты модели, приложение чата, использующее один ресурс Azure OpenAI, подвержено сбоям диалога из-за этих ограничений.
Чтобы использовать приложение чата без достижения этих ограничений, используйте решение с балансировкой нагрузки с контейнерными приложениями. Это решение беспрепятственно открывает одну конечную точку из контейнерных приложений для сервера вашего чат-приложения.
Приложение-контейнер находится перед набором ресурсов Azure OpenAI. Приложение-контейнер решает два сценария: обычный и ограниченный. В обычном сценарии, где доступна квота маркера и модели, ресурс Azure OpenAI возвращает 200 обратно через приложение контейнера и сервер приложений.
Если ресурс находится в сценарии ограниченного использования из-за ограничений квоты, приложение контейнера может попробовать использовать другой ресурс Azure OpenAI для выполнения исходного запроса чат-приложения.
контейнеры разработки доступны для обоих примеров со всеми зависимостями, необходимыми для выполнения этой статьи. Контейнеры разработки можно запускать в GitHub Codespaces (в браузере) или локально с помощью Visual Studio Code.
GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Visual Studio Code для веба в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.
Чтобы расширение Dev Containers для Visual Studio Code работало, требуется установка Docker на локальном компьютере. Расширение размещает контейнер разработки локально с помощью узла Docker с правильными средствами разработчика и предварительно установленными зависимостями для выполнения этой статьи.
Развертывание подсистемы балансировки нагрузки для приложений контейнеров Azure
Войдите в интерфейс командной строки разработчика Azure, чтобы обеспечить проверку подлинности для шагов подготовки и развертывания:
azd auth login --use-device-code
Задайте переменную среды для использования аутентификации Azure CLI на этапе после развертывания.
Откройте контейнер разработки для приложения чата с помощью одного из следующих вариантов.
Язык
Пространства кода GitHub
Visual Studio Code
.СЕТЬ
JavaScript
Питон
Войдите в интерфейс командной строки разработчика Azure (AZD):
azd auth login
Завершите инструкцию по входу в систему.
Создайте среду AZD с именем, например chat-app:
azd env new <name>
Добавьте следующую переменную среды, которая сообщает серверной части приложения чата использовать настраиваемый URL-адрес для запросов Azure OpenAI:
azd env set OPENAI_HOST azure_custom
Добавьте следующую переменную среды. Замените <CONTAINER_APP_URL> URL-адресом из предыдущего раздела. Это действие сообщает серверной части приложения чата, что такое значение настраиваемого URL-адреса для запроса Azure OpenAI.
azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
Разверните приложение чата:
azd up
Повторно откройте контейнер разработки для приложения чата с помощью одного из следующих вариантов.
Язык
Пространства кода GitHub
Visual Studio Code
.СЕТЬ
JavaScript
Питон
Добавьте следующую переменную среды, которая сообщает серверной части приложения чата использовать настраиваемый URL-адрес для запросов Azure OpenAI:
azd env set OPENAI_HOST azure_custom
Добавьте следующую переменную среды, которая сообщает серверной части приложения чата, что такое значение настраиваемого URL-адреса для запроса Azure OpenAI:
azd env set CONTAINER_APP_URL <CONTAINER_APP_URL>
Разверните приложение чата:
azd up
Дождитесь завершения этого процесса, прежде чем продолжить.
Теперь вы можете использовать приложение чата с уверенностью в том, что оно создано для масштабирования для многих пользователей без превышения квоты.
Передача логов в потоковом режиме для просмотра результатов балансировщика нагрузки
В списке ресурсов в группе выберите ресурс "Приложения контейнеров Azure".
Выберите «Мониторинг»>и «Поток журнала», чтобы просмотреть журнал.
Используйте приложение чата для создания трафика в журнале.
Найдите журналы, которые ссылаются на ресурсы Azure OpenAI. Каждый из трех ресурсов имеет свое числовое удостоверение в примечании журнала, которое начинается с Proxying to https://openai3, где 3 указывает третий ресурс Azure OpenAI.
Когда балансировщик нагрузки получает сообщение о том, что запрос превышает квоту, он автоматически переключается на другой ресурс.
Настройка квоты доверенного платформенного модуля
По умолчанию каждый экземпляр Azure OpenAI в системе балансировки нагрузки развертывается с емкостью 30 000 токенов в минуту (TPM). Вы можете использовать приложение чата с уверенностью в том, что оно создано для масштабирования для многих пользователей без превышения квоты. Измените это значение, если:
Возникают ошибки емкости развертывания: уменьшите значение.
Вам нужна более высокая емкость: увеличьте значение.
Чтобы изменить значение, используйте следующую команду:
azd env set OPENAI_CAPACITY 50
Повторно разверните подсистему балансировки нагрузки:
azd up
Очистка ресурсов
Завершив работу с приложением чата и подсистемой балансировки нагрузки, очистите ресурсы. Ресурсы Azure, созданные в этой статье, подлежат оплате по вашей подписке Azure. Если вы не ожидаете, что эти ресурсы потребуются в будущем, удалите их, чтобы избежать дополнительных расходов.
Очистка ресурсов приложения чата
Вернитесь в статью о приложении чата, чтобы очистить ресурсы:
Удаление среды GitHub Codespaces гарантирует, что вы можете максимально использовать объем бесплатных часовых квот на ядро, предоставляемых для учетной записи.
Найдите в настоящее время работающие пространства кода, полученные из репозитория azure-samples/openai-aca-lb на GitHub.
Откройте контекстное меню для пространства кода, а затем выберите Удалить.
Вам не обязательно нужно очищать локальную среду, но вы можете остановить запущенный контейнер разработки и вернуться к работе с Visual Studio Code в контексте локальной рабочей области.
Откройте палитру команд и найдите команды контейнеров разработки .
Выберите контейнеры разработки : откройте папку локально.
Совет
Visual Studio Code останавливает запущенный контейнер разработки, но контейнер по-прежнему существует в Docker в остановленном состоянии. Вы всегда можете удалить экземпляр контейнера, образ контейнера и тома из Docker, чтобы освободить больше места на локальном компьютере.
Получите помощь
Если у вас возникли проблемы с развертыванием балансировщика нагрузки Azure API Management, добавьте вашу проблему на страницу репозитория Issues.
Узнайте, как эффективно оценивать ответы в приложении чата на основе RAG с помощью Azure OpenAI. Создание примеров запросов, выполнение вычислений и анализ результатов.
Начало работы с Python и поиск по собственным данным с помощью примера приложения чата, реализованного с помощью Службы Azure OpenAI и получения дополненного поколения (RAG) в поиске ИИ Azure. Простое развертывание с помощью Интерфейса командной строки разработчика Azure. В этой статье используется пример шаблона справочника по ИИ Azure.
Защитите документы приложения чата с помощью проверки подлинности пользователя и фильтрации безопасности документов, чтобы пользователи получали ответы на основе своих разрешений.
Узнайте, как добавить балансировку нагрузки с помощью Azure Управление API в приложение, чтобы расширить приложение чата за пределами маркера Azure OpenAI и квоты модели.