Partilhar via


Dimensione 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 chat além dos limites de cota de modelo e token do Serviço OpenAI do Azure. Essa abordagem usa o Gerenciamento de API do Azure para direcionar o tráfego de forma inteligente entre três recursos do Azure OpenAI.

Este artigo requer que você implante dois exemplos separados:

  • Aplicativo de bate-papo:
    • Se você ainda não implantou o aplicativo de bate-papo, aguarde até que o exemplo de balanceador de carga seja implantado.
    • Se você já implantou o aplicativo de chat uma vez, altere a variável de ambiente para oferecer suporte a um ponto de extremidade personalizado para o balanceador de carga e reimplante-o novamente.
  • Balanceador de carga com Gerenciamento de API do Azure.

Nota

Este artigo usa um ou mais modelos de aplicativo de IA como base para os exemplos e orientações no artigo. Os modelos de aplicativos 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 o Gerenciamento de API do Azure

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

Diagrama que mostra a arquitetura do aplicativo de chat com um recurso do Azure OpenAI 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. Essa solução expõe perfeitamente um único ponto de extremidade do Gerenciamento de API para o servidor do seu aplicativo de chat.

Diagrama que mostra a arquitetura do aplicativo de chat com o Gerenciamento de API do Azure na frente de três recursos do Azure OpenAI.

O recurso de Gerenciamento de API, como uma camada de API, fica na frente de um conjunto de recursos do Azure OpenAI. A camada API aplica-se 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 do Azure OpenAI retorna um 200 de volta por meio da camada de API e do servidor de aplicativo de back-end.

Diagrama que mostra um cenário normal com três grupos de pontos de extremidade do Azure OpenAI. O primeiro grupo de dois pontos de extremidade obtém tráfego bem-sucedido.

Quando um recurso é limitado por causa dos limites de quotas, a camada de API poderá tentar novamente outro recurso do Azure OpenAI imediatamente para atender à solicitação original do aplicativo de chat.

Diagrama que mostra um cenário de limitação com um código de erro 429 e um cabeçalho de resposta indicando quantos segundos o cliente deve esperar antes de tentar novamente.

Pré-requisitos

Abra a aplicação de exemplo do balanceador de carga local do Gerenciamento de API do Azure

O GitHub Codespaces executa um contêiner de desenvolvimento gerenciado pelo GitHub com o Visual Studio Code for the Web como interface do usuário. Para o ambiente de desenvolvimento mais simples, use o GitHub Codespaces para que você tenha as ferramentas de desenvolvedor corretas e as dependências pré-instaladas para concluir este artigo.

Abrir no GitHub Codespaces.

Importante

Todas as contas do GitHub podem usar o GitHub Codespaces por até 60 horas gratuitas por mês com duas instâncias principais. Para obter mais informações, consulte GitHub Codespaces mensalmente incluído armazenamento e horas principais.

Implantar o balanceador de carga de Gerenciamento de API do Azure

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

    azd auth login
    
  2. Termine as instruções para iniciar sessão.

  3. Implante o aplicativo 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 bate-papo.

  4. Aguarde a conclusão da implantação antes de continuar. Este processo pode demorar até 30 minutos.

Obter o ponto de extremidade do balanceador de carga

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

azd env get-values | grep APIM_GATEWAY_URL

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

Esses exemplos são concluídos no exemplo de aplicativo de bate-papo.

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

    Idioma Espaços de código do GitHub Visual Studio Code
    .NET Open in GitHub CodespacesAbrir no GitHub Codespaces Open in Dev ContainersAbrir em contêineres de desenvolvimento
    JavaScript Open in GitHub CodespacesAbrir no GitHub Codespaces Open in Dev ContainersAbrir em contêineres de desenvolvimento
    Python Open in GitHub CodespacesAbrir no GitHub Codespaces Open in Dev ContainersAbrir em contêineres de desenvolvimento
  2. Entre na CLI do Desenvolvedor do Azure (AZD):

    azd auth login
    

    Complete as instruções de início de sessão.

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

    azd env new <name>
    
  4. 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
    
  5. Adicione a seguinte variável de ambiente, que 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 <APIM_GATEWAY_URL>
    
  6. Implante o aplicativo de bate-papo:

    azd up
    

Configurar a cota do TPM

Por padrão, cada uma das instâncias do Azure OpenAI no balanceador de carga é configurada com uma capacidade de 30.000 TPM (tokens por minuto). Você pode usar o aplicativo de bate-papo com a confiança de que ele foi criado para ser dimensionado para muitos usuários sem ficar sem cota. Altere este valor quando:

  • Você obtém erros de capacidade de implantação: diminua o valor.
  • Você precisa de maior capacidade: aumente o valor.
  1. Use o seguinte comando para alterar o valor:

    azd env set OPENAI_CAPACITY 50
    
  2. Reimplante o balanceador de carga:

    azd up
    

Clean up resources (Limpar recursos)

Quando terminar de usar o aplicativo de bate-papo e o balanceador de carga, limpe os recursos. Os recursos do Azure criados neste artigo são cobrados na sua assinatura do Azure. Se você não espera precisar desses recursos no futuro, exclua-os para evitar incorrer em mais cobranças.

Limpar os recursos do aplicativo de bate-papo

Volte ao artigo do aplicativo de bate-papo para limpar esses recursos.

Limpar os recursos do balanceador de carga

Execute o seguinte comando da CLI do Desenvolvedor do Azure 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 imediatamente limpos. Você pode reutilizar os tokens do Azure OpenAI por minuto.
  • force: A exclusão acontece silenciosamente, sem exigir o consentimento do usuário.

Clean up resources (Limpar recursos)

Excluir o ambiente do GitHub Codespaces garante que o utilizador possa maximizar a quota gratuita de horas por núcleo disponível na sua conta.

Importante

Para obter mais informações sobre os direitos da sua conta do GitHub, consulte Codespaces do GitHub mensalmente incluídos armazenamento e horas principais.

  1. Faça login no painel do GitHub Codespaces.

  2. Localize seus espaços de código em execução que são originados do repositório azure-samples/openai-apim-lb GitHub.

    Captura de tela que mostra todos os espaços de código em execução, incluindo seu status e modelos.

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

    Captura de tela que mostra o menu de contexto de um único espaço de código com a opção Excluir realçada.

Obter ajuda

Se tiver problemas para implantar o balanceador de carga do Gestão de API do Azure, adicione o seu problema à página de Problemas do repositório.

Código de exemplo

Os exemplos usados neste artigo incluem:

Próximo passo