Partilhar via


Dimensione o Azure OpenAI para Python 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.

Observação

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. Esta solução expõe de forma integrada um único ponto de extremidade da Gestão de API para o servidor da sua aplicação 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 OpenAI do Azure 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 devido aos limites de quota, a camada de API pode tentar utilizar um recurso diferente 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 resposta de erro 429 e um cabeçalho de resposta indicando quantos segundos o cliente deve esperar antes de tentar novamente.

Pré-requisitos

Abra o aplicativo de exemplo de balanceador local de Gerenciamento de API do Azure

GitHub Codespaces executa um contêiner de desenvolvimento gerenciado pelo GitHub com 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 os Codespaces do GitHub incluem mensalmente o armazenamento e as 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. Conclua as instruções de início de 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 Código do Visual Studio
    .NET Abrir no Codespaces do GitHub Abrir em contentores de desenvolvimento
    Javascript Abrir nos Codespaces do GitHub Abrir em contentores de desenvolvimento
    Python Abrir no Codespaces do GitHub Abrir em contentores de desenvolvimento
  2. Entre na CLI do Desenvolvedor do Azure (AZD):

    azd auth login
    

    Complete as instruções para iniciar 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 é implantada com uma capacidade de 30.000 tokens por minuto (TPM). Pode usar a aplicação de chat com a confiança de que foi concebida para se adaptar a muitos utilizadores sem ultrapassar o limite. Altere este valor quando:

  • Se surgirem erros de capacidade de implementação, reduza o valor.
  • Precisa de uma capacidade maior: 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
    

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 eliminados são imediatamente removidos. Você pode reutilizar os tokens do Azure OpenAI por minuto.
  • force: A exclusão acontece silenciosamente, sem exigir o consentimento do usuário.

Limpar recursos

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 o armazenamento incluído mensalmente nos Codespaces do GitHub e as horas de núcleo.

  1. Faça login no painel de controlo 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 a implantar o balanceador de carga do Gerenciamento de API do Azure, adicione o seu problema à página de Problemas do repositório na secção .

Código de exemplo

Os exemplos usados neste artigo incluem: