El surgimiento de la IA generativa ha marcado el comienzo de una nueva era de posibilidades, que permite la creación de texto, imágenes, códigos y más similares a los humanos. Sin embargo, por muy interesantes que sean estos avances, los científicos de datos a menudo enfrentan desafíos cuando se trata de desarrollar interfaces de usuario y de crear prototipos e interactuar con sus usuarios comerciales. Tradicionalmente, la creación de aplicaciones frontend y backend ha requerido conocimientos de marcos de desarrollo web y gestión de infraestructura, lo que puede resultar desalentador para quienes tienen experiencia principalmente en ciencia de datos y aprendizaje automático.

AWS proporciona un potente conjunto de herramientas y servicios que simplifican el proceso de creación e implementación de aplicaciones de IA generativa, incluso para aquellos con experiencia limitada en desarrollo frontend y backend. En esta publicación, exploramos una solución práctica que utiliza iluminadouna biblioteca de Python para crear aplicaciones de datos interactivas y servicios de AWS como Servicio de contenedor elástico de Amazon (Amazon ECS), Cognito Amazonasy el Kit de desarrollo de la nube de AWS (AWS CDK) para crear una aplicación de IA generativa fácil de usar con autenticación e implementación.

Descripción general de la solución

Para esta solución, implementa una aplicación de demostración que proporciona una interfaz de usuario limpia e intuitiva para interactuar con un modelo de IA generativa, como se ilustra en la siguiente captura de pantalla.

La interfaz de usuario consta de un área de entrada de texto donde los usuarios pueden ingresar sus consultas y un área de salida para mostrar los resultados generados.

La interfaz predeterminada es simple y directa, pero puede ampliarla y personalizarla para que se ajuste a sus necesidades específicas. Con la flexibilidad de Streamlit, puede agregar funciones adicionales, ajustar el estilo e integrar otras funcionalidades según lo requiera su caso de uso.

La solución que exploramos consta de dos componentes principales: una aplicación Python para la interfaz de usuario y una arquitectura de implementación de AWS para alojar y servir la aplicación de forma segura.

La aplicación Python utiliza la biblioteca Streamlit para proporcionar una interfaz fácil de usar para interactuar con un modelo de IA generativa. Streamlit permite a los científicos de datos crear aplicaciones web interactivas utilizando Python, utilizando sus habilidades y conocimientos existentes. Con Streamlit, puede crear e iterar rápidamente su aplicación sin la necesidad de tener una amplia experiencia en desarrollo frontend.

La arquitectura de implementación de AWS garantiza que la aplicación Python esté alojada y sea accesible desde Internet para los usuarios autenticados. La solución utiliza los siguientes componentes clave:

  • Amazon ECS y AWS Fargate Proporcionar una plataforma de orquestación de contenedores sin servidor para ejecutar la aplicación Python.
  • Cognito Amazonas maneja la autenticación del usuario, asegurándose de que solo los usuarios autorizados puedan acceder a la aplicación de IA generativa
  • Balanceador de carga de aplicaciones (ALB) y Amazon CloudFront son responsables del equilibrio de carga y la entrega de contenido, por lo que la aplicación está disponible para usuarios de todo el mundo.
  • El CDK de AWS le permite definir y aprovisionar recursos de infraestructura de AWS utilizando lenguajes de programación familiares como Python
  • Roca Amazónica es un servicio totalmente gestionado que ofrece una selección de modelos de IA generativa de alto rendimiento a través de una API

El siguiente diagrama ilustra esta arquitectura.

Requisitos previos

Como requisito previo, debe habilitar el acceso al modelo en Amazon Bedrock y tener acceso a un entorno de desarrollo Linux o macOS. También puede utilizar un entorno de desarrollo de Windows, en cuyo caso deberá actualizar las instrucciones de esta publicación.

El acceso a los modelos de base de Amazon Bedrock no se otorga de forma predeterminada. Complete los siguientes pasos para habilitar el acceso a Claude de Anthropic en Amazon Bedrock, que utilizamos como parte de esta publicación:

  1. Inicie sesión en el Consola de administración de AWS.
  2. Elija la región de AWS us-east-1 en la esquina superior derecha.
  3. En la consola de Amazon Bedrock, elija Acceso al modelo en el panel de navegación.
  4. Elegir Administrar el acceso al modelo.
  5. Selecciona el modelo al que deseas acceder (para esta publicación, Claude de Anthropic). También puede seleccionar otros modelos para uso futuro.
  6. Elegir Próximo y luego Entregar para confirmar su selección.

Para obtener más información sobre cómo administrar el acceso al modelo, consulte Acceda a los modelos de cimentación de Amazon Bedrock.

Configure su entorno de desarrollo

Para comenzar a implementar la aplicación Streamlit, necesita acceso a un entorno de desarrollo con el siguiente software instalado:

También necesita configurar la CLI de AWS. Una manera de hacerlo es obtenga su clave de acceso a través de la consola y utilice el comando aws configure en su terminal para configurar sus credenciales.

Clonar el repositorio de GitHub

Utilice la terminal de su entorno de desarrollo para ingresar los comandos en los siguientes pasos:

  1. Clonar el deploy-streamlit-app repositorio del repositorio de AWS Samples GitHub:
git clone https://github.com/aws-samples/deploy-streamlit-app.git

  1. Navegue hasta el repositorio clonado:

Cree el entorno virtual de Python e instale AWS CDK

Complete los siguientes pasos para configurar el entorno virtual y AWS CDK:

  1. Cree un nuevo entorno virtual de Python (su versión de Python debe ser 3.8 o superior):
  1. Activar el entorno virtual:
source .venv/bin/activate

  1. Instale AWS CDK, que se encuentra en las dependencias requeridas de Python:
pip install -r requirements.txt

Configurar la aplicación Streamlit

Complete los siguientes pasos para configurar la aplicación Streamlit:

  1. En el docker_app directorio, localice el config_file.py archivo.
  2. Abierto config_file.py en tu editor y modifica el STACK_NAME y CUSTOM_HEADER_VALUE variables:
    1. El nombre de la pila le permite implementar múltiples aplicaciones en la misma cuenta. Elija un nombre de pila diferente para cada aplicación. Para su primera aplicación, puede dejar el valor predeterminado.
    2. El valor del encabezado personalizado es un token de seguridad que CloudFront utiliza para autenticarse en el balanceador de carga. Puedes elegirlo al azar y debe mantenerse en secreto.

Implementar la plantilla de AWS CDK

Complete los siguientes pasos para implementar la plantilla de AWS CDK:

  1. Desde su terminal, inicie AWS CDK:
  1. Implemente la plantilla de AWS CDK, que creará los recursos de AWS necesarios:
  1. Ingresar y (sí) cuando se le pregunte si desea implementar los cambios.

El proceso de implementación puede tardar entre 5 y 10 minutos. Cuando esté completo, anote la URL de distribución de CloudFront y el ID del grupo de usuarios de Amazon Cognito en el resultado.

Crear un usuario de Amazon Cognito

Complete los siguientes pasos para crear un usuario de Amazon Cognito:

  1. En la consola de Amazon Cognito, navegue hasta el grupo de usuarios que creó como parte de la implementación de AWS CDK.
  2. en el Usuarios pestaña, elija Crear usuario.

  1. Introduzca un nombre de usuario y una contraseña.
  2. Elegir Crear usuario.

Accede a la aplicación Streamlit

Complete los siguientes pasos para acceder a la aplicación Streamlit:

  1. Abra una nueva ventana o pestaña del navegador web y navegue hasta la URL de distribución de CloudFront desde la salida de implementación de AWS CDK.

Si no ha anotado esta URL, puede abrir el Formación en la nube de AWS console y encuéntralo en las salidas de la pila.

  1. Inicie sesión en la aplicación Streamlit utilizando las credenciales de usuario de Amazon Cognito que creó en el paso anterior.

Ahora debería poder acceder e interactuar con la aplicación Streamlit, que está implementada y ejecutándose en AWS utilizando la plantilla AWS CDK proporcionada.

Esta implementación pretende ser un punto de partida y una demostración. Antes de utilizar esta aplicación en un entorno de producción, debe revisar e implementar minuciosamente las medidas de seguridad adecuadas, como configurar HTTPS en el balanceador de carga y seguir las mejores prácticas de AWS para proteger sus recursos. Ver el LÉAME.md archivo en el repositorio de GitHub para más información.

Personaliza la aplicación

El aws-samples/deploy-streamlit-app El repositorio de GitHub proporciona una base sólida para crear e implementar aplicaciones de IA generativa, pero también es altamente personalizable y extensible.

Exploremos cómo puede personalizar la aplicación Streamlit. Debido a que la aplicación está escrita en Python, puede modificarla para integrarla con diferentes modelos de IA generativa, agregar nuevas funciones o cambiar la interfaz de usuario para alinearla mejor con los requisitos de su aplicación.

Por ejemplo, digamos que desea agregar un botón para invocar la respuesta de LLM en lugar de invocarla automáticamente cuando el usuario ingresa texto. Complete los siguientes pasos para modificar el docker_app/app.py archivo:

  1. Después de la definición del input_sent entrada de texto, agregue un botón Streamlit:
# Insert this after the line starting with input_sent = …
submit_button = st.button("Get LLM Response")

  1. Cambie la condición if para comprobar si se hace clic en el botón en lugar de comprobar si input_sent:
# Replace the line `if input_sent:` by the following
if submit_button:

  1. Vuelva a implementar la aplicación ingresando lo siguiente en la terminal:

La implementación debería tardar menos de 5 minutos. En la siguiente sección, mostramos cómo probar sus cambios localmente antes de implementarlos, lo que acelerará su flujo de trabajo de desarrollo.

  1. Cuando se complete la implementación, actualice la página web en su navegador.

La aplicación Streamlit ahora mostrará un botón etiquetado Obtenga respuesta de LLM. Cuando el usuario elige este botón, se invocará el LLM y el resultado se mostrará en la interfaz de usuario.

Este es sólo un ejemplo de cómo puede personalizar la aplicación Streamlit para cumplir con sus requisitos específicos. Puede modificar aún más el código para integrarlo con diferentes modelos de IA generativa, agregar funciones adicionales o mejorar la interfaz de usuario según sea necesario.

Pruebe sus cambios localmente antes de implementarlos

Aunque implementar la aplicación usando cdk deploy le permite probar sus cambios en el entorno real de AWS, puede llevar mucho tiempo, especialmente durante la fase de desarrollo y prueba. Afortunadamente, puede ejecutar y probar su aplicación localmente antes de implementarla en AWS.

Para probar sus cambios localmente, siga estos pasos:

  1. En tu terminal, navega hasta el docker_app directorio donde se encuentra la aplicación Streamlit:
  1. Si aún no lo has hecho, instala las dependencias de la aplicación Python. Estas dependencias son diferentes de las de la aplicación AWS CDK que instaló anteriormente.
pip install -r requirements.txt

  1. Inicie el servidor Streamlit con el siguiente comando:
streamlit run app.py --server.port 8080

Esto iniciará la aplicación Streamlit en el puerto 8080.

Ahora debería poder interactuar con la aplicación Streamlit que se ejecuta localmente y probar sus cambios sin tener que volver a implementar la aplicación en AWS.

Recuerde detener el servidor Streamlit (presionando Ctrl+C en la terminal) cuando haya terminado de probar.

Al probar sus cambios localmente, puede acelerar significativamente el ciclo de desarrollo y prueba, lo que le permitirá iterar más rápidamente y detectar problemas en las primeras etapas del proceso.

Limpiar

Para evitar incurrir en cargos adicionales, limpie los recursos creados durante esta demostración:

  1. Abra la terminal en su entorno de desarrollo.
  2. Asegúrate de estar en el directorio raíz del proyecto y de que tu entorno virtual esté activado:
cd ~/environment/deploy-streamlit-app
source .venv/bin/activate

  1. Destruya la pila de AWS CDK:
  1. Confirma la eliminación ingresando yes cuando se le solicite.

Conclusión

Crear e implementar aplicaciones de IA generativa fáciles de usar ya no requiere un conocimiento extenso de los marcos de desarrollo frontend y backend. Al utilizar los servicios Streamlit y AWS, los científicos de datos pueden centrarse en su experiencia principal y al mismo tiempo ofrecer aplicaciones seguras, escalables y accesibles a los usuarios empresariales.

El código completo de la demostración está disponible en el repositorio de GitHub. Proporciona un valioso punto de partida para crear e implementar aplicaciones de IA generativa, lo que le permite configurar rápidamente un prototipo funcional e iterar desde allí. Le animamos a explorar el repositorio y experimentar con la solución proporcionada para crear sus propias aplicaciones.

A medida que la adopción de la IA generativa siga creciendo, la capacidad de crear e implementar aplicaciones fáciles de usar será cada vez más importante. Con AWS y Python, los científicos de datos ahora tienen las herramientas y los recursos para cerrar la brecha entre su experiencia técnica y la necesidad de mostrar sus modelos a los usuarios empresariales a través de interfaces de usuario seguras y accesibles.


Sobre el autor

Foto de Lior PérezLior Pérez es arquitecto principal de soluciones en el equipo de construcción con sede en Toulouse, Francia. Le gusta apoyar a los clientes en su viaje de transformación digital, utilizando big data, aprendizaje automático e inteligencia artificial generativa para ayudarlos a resolver sus desafíos comerciales. También le apasiona personalmente la robótica y el IoT, y busca constantemente nuevas formas de utilizar las tecnologías para la innovación.