Dimensionar o OpenAI do Azure para JavaScript com o Gerenciamento de API do Azure
Saiba como adicionar o balanceamento de carga de nível empresarial ao seu aplicativo para estender o aplicativo de chat além do token OpenAI do Azure e dos limites de cota de modelo. Essa abordagem usa o Gerenciamento de API do Azure para direcionar de forma inteligente o tráfego entre três recursos do OpenAI do Azure.
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.
Load Balancer com o Gerenciamento de API do Azure
Observação
Este artigo usa um ou mais modelos de aplicativo de IA como base para os exemplos e as diretrizes no artigo. Os modelos de aplicativo de IA fornecem implementações de referência regulares e fáceis de implantar que ajudam a garantir um ponto de partida de alta qualidade para os aplicativos de IA.
Arquitetura para balanceamento de carga do OpenAI do Azure 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.
Para usar o aplicativo de chat 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 para o servidor do aplicativo de chat.
O recurso de Gerenciamento de API do Azure, como uma camada de API, fica à frente de um conjunto de recursos do OpenAI do Azure. 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 OpenAI do Azure retorna 200 por meio da camada de API e do servidor de aplicativos de back-end.
Quando um recurso é limitado devido a limites de cota, a camada de API pode repetir um recurso diferente do Azure OpenAI imediatamente para atender à solicitação original do aplicativo de chat.
Pré-requisitos
Assinatura do Azure. Crie um gratuitamente
Acesso permitido ao OpenAI do Azure na assinatura do Azure desejada.
No momento, o acesso a esse serviço é permitido somente por aplicativo. Você pode solicitar acesso ao Serviço OpenAI do Azure preenchendo o formulário em https://aka.ms/oai/access.
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.
- Somente é necessário ter uma conta do GitHub para usar Codespaces
Abrir o aplicativo de exemplo do balanceador local do Gerenciamento de API do Azure
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.
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
Para implantar o balanceador de carga no Azure, entre na Azure Developer CLI (AZD).
azd auth login
Conclua as instruções de entrada.
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.
Aguarde a implantação ser concluída antes de continuar. Esta etapa pode levar até 30 minutos.
Obter ponto de extremidade do balanceador de carga
Execute o comando bash a seguir 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.
Abra o contêiner de desenvolvimento do aplicativo de chat usando uma das opções a seguir.
Idioma Codespaces Visual Studio Code .NET JavaScript Python Entre na Azure Developer CLI (AZD).
azd auth login
Conclua as instruções de entrada.
Crie um ambiente do AZD com um nome como
chat-app
.azd env new <name>
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
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 AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
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.
Use o comando a seguir para alterar o valor.
azd env set OPENAI_CAPACITY 50
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 sobre o 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.
Entre no painel do GitHub Codespaces (https://github.com/codespaces).
Localize seus Codespaces atualmente em execução, originados do repositório
azure-samples/openai-apim-lb
do GitHub.Abra o menu de contexto do item Codespaces e selecione Excluir.
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
- Exibir dados de diagnóstico do Gerenciamento de API do Azure no Azure Monitor
- Usar o Teste de Carga do Azure para testar a carga do aplicativo de chat com