Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Obtenga información sobre cómo agregar equilibrio de carga a la aplicación para ampliar la aplicación de chat más allá de los límites de cuota de modelo y token del servicio OpenAI de Azure. Este enfoque usa Azure Container Apps para crear tres puntos de conexión de Azure OpenAI y un contenedor principal para dirigir el tráfico entrante a uno de los tres puntos de conexión.
Este artículo requiere que implemente dos ejemplos independientes:
Aplicación de chat
Si aún no ha implementado la aplicación de chat, espere hasta que se implemente el ejemplo del equilibrador de carga.
Si ya ha implementado la aplicación de chat una vez, cambie la variable de entorno para admitir un punto de conexión personalizado para el equilibrador de carga y vuelva a implementarla.
La aplicación de chat está disponible en estos idiomas:
Aplicación del equilibrador de carga
Nota
En este artículo se utilizan una o varias plantillas de aplicación de IA de y como base para los ejemplos y la guía del artículo. Las plantillas de aplicación de IA proporcionan implementaciones de referencia bien mantenidas que son fáciles de implementar. Ayudan a garantizar un punto de partida de alta calidad para las aplicaciones de inteligencia artificial.
Arquitectura para el equilibrio de carga de Azure OpenAI con Azure Container Apps
Dado que el recurso de Azure OpenAI tiene límites específicos de cuota de tokens y modelos, una aplicación de chat que usa un único recurso de Azure OpenAI es propenso a tener errores de conversación debido a esos límites.
Para usar la aplicación de chat sin alcanzar esos límites, use una solución de carga equilibrada con Container Apps. Esta solución expone sin problemas un único punto de conexión de Container Apps al servidor de aplicaciones de chat.
La aplicación contenedora se encuentra delante de un conjunto de recursos de Azure OpenAI. La aplicación Container resuelve dos escenarios: normal y limitado. Durante un escenario normal donde está disponible la cuota de tokens y modelos, el recurso de Azure OpenAI devuelve un valor de 200 a través de Container App y App Server.
Cuando un recurso se encuentra en un escenario de limitación debido a los límites de cuota, la aplicación en contenedor puede inmediatamente intentar utilizar un recurso diferente de Azure OpenAI para cumplir con la solicitud original de la aplicación de chat.
Prerrequisitos
Una suscripción de Azure. Crear uno gratis
Los contenedores de desarrollo están disponibles para ambos ejemplos, con todas las dependencias requeridas para completar este artículo. Puede ejecutar los contenedores de desarrollo en GitHub Codespaces en un explorador o localmente mediante Visual Studio Code.
- Una cuenta de GitHub.
Abre la aplicación de ejemplo del equilibrador de carga de Container Apps
GitHub Codespaces ejecuta un contenedor de desarrollo administrado por GitHub con Visual Studio Code para web como interfaz de usuario. Para el entorno de desarrollo más sencillo, use GitHub Codespaces para que tenga las herramientas de desarrollo y las dependencias correctas preinstaladas para completar este artículo.
Importante
Todas las cuentas de GitHub pueden usar GitHub Codespaces durante hasta 60 horas gratuitas cada mes con dos instancias principales. Para obtener más información, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.
Implementación del equilibrador de carga de Azure Container Apps
Inicie sesión en la CLI para desarrolladores de Azure para proporcionar autenticación a los pasos de aprovisionamiento e implementación:
azd auth login --use-device-code
Establezca una variable de entorno para usar la autenticación de la CLI de Azure en el paso posterior al aprovisionamiento:
azd config set auth.useAzCliAuth "true"
Implemente la aplicación del equilibrador de carga:
azd up
Seleccione una suscripción y una región para la implementación. No tienen que ser la misma suscripción y región que la aplicación de chat.
Espere a que finalice la implementación antes de continuar.
Obtener el extremo de implementación
Use el siguiente comando para mostrar el punto de conexión implementado para la aplicación contenedora:
azd env get-values
Copie el valor
CONTAINER_APP_URL
. Lo usas en la sección siguiente.
Reimplementación de la aplicación de chat con el punto de chat del Load Balancer
Estos ejemplos se completan en el ejemplo de aplicación de chat.
Abra el contenedor de desarrollo del ejemplo de la aplicación de chat mediante una de las siguientes opciones.
Idioma GitHub Codespaces Visual Studio Code .NET JavaScript Pitón Inicie sesión en la CLI para desarrolladores de Azure (
AZD
):azd auth login
Finalice las instrucciones de inicio de sesión.
Cree un entorno
AZD
con un nombre tal comochat-app
:azd env new <name>
Agregue la siguiente variable de entorno, que indica al back-end de la aplicación de chat que use una dirección URL personalizada para las solicitudes de Azure OpenAI:
azd env set OPENAI_HOST azure_custom
Agregue la siguiente variable de entorno. Sustituya
<CONTAINER_APP_URL>
por la dirección URL de la sección anterior. Esta acción indica al back-end de la aplicación de chat cuál es el valor de la dirección URL personalizada para la solicitud de Azure OpenAI.azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
Implemente la aplicación de chat:
azd up
Ahora puede usar la aplicación de chat con la confianza de que está diseñada para escalar entre muchos usuarios sin agotar la cuota.
Transmitir registros para ver los resultados del equilibrador de carga
En Azure Portal, busque el grupo de recursos.
En la lista de recursos del grupo, seleccione el recurso Azure Container Apps.
Seleccione Supervisión>Flujo de registro para ver el registro.
Use la aplicación de chat para generar tráfico en el registro.
Busque los registros, que hacen referencia a los recursos de Azure OpenAI. Cada uno de los tres recursos tiene su identidad numérica en el comentario de registro que comienza con
Proxying to https://openai3
, donde3
indica el tercer recurso de Azure OpenAI.
Cuando el equilibrador de carga recibe el estado de que la solicitud supera la cuota, el equilibrador de carga gira automáticamente a otro recurso.
Configuración de la cuota de TPM
De forma predeterminada, cada una de las instancias de Azure OpenAI del equilibrador de carga se implementa con una capacidad de 30 000 tokens por minuto (TPM). Puede usar la aplicación de chat con la confianza de que está diseñada para escalar entre muchos usuarios sin agotar la cuota. Cambie este valor cuando:
- Obtiene errores de capacidad de implementación: menor que ese valor.
- Necesita una capacidad más alta: aumente el valor.
Use el siguiente comando para cambiar el valor:
azd env set OPENAI_CAPACITY 50
Vuelva a implementar el equilibrador de carga:
azd up
Limpieza de recursos
Cuando haya terminado con la aplicación de chat y el equilibrador de carga, limpie los recursos. Los recursos de Azure creados en este artículo se facturan a su suscripción de Azure. Si no espera necesitar estos recursos en el futuro, elimínelos para evitar incurrir en más cargos.
Limpieza de los recursos de la aplicación de chat
Regrese al artículo sobre la aplicación de chat para limpiar los recursos.
Limpieza de los recursos del equilibrador de carga
Ejecute el siguiente comando de la CLI para desarrolladores de Azure para eliminar los recursos de Azure y quite el código fuente:
azd down --purge --force
Los interruptores proporcionan:
purge
: Los recursos eliminados se eliminan inmediatamente, permitiéndole reutilizar los tokens del servicio Azure OpenAI por minuto.force
: la eliminación se produce de forma silenciosa, sin necesidad de consentimiento del usuario.
Limpieza de GitHub Codespaces y Visual Studio Code
La eliminación del entorno de GitHub Codespaces garantiza que pueda maximizar la cantidad de derechos de horas gratuitas por núcleo que obtiene para su cuenta.
Importante
Para obtener más información sobre los derechos de la cuenta de GitHub, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.
Inicie sesión en el panel de GitHub Codespaces.
Busque los codespaces que se ejecutan actualmente a partir del repositorio de GitHub azure-samples/openai-aca-lb.
Abra el menú contextual del espacio de código y seleccione Eliminar.
Obtener ayuda
Si tiene problemas para implementar el Load Balancer de Azure API Management, agregue el problema en la página web del repositorio Problemas.
Código de ejemplo
En este artículo se usan los ejemplos siguientes:
Paso siguiente
- Use Azure Load Testing para probar la carga de la aplicación de chat.