Compartir a través de


Introducción a los puntos de conexión privados de chat para Python

En este artículo se muestra cómo implementar y ejecutar el ejemplo de aplicación de chat empresarial de para Python accesible por puntos de conexión privados.

En este ejemplo se implementa una aplicación de chat mediante Python, Azure OpenAI Service y Retrieval Augmented Generation (RAG) en Azure AI Search para obtener respuestas sobre los beneficios para empleados en una empresa ficticia. La aplicación se inicializa con archivos PDF que incluyen el manual de empleados, un documento de beneficios y una lista de roles y expectativas de la empresa.

Siguiendo las instrucciones de este artículo, puede:

  • Implemente una aplicación de chat en Azure para el acceso público en un explorador web.
  • Vuelva a implementar una aplicación de chat con puntos de conexión privados.

Después de finalizar este procedimiento, puede empezar a modificar el nuevo proyecto con el código personalizado y volver a implementar, sabiendo que la aplicación de chat solo es accesible a través de la red privada.

Introducción a la arquitectura

La implementación predeterminada crea una aplicación de chat con puntos de conexión públicos.

Diagrama que muestra la arquitectura de red de una aplicación de chat RAG básica.

Para las aplicaciones de chat enriquecidas con datos privados, es fundamental proteger el acceso a la aplicación de chat. En este artículo se presenta una solución mediante una red virtual.

Diagrama que muestra la arquitectura de red con todos los servicios dentro de una red virtual de Azure.

Dentro de la red virtual, hay una subred independiente para la aplicación de Azure App Service frente a los otros servicios de Azure back-end. Esta estructura facilita la aplicación de diferentes reglas de grupo de seguridad de red a cada subred.

Diagrama que muestra una subred de aplicación de chat y una subred de back-end dentro de la red virtual.

Dentro de la red virtual, los servicios usan puntos de conexión privados para comunicarse entre sí. Cada punto de conexión privado está asociado a una zona privada del sistema de nombres de dominio (DNS) para resolver el nombre del punto de conexión privado en una dirección IP dentro de la red virtual.

Diagrama que muestra el punto de conexión privado y la zona DNS privada para Azure OpenAI dentro de la red virtual.

Pasos de implementación

Se recomienda implementar la solución dos veces. Implemente una vez con acceso público para validar que la aplicación de chat funciona correctamente. Vuelva a implementar con acceso privado para proteger la aplicación de chat mediante una red virtual.

Prerrequisitos

Hay disponible un entorno de contenedor de desarrollo con todas las dependencias necesarias para completar este artículo. Puede ejecutar el contenedor de desarrollo en GitHub Codespaces (en un explorador) o localmente mediante Visual Studio Code.

Para usar este artículo, necesita los siguientes requisitos previos.

Costo de uso de los recursos de ejemplo

La mayoría de los recursos usados en esta arquitectura se encuentran en los planes de tarifa básicos o basados en el consumo. Esto significa que solo paga por lo que usa y los cargos suelen ser mínimos durante el desarrollo o las pruebas.

La implementación con redes privadas agrega un costo adicional a la implementación. Una vez que haya terminado de evaluar o implementar la aplicación, puede eliminar todos los recursos aprovisionados para evitar cargos en curso.

Para obtener un desglose detallado de los costos esperados, consulte antes de comenzar en el repositorio de GitHub del ejemplo.

Entorno de desarrollo abierto

Use las instrucciones siguientes para implementar un entorno de desarrollo preconfigurado que contenga todas las dependencias necesarias para completar este artículo.

GitHub Codespaces ejecuta un contenedor de desarrollo administrado por GitHub con Visual Studio Code para web como interfaz de usuario. Para el entorno de desarrollo más sencillo, use GitHub Codespaces para que tenga las herramientas de desarrollo y las dependencias correctas preinstaladas para completar este artículo.

Importante

Todas las cuentas de GitHub pueden usar GitHub Codespaces durante hasta 60 horas gratuitas cada mes con dos instancias principales. Para obtener más información, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.

  1. Inicie el proceso para crear un nuevo espacio de código de GitHub en la rama main del repositorio Azure-Samples/azure-search-openai-demo GitHub.

  2. Haga clic con el botón derecho en el siguiente botón y seleccione Abrir el enlace en una nueva ventana para tener el entorno de desarrollo y la documentación disponibles al mismo tiempo.

    Abrir en GitHub Codespaces.

  3. En la página Crear codespace, revise las opciones de configuración de codespace y, a continuación, seleccione Crear codespace.

    Captura de pantalla que muestra la pantalla de confirmación antes de crear un nuevo espacio de código.

  4. Espere a que se inicie Codespace. Este proceso de inicio puede tardar unos minutos.

  5. En el terminal de la parte inferior de la pantalla, inicie sesión en Azure con la CLI para desarrolladores de Azure:

    azd auth login
    
  6. Copie el código del terminal y péguelo en un explorador. Siga las instrucciones para autenticarse con su cuenta de Azure.

