Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
- Si no tiene ninguna suscripción a Azure, cree una cuenta gratuita
Un clúster de Azure DocumentDB existente
- Si no tiene un clúster, cree un nuevo clúster.
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.
Clone o descargue este repositorio (https://github.com/jonathanscholtes/Travel-AI-Agent-React-FastAPI-and-Cosmos-DB-Vector-Store) en el entorno de desarrollo.
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.
Navegue al directorio
/loaderdesde su terminal.Cree un entorno virtual de Python:
python -m venv venvActive el entorno virtual:
# On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activateInstale las dependencias necesarias:
python -m pip install -r requirements.txtCree un
.envarchivo en el/loaderdirectorio con los detalles de conexión:OPENAI_API_KEY="<your OpenAI key>" MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"El
main.pyarchivo 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.Ejecute el script de carga de datos desde el
/loaderdirectorio . El script realiza estas operaciones:Lee los datos de envío y destino de los archivos JSON.
Crea cinco paquetes de itinerarios mediante
ItineraryBuilderGuarda los paquetes de itinerario en la colección
itinerary.Guarda destinos en la
destinationscolección.Crea representaciones vectoriales para las embarcaciones en la colección
shipsAgrega un índice de búsqueda de texto a los nombres de barcos
python main.pyCompruebe 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.
Vaya al directorio en el terminal
/api.Cree y active un entorno virtual de Python:
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activateInstale las dependencias necesarias:
python -m pip install -r requirements.txtCree un
.envarchivo en el/apidirectorio :OPENAI_API_KEY="<your OpenAI key>" MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"Ejecute la aplicación FastAPI desde el
/apidirectorio :python app.pyEl servidor se inicia en
http://127.0.0.1:8000de forma predeterminada.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.
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.
Pruebe la funcionalidad del chat del agente:
Vaya a
/agent/agent_chaty 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" }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
Acceda al directorio
/weben su terminal.Instale las dependencias del proyecto:
npm ciCree un
.envarchivo en el/webdirectorio :REACT_APP_API_HOST=http://127.0.0.1:8000
Inicio de la aplicación web
Inicie el servidor de desarrollo de React:
npm startLa aplicación se abre automáticamente en el explorador predeterminado, normalmente en
http://localhost:3000.La interfaz muestra un sitio web de viajes con imágenes de barco de crucero y destino.
Prueba de la solución completa
En la página principal, seleccione Sin esfuerzo planear su viaje para abrir la interfaz de chat del asistente de viajes.
La interfaz de chat se abre en un cuadro de diálogo con un mensaje rellenado previamente: "Quiero tomar unas vacaciones relajantes".
Seleccione Enviar para enviar el mensaje al agente de IA.
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
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.pymó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.
vacation_lookup: realiza la búsqueda de vectores en Azure DocumentDB para encontrar información de viaje relevante.
itinerary_lookup: recupera los detalles y programaciones del paquete de crucero para buques específicos.
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:
En Azure Portal, vaya a la cuenta de Azure DocumentDB.
Si creó un grupo de recursos dedicado para este tutorial, elimine todo el grupo de recursos.
De lo contrario, elimine las colecciones específicas creadas:
travel.itinerarytravel.destinationstravel.shipstravel.history