Compartir a través de


Tutorial: Creación de un agente de viajes de IA con Azure DocumentDB y LangChain

En este tutorial se muestra cómo crear un agente de inteligencia artificial autónomo que procesa consultas de viajeros y reservas para una línea de crucero. El agente de IA usa el marco del agente langChain para planear, usar herramientas y percibir. A continuación, el agente combina estas características con la base de datos vectorial de Azure DocumentDB y las funcionalidades del almacén de documentos para un sistema de memoria unificado.

El agente de ejemplo funciona dentro de un back-end de FastAPI de Python y admite interacciones del usuario a través de una interfaz de usuario de JavaScript de React. Esta implementación muestra cómo los agentes de inteligencia artificial avanzan más allá de los bots de chat básicos para llevar a cabo tareas complejas basadas en lenguaje natural que tradicionalmente requieren lógica codificada.

En este tutorial, aprenderá a:

  • Configuración de Azure DocumentDB con funcionalidades de búsqueda vectorial
  • Carga de documentos de viaje y creación de incrustaciones vectoriales
  • Compilación de un agente de IA mediante Python FastAPI y LangChain
  • Implementación de herramientas de agente para búsqueda de vacaciones, búsqueda de itinerarios y reserva
  • Creación de una interfaz web de React para las interacciones del usuario
  • Prueba de la solución completa del agente de IA

Prerrequisitos

  • Una suscripción de Azure

  • Un clúster de Azure DocumentDB existente

  • Una cuenta para la API de OpenAI o Azure OpenAI Service.

  • Un entorno de desarrollo integrado, como Visual Studio Code.

  • Python 3.11.4 o posterior instalado en el entorno de desarrollo.

  • Node.js instalado para el front-end de React.

Descarga del proyecto de ejemplo

Todos los conjuntos de datos de código y de ejemplo están disponibles en el repositorio de GitHub del agente de Travel AI.

  1. Clone o descargue este repositorio (https://github.com/jonathanscholtes/Travel-AI-Agent-React-FastAPI-and-Cosmos-DB-Vector-Store) en el entorno de desarrollo.

  2. Vaya al directorio del proyecto y explore la estructura:

    • /loader: contiene código de Python para cargar documentos de ejemplo e incrustaciones vectoriales en Azure DocumentDB.

    • /api: contiene el proyecto fastAPI de Python para hospedar el agente de viajes de IA.

    • /web: contiene código para la interfaz web de React.

Carga de documentos de viaje en Azure DocumentDB

El /loader directorio contiene un proyecto de Python para cargar documentos de viaje de ejemplo en Azure DocumentDB y crear las incrustaciones vectoriales necesarias.

  1. Navegue al directorio /loader desde su terminal.

  2. Cree un entorno virtual de Python:

    python -m venv venv
    
  3. Active el entorno virtual:

    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  4. Instale las dependencias necesarias:

    python -m pip install -r requirements.txt
    
  5. Cree un .env archivo en el /loader directorio con los detalles de conexión:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  6. El main.py archivo actúa como punto de entrada central para cargar datos. Procesa datos de viaje de ejemplo, incluida la información de envío y destino, y luego genera paquetes de itinerarios de viaje.

  7. Ejecute el script de carga de datos desde el /loader directorio . El script realiza estas operaciones:

    • Lee los datos de envío y destino de los archivos JSON.

    • Crea cinco paquetes de itinerarios mediante ItineraryBuilder

    • Guarda los paquetes de itinerario en la colección itinerary.

    • Guarda destinos en la destinations colección.

    • Crea representaciones vectoriales para las embarcaciones en la colección ships

    • Agrega un índice de búsqueda de texto a los nombres de barcos

    python main.py
    
  8. Compruebe que la salida muestra la finalización correcta:

    --build itinerary--
    --load itinerary--
    --load destinations--
    --load vectors ships--
    

Construir la API del agente de viajes de IA

El agente de viajes de IA se ejecuta mediante un back-end de FastAPI de Python que se integra con la interfaz de front-end y procesa las solicitudes del agente al analizar las indicaciones del modelo de lenguaje amplio (LLM) con los datos de Azure DocumentDB.

  1. Vaya al directorio en el terminal /api.

  2. Cree y active un entorno virtual de Python:

    python -m venv venv
    
    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  3. Instale las dependencias necesarias:

    python -m pip install -r requirements.txt
    
  4. Cree un .env archivo en el /api directorio :

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  5. Ejecute la aplicación FastAPI desde el /api directorio :

    python app.py
    
  6. El servidor se inicia en http://127.0.0.1:8000 de forma predeterminada.

  7. Explore los puntos de conexión de API mediante el acceso a la documentación interactiva de Swagger en http://127.0.0.1:8000/docs.

Prueba de la funcionalidad del agente de IA

Pruebe que el agente de IA funciona según lo previsto.

  1. En la interfaz de Swagger, pruebe el extremo de la sesión.

    • Vaya a /session/ y seleccione Pruébelo.

    • Ejecute la solicitud para obtener un identificador de sesión para realizar el seguimiento del historial de conversaciones.

  2. Pruebe la funcionalidad del chat del agente:

    • Vaya a /agent/agent_chat y seleccione Pruébelo.

    • Use esta entrada de ejemplo para probar el agente:

    {
      "input": "I want to take a relaxing vacation.",
      "session_id": "your-session-id-from-step-1"
    }
    
  3. El agente debe responder con recomendaciones de crucero basadas en la búsqueda de similitud vectorial, que muestra la integración entre LLM y Azure DocumentDB.

Creación de la interfaz web de React

La interfaz web proporciona una manera fácil de interactuar con el agente de viajes de IA a través de una interfaz conversacional.

Configuración del entorno de React

  1. Acceda al directorio /web en su terminal.

  2. Instale las dependencias del proyecto:

    npm ci
    
  3. Cree un .env archivo en el /web directorio :

    REACT_APP_API_HOST=http://127.0.0.1:8000
    

Inicio de la aplicación web

  1. Inicie el servidor de desarrollo de React:

    npm start
    
  2. La aplicación se abre automáticamente en el explorador predeterminado, normalmente en http://localhost:3000.

  3. La interfaz muestra un sitio web de viajes con imágenes de barco de crucero y destino.

Prueba de la solución completa

  1. En la página principal, seleccione Sin esfuerzo planear su viaje para abrir la interfaz de chat del asistente de viajes.

  2. La interfaz de chat se abre en un cuadro de diálogo con un mensaje rellenado previamente: "Quiero tomar unas vacaciones relajantes".

  3. Seleccione Enviar para enviar el mensaje al agente de IA.

  4. El agente responde con recomendaciones de crucero en función de tu entrada y demuestra lo siguiente:

    • Procesamiento de lenguaje natural

    • Búsqueda de similitud de vectores en Azure DocumentDB

    • Memoria de conversación durante toda la sesión

    • Respuestas con formato HTML en la interfaz de chat

  5. Para ver toda la gama de funcionalidades del agente, continúe con la conversación. Pregunte sobre barcos específicos, itinerarios o hacer reservas.

Descripción de la arquitectura del agente de IA

La implementación del agente de IA sigue una arquitectura superpuesta que separa los problemas y permite el mantenimiento.

Componentes de capa de servicio

La capa de servicio contiene la lógica empresarial principal y la implementación del agente langChain:

  • Inicialización del agente: el init.py módulo configura el modelo ChatOpenAI, las herramientas del agente y el historial de conversaciones.

  • Herramientas del agente: Tres herramientas principales controlan la búsqueda de vacaciones, la búsqueda de itinerarios y la reserva de cruceros.

  • Administración de memoria: el historial de conversaciones se almacena en Azure DocumentDB mediante identificadores de sesión.

Funcionalidad de las herramientas del agente

El agente de IA usa tres herramientas especializadas.

  1. vacation_lookup: realiza la búsqueda de vectores en Azure DocumentDB para encontrar información de viaje relevante.

  2. itinerary_lookup: recupera los detalles y programaciones del paquete de crucero para buques específicos.

  3. book_cruise: controla las reservas de paquetes de crucero con validación de información de pasajeros.

Integración de capa de datos

La capa de datos controla todas las interacciones con Azure DocumentDB.

  • Búsqueda vectorial: búsqueda de similitud con puntuación para recomendaciones de viaje.

  • Almacenamiento de documentos: datos estructurados para buques, destinos e itinerarios.

  • Historial de conversaciones: almacenamiento de mensajes de chat basado en sesión.

Limpieza de recursos

Si ya no necesita los recursos creados en este tutorial, puede limpiarlos para evitar cargos continuos:

  1. En Azure Portal, vaya a la cuenta de Azure DocumentDB.

  2. Si creó un grupo de recursos dedicado para este tutorial, elimine todo el grupo de recursos.

  3. De lo contrario, elimine las colecciones específicas creadas:

    • travel.itinerary

    • travel.destinations

    • travel.ships

    • travel.history

Paso siguiente