Introdução aos endpoints 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 bate-papo usando Python, Serviço OpenAI do Azure e Geração Aumentada de Recuperação (RAG) na Pesquisa de IA do Azure para obter respostas sobre os benefícios dos 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.
  • Reimplemente uma aplicação 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 bate-papo é acessível somente através da rede privada.

Visão geral da arquitetura

A implantação padrão cria uma aplicação de bate-papo com pontos de extremidade públicos.

Diagrama que mostra a arquitetura de rede de um aplicativo de bate-papo RAG básico.

Para aplicativos de bate-papo enriquecidos com dados privados, proteger o acesso ao seu aplicativo de bate-papo é 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.

Dentro da rede virtual, há uma sub-rede separada para a aplicação do Serviço de Aplicações do Azure em comparação com os outros serviços back-end do Azure. Essa estrutura facilita a aplicação de diferentes regras de grupo de segurança de rede 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.

Dentro da rede virtual, os serviços usam pontos de extremidade privados para se comunicar uns com os outros. Cada ponto de extremidade privado é 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 para o Azure OpenAI na rede virtual.

Etapas de implantação

Implemente a solução duas vezes. Implante uma vez com acesso público para validar se o aplicativo de bate-papo está funcionando corretamente. Implante novamente com acesso privado para proteger seu aplicativo de bate-papo usando uma rede virtual.

Pré-requisitos

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

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

Custo de uso para recursos de amostra

A maioria dos recursos usados nessa arquitetura se enquadra em níveis de preços básicos ou baseados no consumo. Este modelo de preços significa que só paga pelo que utiliza, e as cobranças são normalmente mínimas durante o desenvolvimento ou testes.

Implementar com rede privada acrescenta um custo extra à sua implementação. Quando terminar de avaliar ou implementar a aplicação, elimine todos os recursos provisionados para evitar cobranças contínuas.

Para uma análise detalhada dos custos esperados, consulte a secção Antes de começar no repositório do GitHub para o exemplo.

Ambiente de desenvolvimento aberto

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.

GitHub Codespaces executa um contentor de desenvolvimento gerido pelo GitHub com o Visual Studio Code for the Web como interface de 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 o armazenamento mensal incluído e as horas principais do GitHub Codespaces.

  1. Inicie o processo para criar um novo espaço de código GitHub na main ramificação do repositório GitHub 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 no GitHub Codespaces.

  3. Na página Criar espaço de código , revise as definições de configuração do espaço de código e selecione Criar espaço de código.

    Captura de tela que mostra a tela de confirmação antes de criar um novo espaço de código.

  4. Aguarde até que o codespace inicie. Este processo de arranque pode demorar alguns minutos.

  5. No terminal na parte inferior do ecrã, inicie sessão no Azure com a CLI do Azure Developer.

    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.

Definições personalizadas

Esta solução configura e implementa a infraestrutura com base em definições personalizadas que configura usando a CLI do Azure Developer. A tabela a seguir explica as configurações personalizadas para esta solução.

Configurações Descrição
AZURE_PUBLIC_NETWORK_ACCESS Controla o valor do acesso à rede pública em recursos suportados do Azure. 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 foram implantados pontos de extremidade privados para conectividade.
AZURE_USE_VPN_GATEWAY Controla a implementação de um gateway VPN para a rede virtual. Se não usares esta definição e desativares o acesso público, precisas de uma forma diferente de te ligares à rede virtual. O valor TRUE significa que um gateway VPN é implementado para garantir a conectividade.

Implantar o aplicativo de bate-papo

A primeira implantação cria os recursos e fornece um endpoint acessível ao público.

  1. Execute o seguinte comando para configurar esta 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 organização, inclua seu nome, como em morgan-chat-private-endpoints. Anote o nome do ambiente. Você precisará dele mais tarde para encontrar os recursos no portal do Azure.

  2. Execute o seguinte comando 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 a conclusão da implantação antes de continuar.

  4. No término do processo de implantação, o ponto de extremidade da aplicação é exibido. Copie este endpoint num navegador para abrir a aplicação de chat. Selecione uma das perguntas nos cartões e, em seguida, aguarde a resposta.

    Anote o URL do ponto de extremidade porque você precisa dele novamente mais adiante 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 VPN para aceder à 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 seguinte comando para alterar a configuração do recurso. Este comando não redistribui o código da aplicação porque apenas a configuração da infraestrutura mudou.

    azd provision
    
  4. Após a conclusão do provisionamento, abra o aplicativo de bate-papo em um navegador novamente. A aplicação de bate-papo não está mais acessível porque o endpoint público está desativado.

Acesse o aplicativo de bate-papo

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

Limpeza de recursos

As etapas a seguir orientam você pelo processo de limpeza dos recursos usados.

Limpeza de recursos do Azure

Se não esperas precisar dos recursos do Azure no futuro, elimina-os para evitar custos contínuos.

Execute o seguinte comando Azure Developer CLI para eliminar os recursos do Azure:

azd down --purge

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 incluído mensalmente e horas de uso base do GitHub Codespaces.

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

  2. Localize seus espaços de código em execução no momento que são originados do repositório GitHub Azure-Samples/azure-search-openai-demo .

    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 espaço de código 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

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

Se o problema não for resolvido, adicione o problema à página Problemas do repositório.