Partager via


Faites évoluer Azure OpenAI pour le chat JavaScript en utilisant RAG avec Azure Container Apps

Découvrez comment ajouter l’équilibrage de charge à votre application pour étendre l’application de conversation au-delà des limites de quota du service Azure OpenAI. Cette approche utilise Azure Container Apps pour créer trois points de terminaison Azure OpenAI et un conteneur principal pour diriger le trafic entrant vers l’un des trois points de terminaison.

Cet article nécessite de déployer deux exemples distincts :

  • Application de conversation instantanée

    • Si vous n’avez pas encore déployé l’application de conversation, attendez que l’exemple d’équilibreur de charge soit déployé.

    • Si vous avez déjà déployé l’application de conversation une fois, modifiez la variable d’environnement pour prendre en charge un point de terminaison personnalisé pour l’équilibreur de charge et redéployez-la.

    • L’application de conversation est disponible dans ces langues :

  • Application d’équilibreur de charge

Remarque

Cet article utilise un ou plusieurs modèles d’application IA comme base pour les exemples et les conseils qu’il contient. Les modèles d’application IA vous fournissent des implémentations de référence bien gérées qui sont faciles à déployer. Ils aident à garantir un point de départ de haute qualité pour vos applications IA.

Architecture d’équilibrage de charge d’Azure OpenAI avec Azure Container Apps

Étant donné que la ressource Azure OpenAI a des limites de quota de jeton et de modèle spécifiques, une application de conversation qui utilise une seule ressource Azure OpenAI est susceptible d’avoir des échecs de conversation en raison de ces limites.

Diagramme montrant l’architecture de l’application de conversation avec la ressource Azure OpenAI mise en surbrillance.

Pour utiliser l’application de conversation sans atteindre ces limites, utilisez une solution à charge équilibrée avec Container Apps. Cette solution expose en toute transparence un point de terminaison unique entre Container Apps et votre serveur d’applications de conversation.

Diagramme montrant l’architecture des applications de conversation avec Azure Container Apps devant trois ressources Azure OpenAI.

L’application conteneur se trouve devant un ensemble de ressources Azure OpenAI. L’application conteneur résout deux scénarios : normal et restreint. Dans un scénario normal où le quota de jeton et de modèle est disponible, la ressource Azure OpenAI retourne une valeur de 200 par le biais de l’application conteneur et du serveur d’applications.

Diagramme montrant un scénario normal. Le scénario normal montre trois groupes de points de terminaison Azure OpenAI avec le premier groupe de deux points de terminaison ayant réussi le trafic.

Lorsqu’une ressource se trouve dans un scénario limité en raison de limites de quota, l’application conteneur peut réessayer immédiatement une autre ressource Azure OpenAI pour répondre immédiatement à la demande d’application de conversation d’origine.

Diagramme montrant un scénario de limitation avec un code de réponse d'erreur 429 et un en-tête indiquant le nombre de secondes que le client doit attendre avant de réessayer.

Prérequis

Ouvrez l'exemple d'application Container Apps avec répartiteur de charge

GitHub Codespaces exécute un conteneur de développement géré par GitHub avec Visual Studio Code pour le web comme interface utilisateur. Pour un environnement de développement le plus simple, utilisez GitHub Codespaces pour disposer des outils de développement et des dépendances appropriés préinstallés pour terminer cet article.

Ouvrir dans GitHub Codespaces.

Important

Tous les comptes GitHub peuvent utiliser GitHub Codespaces pour jusqu’à 60 heures gratuites chaque mois avec deux instances principales. Pour plus d’informations, consultez Le stockage mensuel inclus et les heures de cœur GitHub Codespaces.

Déployer l’équilibreur de charge Azure Container Apps

  1. Connectez-vous à Azure Developer CLI pour fournir l’authentification aux étapes d’approvisionnement et de déploiement :

    azd auth login --use-device-code
    
  2. Définissez une variable d’environnement pour utiliser l’authentification Azure CLI à l’étape de post-approvisionnement :

    azd config set auth.useAzCliAuth "true"
    
  3. Déployez l’application d’équilibreur de charge :

    azd up
    

    Sélectionnez un abonnement et une région pour le déploiement. Ils ne doivent pas être le même abonnement ni la même région que l'application de chat.

  4. Attendez que le déploiement se termine avant de continuer.

Obtenir le point de terminaison de déploiement

  1. Utilisez la commande suivante pour afficher le point de terminaison déployé pour l’application conteneur :

    azd env get-values
    
  2. Copiez la valeur de CONTAINER_APP_URL. Vous l’utilisez dans la section suivante.

Redéployer l’application de conversation avec le point de terminaison de l’équilibreur de charge

Ces exemples sont complétés sur l’exemple de l'application de chat.

  1. Ouvrez le conteneur de développement de l’exemple d’application de conversation à l’aide de l’un des choix suivants.

    Langue GitHub Codespaces Visual Studio Code
    .NET Open in GitHub CodespacesOuvrir dans un GitHub Codespaces Open in Dev ContainersOuvrir dans les conteneurs de développement
    JavaScript Open in GitHub CodespacesOuvrir dans un GitHub Codespaces Open in Dev ContainersOuvrir dans les conteneurs de développement
    Python Open in GitHub CodespacesOuvrir dans un GitHub Codespaces Open in Dev ContainersOuvrir dans les conteneurs de développement
  2. Connectez-vous à Azure Developer CLI (AZD) :

    azd auth login
    

    Terminez les instructions de connexion.

  3. Créez un AZD environnement avec un nom tel que chat-app:

    azd env new <name>
    
  4. Ajoutez la variable d’environnement suivante, qui indique au back-end de l’application de conversation d’utiliser une URL personnalisée pour les requêtes Azure OpenAI :

    azd env set OPENAI_HOST azure_custom
    
  5. Ajoutez la variable d’environnement suivante. Remplacez <CONTAINER_APP_URL> par l’URL de la section précédente. Cette action indique au back-end de l’application de conversation la valeur de l’URL personnalisée de la requête Azure OpenAI.

    azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
    
  6. Déployez l’application de conversation :

    azd up
    

Utilisez l’application de conversation avec confiance qu’elle s’adapte à de nombreux utilisateurs sans manquer de quota.

Diffuser en continu les journaux pour voir les résultats de l’équilibreur de charge

  1. Dans le portail Azure, recherchez votre groupe de ressources.

  2. Dans la liste des ressources du groupe, sélectionnez la ressource Azure Container Apps.

  3. Sélectionnez Surveillance>Flux de journal pour afficher le journal.

  4. Utilisez l’application de conversation pour générer du trafic dans le journal.

  5. Recherchez les journaux qui font référence aux ressources Azure OpenAI. Chacune des trois ressources a son identité numérique dans le commentaire de journal qui commence par Proxying to https://openai3, où 3 indique la troisième ressource Azure OpenAI.

    Capture d’écran montrant les journaux de diffusion en continu Azure Container Apps avec deux lignes de journal mises en surbrillance pour illustrer les commentaires du journal.

Lorsque l’équilibreur de charge reçoit l’état que la demande dépasse le quota, l’équilibreur de charge pivote automatiquement vers une autre ressource.

Configurer le quota TPM

Par défaut, chacune des instances Azure OpenAI dans l’équilibreur de charge est déployée avec une capacité de 30 000 jetons par minute (TPM). Vous pouvez utiliser l’application de conversation avec la confiance qu’elle s’adapte à de nombreux utilisateurs sans manquer de quota. Modifiez cette valeur quand :

  • Vous obtenez des erreurs de capacité de déploiement : réduisez la valeur.
  • Vous avez besoin d’une capacité plus élevée : augmentez la valeur.
  1. Utilisez la commande suivante pour modifier la valeur :

    azd env set OPENAI_CAPACITY 50
    
  2. Redéployez l’équilibreur de charge :

    azd up
    

Nettoyer les ressources

Lorsque vous avez terminé avec l’application de conversation et l’équilibreur de charge, nettoyez les ressources. Les ressources Azure créées dans cet article sont facturées dans votre abonnement Azure. Si vous pensez ne plus avoir besoin de ces ressources, supprimez-les pour éviter des frais supplémentaires.

Nettoyer les ressources de l’application de conversation

Revenez à l’article de l’application de conversation pour nettoyer les ressources :

Nettoyer les ressources de l’équilibreur de charge

Supprimez les ressources Azure et supprimez le code source :

azd down --purge --force

Les commutateurs fournissent :

  • purge: les ressources supprimées sont immédiatement vidées pour pouvoir réutiliser les jetons du service Azure OpenAI par minute.
  • force : la suppression se produit de manière silencieuse, sans exiger le consentement de l’utilisateur.

Nettoyer GitHub Codespaces et Visual Studio Code

La suppression de l'environnement GitHub Codespaces garantit que vous pouvez maximiser le nombre d'heures gratuites par cœur auxquelles vous avez droit pour votre compte.

Important

Pour plus d’informations sur les droits de votre compte GitHub, consultez GitHub Codespaces mensuel inclus stockage et heures principales.

  1. Connectez-vous au tableau de bord GitHub Codespaces .

  2. Recherchez vos espaces de code en cours d’exécution qui sont générés à partir du référentiel GitHub azure-samples/openai-aca-lb .

    Capture d’écran montrant tous les espaces de code en cours d’exécution, y compris leur état et leurs modèles.

  3. Ouvrez le menu contextuel de l’espace de code, puis sélectionnez Supprimer.

    Capture d’écran montrant le menu contextuel d’un espace de code unique avec l’option Supprimer mise en surbrillance.

Obtenir de l’aide

Si vous ne parvenez pas à déployer l’équilibreur de charge Azure Container Apps, ajoutez votre problème à la page web Problèmes du référentiel.

Exemple de code

Les exemples utilisés dans cet article incluent :

Étape suivante

  • Utilisez Azure Load Testing pour tester votre application de conversation avec azure Load Testing Service.