Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Saiba como adicionar balanceamento de carga ao seu aplicativo para estender o aplicativo de chat além dos limites de token e cota de modelo do Serviço Azure OpenAI. 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 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.
A aplicação de chat está disponível nos seguintes idiomas:
- .NET
- JavaScript
- Píton
Aplicativo de balanceador de carga
Nota
Este artigo usa um ou mais modelos de aplicações de IA como base para os exemplos e a orientação 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 Aplicações de Contentores 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.
Para usar o aplicativo de bate-papo sem atingir esses limites, use uma solução com balanceamento de carga com Aplicativos de contêiner. Esta solução expõe perfeitamente um único endpoint de Container Apps para o seu servidor da aplicação de chat.
O aplicativo de contêiner fica na frente de um conjunto de recursos do Azure OpenAI. A aplicação de contêiner resolve dois cenários: normal e controlado. Durante um cenário normal em que a cota de tokens e modelos está disponível, o recurso OpenAI do Azure devolve um 200 através da aplicação de contentor e do servidor de aplicações.
Quando um recurso está em um cenário de limitação devido aos limites de cota, a aplicação em contentor pode tentar novamente um recurso diferente do Azure OpenAI imediatamente para atender à solicitação original da aplicação de chat.
Pré-requisitos
Subscrição do Azure. Crie um gratuitamente
Os contentores de desenvolvimento estão disponíveis para ambos os exemplos, com todas as dependências necessárias para completar este artigo. Você pode executar os contêineres de desenvolvimento no GitHub Codespaces (em um navegador) ou localmente usando o Visual Studio Code.
- Codespaces (recomendado)
- Visual Studio Code
- Uma conta do GitHub.
Abra um exemplo de aplicativo do balanceador de carga dos Aplicativos de Contêiner
- GitHub Codespaces (recomendado)
- Visual Studio Code
O GitHub Codespaces executa um contentor de desenvolvimento gerido pelo GitHub com o Visual Studio Code for the Web como interface do utilizador. 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.
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 mais informações, consulte Armazenamento e horas principais incluídos mensalmente no GitHub Codespaces.
Implantar o balanceador de carga de 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 de pós-provisão:
azd config set auth.useAzCliAuth "true"
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.
Aguarde a conclusão da implantação antes de continuar.
Obter o endpoint de implantação
Utilize o seguinte comando para mostrar o endpoint implementado para a aplicação de contentor.
azd env get-values
Copie o valor do
CONTAINER_APP_URL
. Você irá usá-lo na próxima secção.
Reimplantar a aplicação de chat com o endpoint do balanceador de carga
Esses exemplos são concluídos no exemplo de aplicativo de bate-papo.
- Implantação inicial
- Reafectação
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 Código do Visual Studio .NET Abrir no GitHub Codespaces Abrir em Dev Containers Javascript Abrir no GitHub Codespaces Abrir em Dev Containers Python Abrir no GitHub Codespaces Abrir em Dev Containers Entre na CLI do Desenvolvedor do Azure (
AZD
):azd auth login
Termine as instruções para iniciar sessão.
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 seguinte variável de ambiente. Substitua
<CONTAINER_APP_URL>
pelo 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 bate-papo:
azd up
Use o aplicativo de bate-papo com a confiança de que ele pode ser dimensionado para muitos usuários sem ficar sem cota.
Transmitir logs para ver os resultados do balanceador de carga
No portal do Azure, pesquise o 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 bate-papo para gerar tráfego no log.
Procure os logs, que fazem referência aos recursos do Azure OpenAI. Cada um dos três recursos tem sua identidade numérica no comentário de log que começa com
Proxying to https://openai3
, onde3
indica o terceiro recurso do Azure OpenAI.
Quando o balanceador de carga recebe o status de que a solicitação excede a cota, ele gira automaticamente para outro recurso.
Configurar a cota do TPM
Por predefinição, cada uma das instâncias do Azure OpenAI no balanceador de carga é implantada com uma capacidade de 30.000 tokens por minuto (TPM). Você pode usar o aplicativo de bate-papo com a confiança de que ele pode ser dimensionado para muitos usuários sem ficar sem cota. Altere este valor quando:
- Recebe erros de capacidade de implementaçã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
Reimplante o balanceador de carga:
azd up
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 recursos do aplicativo de bate-papo
Volte ao artigo sobre a aplicação de chat para organizar os recursos:
- .NET
- JavaScript
- Píton
Limpar recursos do balanceador de upload
Exclua os recursos do Azure e remova o código-fonte:
azd down --purge --force
Os interruptores fornecem:
-
purge
: Os recursos excluídos são imediatamente limpos para que você possa reutilizar os tokens do Serviço OpenAI do Azure por minuto. -
force
: A exclusão acontece silenciosamente, sem exigir o consentimento do utilizador.
Limpar os Codespaces do GitHub e o Visual Studio Code
- Espaços de Código do GitHub
- Visual Studio Code
Excluir o ambiente do GitHub Codespaces garante que possais maximizar o número de horas gratuitas por núcleo a que tendes direito na vossa conta.
Importante
Para obter mais informações sobre os direitos da sua conta do GitHub, consulte Armazenamento e horas principais incluídos mensalmente no GitHub Codespaces.
Faça login no painel de controlo do GitHub Codespaces.
Localize seus espaços de código em execução que são originados do repositório azure-samples/openai-aca-lb GitHub.
Abra o menu de contexto para o espaço de código e, em seguida, selecione Excluir.
Obter ajuda
Se você tiver problemas para implantar o balanceador de carga dos Aplicativos de Contêiner do Azure, adicione seu problema à página da Web Problemas do repositório.
Código de exemplo
Os exemplos usados neste artigo incluem:
- Aplicativo de bate-papo JavaScript com "RAG"
- Balanceador de Carga com Aplicações de Contêiner do Azure
Próximo passo
- Use Teste de Carga do Azure para testar a carga da sua aplicação de chat com o Serviço de Teste de Carga do Azure.
- Saiba mais sobre como o AZD é usado neste modelo:
- Tech postagem no blog da comunidade
- série de vídeos Reator