Dimensionar o chat do OpenAI do Azure para JavaScript usando o RAG com os Aplicativos de Contêiner do Azure
Saiba como adicionar balanceamento de carga ao seu aplicativo para estender o aplicativo de chat além dos limites de cota de modelo e token do Serviço OpenAI do Azure. Essa abordagem usa os Aplicativos de Contêiner do Azure para criar três pontos de extremidade do Azure OpenAI e um contêiner primário para direcionar o tráfego de entrada para um dos três pontos de extremidade.
Este artigo exige que você implante duas amostras separadas:
Aplicativo de chat
Se você ainda não implantou o aplicativo de chat, aguarde até que o exemplo do balanceador de carga seja implantado.
Se você já implantou o aplicativo de chat uma vez, altere a variável de ambiente para dar suporte a um ponto de extremidade personalizado para o balanceador de carga e reimplantá-lo novamente.
O aplicativo de chat está disponível nestes idiomas:
- .NET
- JavaScript
- Python
Aplicativo balanceador de carga
Observação
Este artigo usa um ou mais modelos de aplicativo de IA como base para os exemplos e as orientações apresentadas no artigo. Os modelos de aplicativo de IA fornecem implementações de referência bem mantidas que são fáceis de implantar. Eles ajudam a garantir um ponto de partida de alta qualidade para seus aplicativos de IA.
Arquitetura para balanceamento de carga do Azure OpenAI com os Aplicativos de Contêiner do Azure
Como o recurso do Azure OpenAI tem limites específicos de cota de token e modelo, um aplicativo de chat que usa um único recurso do Azure OpenAI está propenso a ter falhas de conversa devido a esses limites.
Para usar o aplicativo de chat sem atingir esses limites, use uma solução de balanceamento de carga com o Container Apps. Esta solução expõe perfeitamente um único ponto de extremidade dos Aplicativos de Contêiner para o servidor de aplicativo de chat.
O aplicativo de contêiner fica na frente de um conjunto de recursos do Azure OpenAI. O Aplicativo de Contêiner resolve dois cenários: normal e limitado. Durante um cenário normal em que a cota de token e modelo estão disponíveis, o recurso do OpenAI do Azure retorna um 200 de volta por meio do aplicativo de contêiner e do servidor de aplicativos.
Quando um recurso está em um cenário limitado, como devido a limites de cota, o aplicativo de contêiner pode tentar novamente um recurso do OpenAI do Azure diferente imediatamente para realizar a solicitação de aplicativo de chat original.
Pré-requisitos
Assinatura do Azure. Crie um gratuitamente
Os contêineres de desenvolvimento estão disponíveis para ambos os exemplos, com todas as dependências necessárias para concluir este artigo. Você pode executar os contêineres de desenvolvimento em Codespaces do GitHub (em um navegador) ou localmente usando o Visual Studio Code.
- Codespaces (recomendado)
- Visual Studio Code
- Uma conta do GitHub.
Abrir o aplicativo de exemplo de load balancer de Aplicativos de Contêiner
- Codespaces do GitHub (recomendado)
- Visual Studio Code
GitHub Codespaces executa um contêiner de desenvolvimento gerenciado pelo GitHub com o Visual Studio Code para Web como interface do usuário. Para o ambiente de desenvolvimento mais simples, use os Codespaces do GitHub para que você tenha as ferramentas e dependências de desenvolvedor corretas pré-instaladas para concluir este artigo.
Importante
Todas as contas do GitHub podem usar o GitHub Codespaces por até 60 horas grátis por mês com duas instâncias principais. Para saber mais, confira Armazenamento e horas por núcleo incluídos mensalmente no GitHub Codespaces.
Implantar o balanceador de carga dos Aplicativos de Contêiner do Azure
Entre na CLI do Desenvolvedor do Azure para fornecer autenticação às etapas de provisionamento e implantação:
azd auth login --use-device-code
Defina uma variável de ambiente para usar a autenticação da CLI do Azure para a etapa pós-provisionamento:
azd config set auth.useAzCliAuth "true"
Implante o aplicativo do balanceador de carga:
azd up
Selecione uma assinatura e uma região para a implantação. Eles não precisam ter a mesma assinatura e região do aplicativo de chat.
Aguarde até que a implantação seja concluída antes de continuar.
Obter o ponto de extremidade de implantação
Utilize o seguinte comando para exibir o endpoint implantado para o aplicativo de contêiner:
azd env get-values
Copie o valor
CONTAINER_APP_URL
. Você o usará na próxima seção.
Reimplantar o aplicativo de chat com o ponto de extremidade do load balancer
Esses exemplos são concluídos no exemplo do aplicativo de chat.
- Implantação inicial
- Reimplantação
Abra o contêiner de desenvolvimento do aplicativo de chat usando uma das opções a seguir.
Idioma GitHub Codespaces Visual Studio Code .NET Abrir em GitHub Codespaces Abrir em contêineres de desenvolvimento JavaScript Abrir no GitHub Codespaces Abrir em Contêineres de Desenvolvimento
Python Abrir em GitHub Codespaces Abrir em Dev Containers Fazer login na CLI do Desenvolvedor do Azure (
AZD
):azd auth login
Conclua as instruções de entrada.
Crie um ambiente
AZD
com um nome comochat-app
:azd env new <name>
Adicione a seguinte variável de ambiente, que informa ao back-end do aplicativo de chat para usar uma URL personalizada para as solicitações do Azure OpenAI:
azd env set OPENAI_HOST azure_custom
Adicione a variável de ambiente a seguir. Substitua
<CONTAINER_APP_URL>
pela URL da seção anterior. Essa ação informa ao back-end do aplicativo de chat qual é o valor da URL personalizada para a solicitação do Azure OpenAI.azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
Implante o aplicativo de chat:
azd up
Agora você pode usar o aplicativo de chat com a confiança de que ele foi criado para ser escalado entre muitos usuários sem ficar sem cota.
Transmitir logs para ver os resultados do balanceador de carga
No portal do Azure, pesquise seu grupo de recursos.
Na lista de recursos no grupo, selecione o recurso Aplicativos de Contêiner do Azure.
Selecione Monitoramento>Fluxo de log para exibir o log.
Use o aplicativo de chat para gerar tráfego no log.
Procure os logs, que fazem referência aos recursos do OpenAI do Azure. Cada um dos três recursos tem sua identidade numérica no comentário de log que começa com
Proxying to https://openai3
, em que3
indica o terceiro recurso do Azure OpenAI.
Quando o balanceador de carga recebe o status de que a solicitação excede a cota, o balanceador de carga gira automaticamente para outro recurso.
Configurar a cota do TPM
Por padrão, cada uma das instâncias do OpenAI do Azure no balanceador de carga é implantada com uma capacidade de processamento de 30.000 tokens por minuto (TPM). Você pode usar o aplicativo de chat tendo a confiança de que ele foi criado para ser dimensionado entre muitos usuários sem ficar sem cota. Altere esse valor quando:
- Se ocorrerem erros de capacidade de implantação: reduza o valor.
- Você precisa de maior capacidade: aumente o valor.
Use o seguinte comando para alterar o valor:
azd env set OPENAI_CAPACITY 50
Reimplantar o balanceador de carga:
azd up
Limpar os recursos
Quando terminar de usar o aplicativo de chat e o balanceador de carga, limpe os recursos. Os recursos do Azure criados neste artigo são cobrados para sua assinatura do Azure. Se você não espera precisar desses recursos no futuro, exclua-os para evitar incorrer em mais encargos.
Limpar recursos do aplicativo de chat
Retorne ao artigo sobre o aplicativo de chat para limpar os recursos:
Limpar recursos do balanceador de upload
Execute o seguinte comando do Azure Developer CLI para excluir os recursos do Azure e remover o código-fonte:
azd down --purge --force
Os interruptores fornecem:
purge
: Os recursos excluídos são eliminados imediatamente para que você possa reutilizar os tokens do Serviço OpenAI do Azure a cada minuto.force
: A exclusão ocorre silenciosamente, sem exigir o consentimento do usuário.
Limpar os codespaces do GitHub e o Visual Studio Code
A exclusão do ambiente GitHub Codespaces garante que você possa maximizar a quantidade de horas gratuitas por núcleo que você tem direito na sua conta.
Importante
Para saber mais sobre os direitos da sua conta do GitHub, consulte GitHub Codespaces: armazenamento e horas de núcleo mensais incluídos.
Entre no painel do GitHub Codespaces.
Localize seus codespaces em execução que são originados no repositório do GitHub azure-samples/openai-aca-lb.
Abra o menu de contexto do codespace e selecione Excluir.
Obter ajuda
Se você tiver problemas para implantar o balanceador de carga do Gerenciamento de API do Azure, adicione o seu problema à página da Web Problemas do repositório.
Código de exemplo
Os exemplos usados neste artigo incluem:
- Aplicativo de chat JavaScript com RAG
- Balanceador de Carga com Aplicativos de Contêiner do Azure
Próxima etapa
- Use o Teste de Carga do Azure para realizar teste de carga no seu aplicativo de chat com o Serviço de Teste de Carga do Azure.
- Saiba mais sobre como o AZD é usado neste modelo: