Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Chat-DB-RAG

Asistente inteligente de base de datos MySQL con persistencia y Text-to-REST (Function Calling). Permite interactuar con bases de datos relacionales en lenguaje natural de forma segura, gestionar conexiones persistentes, y acceder a planillas predictivas de producción comercial.


📋 Tabla de Contenidos

  1. ¿Qué hace?
  2. Características Clave
  3. Guía de Inicio Rápido
  4. Estructura del Proyecto
  5. Documentación Detallada

🔍 ¿Qué hace?

Este asistente procesa consultas en lenguaje natural y las traduce de manera segura a llamadas de herramientas REST (Text-to-REST / Function Calling) en el backend de Django REST Framework, aplicando estrictas reglas de negocio en Python antes de interactuar con la base de datos MySQL de los clientes.

  • Pregunta: "¿Cuáles fueron las alitas más vendidas ayer?"
  • Tool Invocada (Function Calling): get_top_selling_products(start_date="2026-04-11", search_term="alita")
  • Lógica Python (RULE 9 & RULE 2): Ejecuta una consulta optimizada que unifica variantes para llevar (PLL) y cuenta unidades reales usando cant_total.
  • Respuesta: "Las alitas más vendidas ayer fueron las 'Alitas BBQ' con 45 porciones despachadas."

✨ Características Clave

  • Soporte Multi-Proveedor LLM: Modelos locales con Ollama (Llama 3, DeepSeek, Phi) o APIs en la nube con Google Gemini y OpenRouter.
  • Panel de Cocina Inteligente: Proyección de puestas de pollo por hora y consolidación de líquidos en litros.
  • Formato Rico (Markdown): Renderizado premium de tablas, listas, blockquotes y títulos con marked.js adaptado a temas claro/oscuro.
  • Persistencia Segura: Guardado de múltiples conexiones de usuario (contraseñas cifradas con Fernet) y chats persistentes en una base de datos de administración.

⚡ Guía de Inicio Rápido

Prerrequisitos

  • Python 3.11+ y MySQL Server.
  • Ollama (opcional, para modelos locales).

1. Clonar y Configurar Base de Datos

Crea una base de datos MySQL vacía llamada chat_db_rag para persistencia:

CREATE DATABASE chat_db_rag;

2. Configurar el Backend

Crea un archivo backend/.env basándote en la siguiente plantilla básica:

# Conexión a Base de Datos de Persistencia
DB_USER=root
DB_PASSWORD=
DB_HOST=localhost
DB_PORT=3306
DB_NAME=chat_db_rag

# Cifrado de Contraseñas (Generar con Fernet)
ENCRYPTION_KEY=tu_clave_fernet_aqui
SECRET_KEY=tu_django_secret_key_aqui

# Proveedores de LLM
OPENROUTER_API_KEY=tu_api_key_de_openrouter

3. Instalar y Ejecutar

Backend (Servidor Django REST API)

cd backend
python -m venv env
# Activar entorno: env\Scripts\activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver 0.0.0.0:5000

El servidor Django REST se ejecuta en http://localhost:5000

Frontend (Cliente Web)

cd frontend
python -m http.server 3000

Abre tu navegador en http://localhost:3000


📁 Estructura del Proyecto

  • backend/: Servidor Django REST Framework, Django ORM, cifrado de contraseñas de conexión, motor de Function Calling (Tools) y vistas API REST.
  • frontend/: Interfaz responsiva HTML5/JS Vanilla. Incluye el Panel de Cocina y renderizado de Markdown.
  • doc/: Manuales de arquitectura y guías operativas.

📖 Documentación Detallada

Para guías avanzadas de configuración y desarrollo, consulta:

  1. Guía del Backend y API: Estructura del servidor Flask, rutas de API y manejo de la BD.
  2. Guía del Frontend: Modulación en JS, hojas de estilos, y personalización del Panel de Cocina.
  3. Guía de IA, RAG y Consultas (Unificado):
    • Parte A: Funcionamiento del motor RAG, prompts, límites de contexto y proveedores.
    • Parte B: Regla de oro para consultas, tipos de preguntas válidas, entrenamiento del modelo y diccionario de sinónimos.
  4. Guía de Despliegue en Linux: Configuración en servidores Ubuntu con Systemd, Nginx y Gunicorn.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages