Este es un proyecto de un chatbot interactivo que permite a los usuarios hacer preguntas sobre bases de datos, recibir respuestas en forma de consultas SQL y ver los resultados en una tabla. Además, el proyecto incluye la capacidad de descargar los resultados en formato Excel.
- FastAPI: El backend está construido utilizando FastAPI, que se encarga de procesar las consultas SQL y devolver los resultados.
- MySQL o MongoDB: El backend se conecta a una base de datos MySQL o MongoDB para ejecutar las consultas y devolver los resultados.
- SQLAlchemy (para MySQL): Usado para interactuar con la base de datos MySQL.
- Pymongo (para MongoDB): Usado para interactuar con MongoDB.
- React (con Next.js): El frontend está construido utilizando React y Next.js, que permiten la creación de una interfaz de usuario interactiva para hacer preguntas al chatbot y ver los resultados.
- Axios: Utilizado para realizar las solicitudes HTTP al backend.
- XLSX.js: Se usa para generar y descargar el archivo Excel con los resultados de la consulta.
El proyecto tiene dos partes principales: el frontend y el backend.
El backend es una API construida con FastAPI que se encarga de manejar las solicitudes de consultas SQL y devolver los resultados en formato JSON.
- app/main.py: El archivo principal que define las rutas de la API.
- app/db.py: El archivo que maneja la conexión a la base de datos (MySQL o MongoDB).
- app/models.py: Define los modelos de datos para interactuar con la base de datos.
El frontend es una aplicación React que permite a los usuarios interactuar con el chatbot y ver los resultados de las consultas SQL en una tabla. Además, tiene la funcionalidad para descargar los resultados en un archivo Excel.
- src/app/components/Chatbot.jsx: El componente principal del chatbot que gestiona la interfaz de usuario y las interacciones con el backend.
- src/app/styles/global.css: Los estilos globales para la aplicación.
- src/app/pages/index.js: La página principal que muestra el chatbot.
-
Clonar el repositorio:
git clone https://github.com/LeoR22/Chatbot_RAG.git cd backend
-
Instalar dependencias::Si estás utilizando un entorno virtual, activa el entorno antes de instalar las dependencias.
pip install -r requirements.txt
-
Configurar las bases de datos:
- Asegúrate de tener MySQL y MongoDB configurado correctamente.
- En la carpeta Backend/app/infrastructure/db, actualiza las configuraciones de las bases de datos y sus credenciales.
-
Ejecutar el servidor: Para ejecutar el servidor de FastAPI, usa el siguiente comando:
uvicorn app.main:app --reload
-
Abrir otro proyecto y cambiar de carpeta:
cd frontend
-
Instalar dependencias::
npm install
-
Configurar la URL del backend: Crea el archivo .env, configura la URL de tu API backend:
NEXT_PUBLIC_API_URL=<http://localhost:8000>
-
Ejecutar el servidor: Para ejecutar el frontend en modo de desarrollo:
npm run dev
Esto iniciará la aplicación en http://localhost:3000.
-
Interactuar con el Chatbot:
- Escribe preguntas relacionadas con la base de datos.
- El chatbot generará una consulta SQL y devolverá los resultados en una tabla.
-
Descargar los resultados:
- Si hay resultados disponibles, puedes hacer clic en el botón "Descargar Excel" para obtener un archivo Excel con los resultados de la consulta.
-
Visualizar la tabla de resultados:
- Los resultados de la consulta se mostrarán en una tabla interactiva debajo de la conversación.
- Clonar el repositorio y seguir los pasos para instalar tanto el frontend como el backend.
- Configurar las credenciales de la base de datos en el backend.
- Ejecutar ambos servidores y acceder a la aplicación.
Si deseas contribuir a este proyecto, sigue estos pasos:
- Haz un fork del repositorio.
- Crea una nueva rama (
git checkout -b feature-nueva-funcionalidad
). - Realiza tus cambios y haz commit (
git commit -m 'Agrega nueva funcionalidad'
). - Sube los cambios a la rama (
git push origin feature-nueva-funcionalidad
). - Abre un Pull Request.
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Leandro Rivera: leo.232rivera@gmail.com
Si encuentras útil este proyecto, ¡dale una ⭐ en GitHub! 😊