Chat inteligente para cafeterías con backend en FastAPI, frontend en Next.js 15, arquitectura hexagonal simplificada, y múltiples modelos de IA (Gemini, OpenAI, Claude, DeepSeek, LangChain, ReAct).
- Backend: FastAPI con adaptadores de IA y ciclo ReAct
- Frontend: Next.js 15 con TypeScript y Tailwind CSS
- Base de Conocimiento: Markdown en
/knowledge/ - Orquestación: MCP (Model Context Protocol) con tools de consulta
- Python 3.9 o superior
- pip (gestor de paquetes de Python)
-
Navega al directorio del proyecto:
cd NeoCafeIA -
Crea un entorno virtual:
python -m venv venv
-
Activa el entorno virtual:
- En Windows:
venv\Scripts\activate
- En macOS/Linux:
source venv/bin/activate
- En Windows:
-
Instala las dependencias:
pip install -r requirements.txt
-
Crea un archivo
.envbasado en el template:cp .env.example .env
-
Edita el archivo
.envy añade tus API keys:GOOGLE_API_KEY=tu_clave_real_de_google_gemini OPENAI_API_KEY=tu_clave_real_de_openai ANTHROPIC_API_KEY=tu_clave_real_de_claude DEEPSEEK_API_KEY=tu_clave_real_de_deepseek
-
Inicia el servidor:
uvicorn app:app --reload
- Node.js 20+ (recomendado)
- npm o yarn
-
Navega al directorio del frontend:
cd frontend -
Instala las dependencias:
npm install # o yarn install -
Crea archivo
.env.local:cp .env.example .env.local
-
Inicia el servidor de desarrollo:
npm run dev # o yarn dev -
Accede a:
- Frontend: http://localhost:3000
- Backend: http://localhost:8000
- API Docs: http://localhost:8000/docs
**⚠️ Importante:** Nunca subas el archivo `.env` al repositorio. Está incluido en `.gitignore` para mantener tus claves seguras.
-
Inicia el servidor FastAPI:
uvicorn app:app --reload
-
Accede a la aplicación:
- Chat Web: http://localhost:8000/app
- Landing y Stitch UI: http://localhost:8000/stitch-ui
- Documentación API: http://localhost:8000/docs
- Health Check: http://localhost:8000/health
NeoCafeIA/
├── app.py # Entrypoint de la aplicación FastAPI
├── README.md # Este archivo
├── SECURITY.md # Política de seguridad del proyecto
├── .env.example # Template de variables de entorno
├── .gitignore # Archivos a ignorar en git
├── requirements.txt # Dependencias del proyecto
├── servidor_mcp.py # Servidor MCP para herramientas y consultas
├── knowledge/ # Base de conocimiento
│ ├── bebidas.md
│ ├── granos.md
│ ├── menu.md
│ ├── negocio.md
│ ├── postres.md
│ ├── promociones.md
│ └── recomendaciones.md
├── rules/ # Reglas de comportamiento
│ └── comportamiento.md
├── skills/ # Habilidades del asistente
│ └── asistente-cafeteria.md
├── system_prompt/ # Instrucciones del sistema (IA)
│ └── asistente.md
├── src/ # Código fuente
│ ├── domain/
│ │ └── schemas.py
│ ├── services/
│ │ └── chat_service.py
│ └── infrastructure/
│ ├── model_factory.py
│ ├── gemini_adapter.py
│ ├── openai_adapter.py
│ ├── claude_adapter.py
│ ├── deepseek_adapter.py
│ ├── langchain_adapter.py
│ ├── context_loader.py
│ └── web_frontend.py
├── static/ # Frontend estático
│ └── stitch-ui/
- Gemini 2.5 Flash (Recomendado - Gratuito)
- OpenAI (GPT-4o Mini)
- Claude (Anthropic)
- DeepSeek (DeepSeek Chat)
- LangChain + Gemini (Cadena LangChain)
NeoCafeIA incluye un servidor MCP para integración avanzada con herramientas de IA.
- Búsqueda de bebidas — Información detallada de cada bebida del menú
- Listado de menú completo — Bebidas, postres y promociones
- Recomendaciones personalizadas — Basadas en preferencias del usuario
- Consulta de granos — Información de granos de café disponibles
- Verificación de promociones — Promociones activas del día
python servidor_mcp.pyEl servidor expone herramientas que pueden ser utilizadas por clientes MCP para consultas especializadas sobre el catálogo de NeoCafeía.
Verifica el estado del servidor.
Respuesta:
{
"status": "ok"
}Devuelve la interfaz web interactiva del chat.
Envía un mensaje y obtiene una respuesta del chatbot.
Request:
{
"pregunta": "¿Qué bebidas tienen?",
"provider": "gemini",
"historial": []
}Response:
{
"respuesta": "En Selecto Granos tenemos...",
"provider": "gemini",
"tokens_usados": null
}- Accede a http://localhost:8000/app
- Selecciona el proveedor de IA en el dropdown
- Escribe tu pregunta en el campo de texto
- Presiona "Enviar" o Enter
- Recibe la respuesta del chatbot
Edita el archivo system_prompt/asistente.md para cambiar las instrucciones base.
Añade reglas adicionales en rules/comportamiento.md.
Modifica o crea nuevos archivos .md en la carpeta knowledge/.
- Crea un nuevo archivo
src/infrastructure/nuevo_adapter.py - Implementa la clase heredando de
IModelAdapter - Añade el adaptador al
AIModelFactoryensrc/infrastructure/model_factory.py - Agrega el proveedor al enum
AIProviderensrc/domain/schemas.py
Asegúrate de haber ejecutado:
pip install -r requirements.txtVerifica que el archivo .env existe y contiene la clave API:
GOOGLE_API_KEY=tu_clave_aquiIntenta limpiar el caché:
pip cache purge
pip install -r requirements.txt --no-cache-dir- Sube el proyecto a un repositorio de GitHub
- Conecta tu repositorio en Vercel
- Configura las variables de entorno en el dashboard
- Despliega automáticamente
Para más información: Documentación de Vercel
Este proyecto está disponible bajo la licencia MIT.
Las contribuciones son bienvenidas. Por favor, abre un issue o envía un pull request.
¡Disfruta tu chatbot de cafetería! ☕