Introdução aos pontos de extremidade privados de chat para Python

Este artigo mostra como implantar e executar o exemplo de aplicativo de chat corporativo para Python acessível por pontos de extremidade privados.

Este exemplo implementa um aplicativo de chat usando o Python, o Serviço OpenAI do Azure e a RAG (Geração Aumentada de Recuperação) na Pesquisa de IA do Azure para obter respostas sobre os benefícios para os funcionários em uma empresa fictícia. O aplicativo é semeado com arquivos PDF que incluem o manual do funcionário, um documento de benefícios e uma lista de funções e expectativas da empresa.

Seguindo as instruções neste artigo, você:

  • Implante um aplicativo de chat no Azure para acesso público em um navegador da Web.
  • Reimplantar um aplicativo de chat com endpoints privados.

Depois de concluir este procedimento, você pode começar a modificar o novo projeto com seu código personalizado e reimplantar, sabendo que seu aplicativo de chat só está acessível por meio da rede privada.

Visão geral da arquitetura

A implantação padrão cria um aplicativo de chat com endpoints públicos.

Diagrama que mostra a arquitetura de rede de um aplicativo de chat rag básico.

Para aplicativos de chat enriquecidos com dados privados, proteger o acesso ao seu aplicativo de chat é crucial. Este artigo apresenta uma solução usando uma rede virtual.

Diagrama que mostra a arquitetura de rede com todos os serviços dentro de uma rede virtual do Azure.

Na rede virtual, há uma sub-rede separada para o aplicativo do Serviço de Aplicativo do Azure em comparação com os outros serviços de back-end do Azure. Essa estrutura facilita a aplicação de regras de grupo de segurança de rede diferentes a cada sub-rede.

Diagrama que mostra uma sub-rede de aplicativo de chat e uma sub-rede de back-end dentro da rede virtual.

Na rede virtual, os serviços usam pontos de extremidade privados para se comunicarem entre si. Cada ponto de extremidade privado está associado a uma zona DNS (Sistema de Nomes de Domínio) privada para resolver o nome do ponto de extremidade privado para um endereço IP dentro da rede virtual.

Diagrama que mostra o ponto de extremidade privado e a zona DNS privada do Azure OpenAI na rede virtual.

Etapas de implantação

Recomendamos que você implante a solução duas vezes. Implante uma vez com acesso público para validar se o aplicativo de chat está funcionando corretamente. Implante novamente com acesso privado para proteger seu aplicativo de chat usando uma rede virtual.

Pré-requisitos

Um ambiente de contêiner de desenvolvimento está disponível com todas as dependências necessárias para concluir este artigo. Você pode executar o contêiner de desenvolvimento em Codespaces do GitHub (em um navegador) ou localmente usando o Visual Studio Code.

Para usar este artigo, você precisa dos pré-requisitos a seguir.

Custo de uso para exemplos de recursos

A maioria dos recursos usados nessa arquitetura se enquadra nos tipos de preços básicos ou baseados em consumo. Isso significa que você paga apenas pelo que usa e os encargos normalmente são mínimos durante o desenvolvimento ou teste.

A implantação com rede privada adiciona um custo extra à sua implantação. Quando terminar de avaliar ou implantar o aplicativo, você poderá excluir todos os recursos provisionados para evitar encargos contínuos.

Para obter um detalhamento dos custos esperados, consulte o Antes de começar no repositório GitHub para o exemplo.

Abrir o ambiente de desenvolvimento

Use as instruções a seguir para implantar um ambiente de desenvolvimento pré-configurado contendo todas as dependências necessárias para concluir este artigo.

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 o GitHub Codespaces por até 60 horas grátis por mês com duas instâncias de núcleo. Para saber mais, confira Armazenamento e horas por núcleo incluídos mensalmente no GitHub Codespaces.

  1. Inicie o processo para criar um novo codespace do GitHub no branch main do repositório GitHub do Azure-Samples/azure-search-openai-demo.

  2. Clique com o botão direito do mouse no botão a seguir e selecione Abrir link em novas janelas para ter o ambiente de desenvolvimento e a documentação disponíveis ao mesmo tempo.

    Abrir em codespaces do GitHub.

  3. Na página Criar codespace, revise as configurações do codespace e selecione Criar codespace.

    Captura de tela que mostra a tela de confirmação antes de criar um novo codespace.

  4. Aguarde até que o codespace seja iniciado. Esse processo de inicialização pode levar alguns minutos.

  5. No terminal na parte inferior da tela, faça login no Azure com a CLI de Desenvolvedor do Azure.

    azd auth login
    
  6. Copie o código do terminal e cole-o em um navegador. Siga as instruções para autenticar com sua conta do Azure.

As tarefas restantes neste artigo ocorrem no contexto desse contêiner de desenvolvimento.

Configurações personalizadas

Essa solução configura e implanta a infraestrutura com base em configurações personalizadas configuradas com a CLI do Desenvolvedor do Azure. A tabela a seguir explica as configurações personalizadas para essa solução.

Configuração Descrição
AZURE_PUBLIC_NETWORK_ACCESS Controla o valor do acesso à rede pública em recursos do Azure com suporte. Os valores válidos são Enabled ou Disabled.
AZURE_USE_PRIVATE_ENDPOINT Controla a implantação de pontos de extremidade privados, que conectam recursos do Azure à rede virtual. O valor TRUE significa que os pontos de extremidade privados são implantados para conectividade.
AZURE_USE_VPN_GATEWAY Controla a implantação de um gateway de VPN para a rede virtual. Se você não usar isso e o acesso público estiver desabilitado, você precisará de uma maneira diferente de se conectar à rede virtual. O TRUE valor significa que um gateway de VPN é implantado para conectividade.

Implantar o aplicativo de chat

A primeira implantação cria os recursos e fornece um ponto de extremidade acessível publicamente.

  1. Execute o seguinte comando para configurar essa solução para acesso público:

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Enabled
    

    Quando for solicitado um nome de ambiente, lembre-se de que o nome do ambiente é usado para criar o grupo de recursos. Insira um nome significativo. Se você estiver em uma equipe ou em uma organização, inclua seu nome, como em morgan-chat-private-endpoints. Anote o nome do ambiente. Você precisa dele mais tarde para encontrar os recursos no portal do Azure.

  2. Execute o comando a seguir para incluir o provisionamento dos recursos de rede virtual. Lembre-se de que a implantação não restringe o acesso até a segunda implantação.

    azd env set AZURE_USE_PRIVATE_ENDPOINT true
    
  3. Implante a solução com o seguinte comando:

    azd up
    

    O provisionamento de recursos é a parte mais demorada do processo de implantação. Aguarde até que a implantação seja concluída antes de continuar.

  4. No final do processo de implantação, o endpoint do aplicativo é exibido. Copie o endpoint em um navegador para abrir o aplicativo de chat. Selecione uma das perguntas nos cartões e aguarde a resposta.

    Anote a URL do ponto de extremidade porque você precisará dela novamente mais tarde no artigo.

Implantar o aplicativo de chat no Azure com acesso privado

Altere a configuração de implantação para proteger o aplicativo de chat para acesso privado.

  1. Execute o seguinte comando para usar um gateway de VPN para acessar a rede virtual:

    azd env set AZURE_USE_VPN_GATEWAY true
    
  2. Execute o seguinte comando para desativar o acesso público:

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Disabled
    
    
  3. Execute o comando a seguir para alterar a configuração do recurso. Esse comando não reimplanta o código do aplicativo porque apenas a configuração da infraestrutura foi alterada.

    azd provision
    
  4. Depois que o provisionamento for concluído, abra o aplicativo de chat em um navegador novamente. O aplicativo de chat não está mais acessível porque a interface pública está desabilitada.

Acessar o aplicativo de chat

Para acessar o aplicativo de chat, use uma ferramenta como o Gateway VPN do Azure ou a Área de Trabalho Virtual do Azure . Lembre-se de que qualquer ferramenta usada para acessar o aplicativo deve estar segura e em conformidade com as políticas de segurança da sua organização.

Limpar recursos

As etapas a seguir explicam o processo de limpeza dos recursos usados.

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.

  2. Localize seus codespaces em execução que são originados no repositório do GitHub Azure-Samples/azure-search-openai-demo.

    captura de tela que mostra todos os codespaces em execução, incluindo seu status e modelos.

  3. Abra o menu de contexto do codespace e selecione Excluir.

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

Obter ajuda

Este repositório de exemplo oferece informações de solução de problemas.

Se o problema não for resolvido, inclua seu problema na página da Web Problemas do repositório.