Dimensionar o Azure OpenAI para JavaScript com o Gerenciamento de API do Azure

Saiba como adicionar balanceamento de carga de nível empresarial ao seu aplicativo para estender o aplicativo de bate-papo além dos limites de cota de modelo e token do Azure OpenAI. Essa abordagem usa o Gerenciamento de API do Azure para direcionar de forma inteligente o tráfego entre três recursos do Azure OpenAI.

Este artigo exige que você implante dois exemplos separados:

  • 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á tiver implantado o aplicativo de chat uma vez, você alterará a variável de ambiente para dar suporte a um ponto de extremidade personalizado para o balanceador de carga e reimplantá-lo novamente.
  • Balanceador de carga com Gerenciamento de API do Azure

Arquitetura para balanceamento de carga do Azure OpenAI com o Gerenciamento de API do Azure

Como o recurso OpenAI do Azure tem limites específicos de cota de token e modelo, um aplicativo de chat usando um único recurso do OpenAI do Azure está propenso a ter falhas de conversa devido a esses limites.

Diagrama mostrando a arquitetura do aplicativo de chat com o recurso OpenAI do Azure realçado.

Para usar o aplicativo de bate-papo sem atingir esses limites, use uma solução com balanceamento de carga com o Gerenciamento de API do Azure. Essa solução expõe perfeitamente um único ponto de extremidade do Gerenciamento de API do Azure ao seu servidor de aplicativo de chat.

Diagrama mostrando a arquitetura do aplicativo de bate-papo com o Gerenciamento de API do Azure na frente de três recursos do Azure OpenAI.

O recurso de Gerenciamento de API do Azure, como uma camada de API, fica na frente de um conjunto de recursos do Azure OpenAI. A camada de API se aplica a dois cenários: normal e limitado. Durante um cenário normal em que a cota de token e modelo está disponível, o recurso Azure OpenAI retorna 200 de volta por meio da camada de API e do servidor de aplicativo de back-end.

Diagrama exibindo um cenário normal. O cenário normal mostra três grupos de pontos de extremidade de OpenAI do Azure com o primeiro grupo de dois pontos de extremidade recebendo tráfego bem-sucedido.

Quando um recurso é limitado devido a limites de cota, a camada de API pode tentar novamente um recurso diferente do Azure OpenAI imediatamente para atender à solicitação original do aplicativo de bate-papo.

Diagrama exibindo um cenário de limitação com um código de resposta com falha 429 e um cabeçalho de resposta de quantos segundos o cliente precisa aguardar para tentar novamente.

Pré-requisitos

Aplicativo de exemplo de balanceador local do Open Azure API Management

O 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.

Abrir em GitHub Codespaces

Importante

Todas as contas do GitHub podem usar Codespaces por até 60 horas gratuitas por mês com 2 instâncias principais. Para saber mais, confira Armazenamento e horas por núcleo incluídos mensalmente no GitHub Codespaces.

Implantar o balanceador de carga do Gerenciamento de API do Azure

  1. Para implantar o balanceador de carga no Azure, entre na Azure Developer CLI (AZD).

    azd auth login
    
  2. Conclua as instruções de entrada.

  3. Implante o aplicativo do balanceador de carga.

    azd up
    

    Você precisará selecionar uma assinatura e uma região para a implantação. Estas não precisam ser a mesma assinatura e região que o aplicativo de chat.

  4. Aguarde a implantação ser concluída antes de continuar. Isso pode levar até 30 minutos.

Obter ponto de extremidade do balanceador de carga

Execute o seguinte comando bash para ver as variáveis de ambiente da implantação. Você precisará dessas informações mais adiante.

azd env get-values | grep APIM_GATEWAY_URL

Reimplantar o aplicativo de chat com o ponto de extremidade do balanceador de carga

Elas são concluídas no exemplo do aplicativo de chat.

  1. Abra o contêiner de desenvolvimento do aplicativo de chat usando uma das opções a seguir.

    Idioma Codespaces Visual Studio Code
    .NET Abrir em GitHub Codespaces Abrir em contêineres de desenvolvimento
    JavaScript Abrir em GitHub Codespaces Abrir em contêineres de desenvolvimento
    Python Abrir em GitHub Codespaces Abrir em contêineres de desenvolvimento
  2. Entre na Azure Developer CLI (AZD).

    azd auth login
    

    Conclua as instruções de entrada.

  3. Crie um ambiente do AZD com um nome como chat-app.

    azd env new <name>
    
  4. Adicione a variável de ambiente a seguir, que informa ao back-end do aplicativo Chat para usar uma URL personalizada para as solicitações do OpenAI.

    azd env set OPENAI_HOST azure_custom
    
  5. Adicione a variável de ambiente a seguir, que informa ao back-end do aplicativo de chat qual é o valor da URL personalizada para a solicitação do OpenAI.

    azd env set set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
    
  6. Implante o aplicativo de chat.

    azd up
    

Configurar a cota de tokens por minuto (TPM)

Por padrão, cada uma das instâncias do OpenAI no balanceador de carga será implantada com capacidade de 30.000 TPM (tokens por minuto). 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 esse valor.
  • Ao planejar uma capacidade mais alta, aumente o valor.
  1. Use o comando a seguir para alterar o valor.

    azd env set OPENAI_CAPACITY 50
    
  2. Reimplante 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 do aplicativo de chat para limpar esses recursos.

Limpar recursos do balanceador de carga

Execute o seguinte comando do Azure Developer CLI para excluir os recursos do Azure e remover o código-fonte:

azd down --purge --force

As opções fornecem:

  • purge: os recursos excluídos são limpos imediatamente. Isso permite reutilizar o TPM do OpenAI do Azure.
  • force: a exclusão ocorre silenciosamente, sem exigir o consentimento do usuário.

Limpar GitHub Codespaces

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, confira O GitHub Codespaces inclui mensalmente armazenamento e horas de núcleo.

  1. Entre no painel do GitHub Codespaces (https://github.com/codespaces).

  2. Localize seus Codespaces atualmente em execução, originados do repositório azure-samples/openai-apim-lb do GitHub.

    Captura de tela de todos os Codespaces em execução, incluindo seu status e modelos.

  3. Abra o menu de contexto do item Codespaces e selecione Excluir.

    Captura de tela do menu de contexto de um único codespace com a opção “Excluir” realçada.

Obter ajuda

Se você tiver problemas para implantar o balanceador de carga do Gerenciamento de API do Azure, registre o seu problema nos Problemas do repositório.

Código de exemplo

Os exemplos usados neste artigo incluem:

Próxima etapa