Este es el repositorio principal del proyecto Palermo Sushi ChatBot, un sistema que integra un backend y un frontend para un chatbot de restaurante de sushi. El chatbot está diseñado para facilitar la interacción con los clientes, permitiéndoles explorar el menú, realizar pedidos y obtener respuestas a sus consultas de manera conversacional.
Para más detalles sobre cada parte del proyecto, consulte los archivos
README.md
en los directorios backend
y
frontend
.
El proyecto se divide en dos partes principales: un backend y un frontend. El backend utiliza inteligencia artificial para procesar las consultas de los clientes y proporcionar respuestas relevantes. El frontend proporciona una interfaz de usuario para que los clientes interactúen con el chatbot.
- 💬 Interacción del Cliente: El cliente envía un mensaje al chatbot a través del frontend.
- 📡 Comunicación con el Backend: El frontend envía el mensaje al backend.
- 🧠 Procesamiento del Mensaje: El backend recibe el mensaje y lo procesa mediante un modelo de lenguaje. Este modelo analiza el significado del mensaje y determina la acción a realizar.
- ⚙️ Acciones del Chatbot: El chatbot puede ejecutar diversas acciones,
tales como:
- 🔍 Búsqueda de ítems del menú, incluyendo una búsqueda semántica para encontrar platos basados en su significado y contexto.
- 🛒 Adición de ítems al carrito de compras.
- 📦 Consulta del estado de un pedido.
- ℹ️ Respuesta a preguntas sobre el restaurante.
- 🗣️ Respuesta al Cliente: El backend genera una respuesta basada en la acción realizada y la envía al frontend.
- 📱 Presentación de la Respuesta: El frontend recibe la respuesta y la muestra al cliente.
Este proyecto utiliza las siguientes tecnologías principales:
- Node.js: Entorno de ejecución para JavaScript en el servidor.
- TypeScript: Lenguaje de programación que añade tipado estático a JavaScript.
- Express.js: Framework para la creación de aplicaciones web y APIs en Node.js.
- MongoDB: Base de datos NoSQL para el almacenamiento de datos.
- MongoDB Atlas Vector Search: Servicio de búsqueda vectorial para la búsqueda semántica.
- OpenAI API: API para el procesamiento del lenguaje natural y la generación de texto.
- Langchain: Framework para el desarrollo de aplicaciones basadas en modelos
de lenguaje.
- LangGraph: Componente de Langchain para la definición de flujos de conversación.
- Vite: Herramienta de construcción para el frontend.
- React: Biblioteca para la creación de interfaces de usuario.
Para ejecutar este proyecto en su entorno local, siga los siguientes pasos:
-
⬇️ Clonación del repositorio:
git clone [email protected]:Nekzus/frontend-backend-chat.git cd frontend-backend-chat
-
📦 Instalación de dependencias: Asegúrese de tener instalado Node.js y un gestor de paquetes (npm o pnpm). Ejecute el siguiente script rápido:
npm install && npm run install-all
-
⚙️ Configuración de variables de entorno: Cree un archivo
.env
en la raíz del proyectoback-end
y copie el contenido de.env.example
, ajustando los valores según su configuración local (idem parafront-end
). Se requiere:- 🔗 Una URI de MongoDB para la base de datos.
- 🔑 Una clave secreta para JWT.
- 🔑 Una clave de API de OpenAI.
- 🚪 Un puerto para el servidor.
Ejemplo de
.env
:MONGODB_URI=mongodb://localhost:27017/palermo-sushi JWT_SECRET=your-secret-key OPENAI_API_KEY=your-openai-api-key PORT=3000
-
🚀 Inicio del servidor y el frontend: Ejecute el siguiente comando para iniciar el servidor y el frontend en modo desarrollo:
npm run dev
-
🌐 Acceso a la aplicación: Una vez que el servidor y el frontend estén en funcionamiento, la aplicación estará accesible a través de la URL que se mostrará en la consola (normalmente
http://localhost:5173
).Usuario de prueba (o registrar un nuevo usuario):
- 📧 Email:
[email protected]
- 🔑 Password:
123456
- 📧 Email:
-
📚 Documentación de la API: La documentación de la API está disponible en la ruta
/api-docs
del backend (por ejemplo,http://localhost:3000/api-docs
). -
🌱 Opcional: Sembrado de la base de datos: Para inicializar la base de datos con datos de prueba, ejecute el siguiente comando en la carpeta
back-end
:npm run seed
-
🔍 Configuración de la búsqueda semántica: Para habilitar la búsqueda semántica del menú, siga estos pasos en su base de datos de MongoDB Atlas llamada
palermo_sushi
:- Acceda a la sección "Atlas Search" en el panel de MongoDB Atlas.
- Cree un nuevo índice denominado
vector_index
. - Seleccione el tipo de índice "vector search".
- Asigne este índice a la colección
menu
. - Utilice el "JSON editor" para configurar el índice y pegue la siguiente
configuración de campo:
{ "fields": [ { "numDimensions": 1536, "path": "embedding", "similarity": "cosine", "type": "vector" } ] }
Este repositorio contiene tanto el backend como el frontend del chatbot de Palermo Sushi. Asegúrese de ejecutar ambos componentes para una experiencia completa.
Espero que este proyecto sea de utilidad para su propósito.