Las tareas restantes de este artículo tienen lugar en el contexto de este contenedor de desarrollo.

Configuración personalizada

Esta solución configura e implementa la infraestructura en función de las opciones personalizadas configuradas con la CLI para desarrolladores de Azure. En la tabla siguiente se explica la configuración personalizada de esta solución.

Ajuste Descripción
AZURE_PUBLIC_NETWORK_ACCESS Controla el valor del acceso a la red pública en los recursos de Azure admitidos. Los valores válidos son Enabled o Disabled.
AZURE_USE_PRIVATE_ENDPOINT Controla la implementación de puntos de conexión privados, que conectan recursos de Azure a la red virtual. El valor TRUE indica que los puntos de conexión privados se despliegan para garantizar la conectividad.
AZURE_USE_VPN_GATEWAY Controla la implementación de una puerta de enlace de VPN para la red virtual. Si no usa este y el acceso público está deshabilitado, necesita una manera diferente de conectarse a la red virtual. El TRUE valor significa que se implementa una puerta de enlace de VPN para la conectividad.

Implementación de la aplicación de chat

La primera implementación crea los recursos y proporciona un punto de conexión accesible públicamente.

  1. Ejecute el siguiente comando para configurar esta solución para el acceso público:

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Enabled
    

    Cuando se le pida un nombre de entorno, recuerde que el nombre del entorno se usa para crear el grupo de recursos. Escriba un nombre descriptivo. Si está en un equipo o en una organización, incluya el nombre, como en morgan-chat-private-endpoints. Anote el nombre del entorno. Lo necesitará más adelante para encontrar los recursos en Azure Portal.

  2. Ejecute el siguiente comando para incluir el aprovisionamiento de los recursos de red virtual. Recuerde que la implementación no restringe el acceso hasta la segunda implementación.

    azd env set AZURE_USE_PRIVATE_ENDPOINT true
    
  3. Implemente la solución con el siguiente comando:

    azd up
    

    Los recursos de aprovisionamiento son la parte más lenta del proceso de implementación. Espere a que finalice la implementación antes de continuar.

  4. Al final del proceso de implementación, aparece el punto de conexión de la aplicación. Copie ese punto de conexión en un explorador para abrir la aplicación de chat. Seleccione una de las preguntas de las tarjetas y espere la respuesta.

    Anote la dirección URL del punto de conexión porque la necesita más adelante en el artículo.

Implementación de la aplicación de chat en Azure con acceso privado

Cambie la configuración de implementación para proteger la aplicación de chat para el acceso privado.

  1. Ejecute el siguiente comando para usar una puerta de enlace de VPN para acceder a la red virtual:

    azd env set AZURE_USE_VPN_GATEWAY true
    
  2. Ejecute el comando siguiente para desactivar el acceso público:

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Disabled
    
    
  3. Ejecute el siguiente comando para cambiar la configuración del recurso. Este comando no vuelve a implementar el código de la aplicación porque solo ha cambiado la configuración de la infraestructura.

    azd provision
    
  4. Una vez finalizado el aprovisionamiento, vuelva a abrir la aplicación de chat en un explorador. La aplicación de chat ya no es accesible porque el punto de conexión público está deshabilitado.

Acceso a la aplicación de chat

Para acceder a la aplicación de chat, use una herramienta como azure VPN Gateway o Azure Virtual Desktop. Recuerde que cualquier herramienta que use para acceder a la aplicación debe ser segura y compatible con las directivas de seguridad de su organización.

Limpieza de recursos

Los pasos siguientes le guiarán por el proceso de limpieza de los recursos que usó.

La eliminación del entorno de GitHub Codespaces garantiza que pueda maximizar la cantidad de derechos de horas gratuitas por núcleo que obtiene para su cuenta.

Importante

Para obtener más información sobre los derechos de la cuenta de GitHub, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.

  1. Inicie sesión en el panel de GitHub Codespaces.

  2. Busque los codespaces que se ejecutan actualmente a partir del repositorio de GitHub Azure-Samples/azure-search-openai-demo.

    Captura de pantalla que muestra todos los espacios de código en ejecución, incluido su estado y sus plantillas.

  3. Abra el menú contextual del espacio de código y seleccione Eliminar.

    Captura de pantalla que muestra el menú contextual de un solo espacio de código con la opción Eliminar resaltada.

Obtener ayuda

Este repositorio de muestras ofrece información para la resolución de problemas.

Si su problema no se resuelve, agréguelo a la página web de problemas del repositorio.