🤖 Proyecto IA - Asistente Personal "Asistente Pablo"


🚀 Descripción

Este proyecto implementa un asistente personal basado en IA totalmente offline, integrado en una aplicación Spring Boot. Utiliza un modelo de lenguaje local (llama.cpp / llama-java) para ofrecer respuestas naturales, útiles y personalizadas, con un diseño centrado en la arquitectura limpia y extensible.

El asistente está pensado para entender tus gustos, estilo y necesidades, respondiendo siempre en español con un tono cercano y amigable.


🧩 Características principales

  • 🧠 Modelo LLM local (openchat-3.5-0106.Q4_K_M.gguf) ejecutado en CPU o GPU (Metal en Macs M1/M2).
  • 🏗️ Arquitectura limpia basada en capas: dominio, aplicación, infraestructura y presentación.
  • 📜 Historial de conversación gestionado en sesión HTTP (con opción a persistencia futura).
  • 📝 Construcción dinámica de prompts a partir de definiciones JSON estructuradas y multilingües.
  • 🌐 API REST para interacción con el asistente.
  • 💻 Frontend con Thymeleaf para una interfaz web simple y eficaz.
  • 📊 Logging avanzado con Log4j2, con logs a consola y fichero.
  • 🔄 Extensible para múltiples perfiles de prompt y configuración personalizada.

⚙️ Requisitos técnicos

  • Java 21+
  • Maven 4+
  • Spring Boot 3+
  • Dependencias principales:
    • llama-java para LLM local
    • Jackson para JSON
    • Log4j2 para logging
  • Modelo openchat-3.5-0106.Q4_K_M.gguf en carpeta models/

🛠️ Instalación y ejecución

  1. Clonar el repositorio:

    git clone https://github.com/tuusuario/ia-asistente-personal.git
    cd ia-asistente-personal
    
  2. Colocar el modelo en models/:

    mkdir models
    # Copia aquí openchat-3.5-0106.Q4_K_M.gguf
    
  3. Compilar con Maven:

    mvn clean package
    
  4. Crear carpeta de logs:

    mkdir logs
    
  5. Ejecutar la aplicación:

    java -jar target/ia-asistente-personal.jar
    
  6. Abrir en el navegador:

    http://localhost:8080/
    

🎯 Uso

  • En la web puedes chatear con tu asistente personalizado.
  • El historial de la conversación se mantiene en sesión.
  • Las respuestas se generan localmente, sin conexión a internet.
  • Puedes cambiar el perfil de prompt editando los JSON en src/main/resources/prompts/.

🎥 Demostración

Demo de funcionamiento

Reemplaza la URL anterior con el enlace a tu GIF de demostración.


🧪 Configuración avanzada

  • GPU Metal en macOS M1/M2: configura el backend llama.cpp con soporte Metal y coloca el shader ggml-metal.metal en la ruta correcta.
  • Logs: configurados con Log4j2, salida a consola y a logs/app.log.
  • Múltiples perfiles: cambia el prompt cargando otros JSONs como developer_prompt.json.

📚 Recursos

Herramienta Enlace
llama.cpp https://github.com/ggerganov/llama.cpp
llama-java https://github.com/kherud/llama-java
Spring Boot https://spring.io/projects/spring-boot

🤝 Contribuciones

¿Quieres mejorar el proyecto? ¡Bienvenido!
Por favor, abre un issue o pull request con tus mejoras.


⚠️ Licencia

MIT License © Pablo de la Torre Jamardo


¡Gracias por usar el Asistente Pablo!

Description
🤖 AI Chat Offline is a fully self-contained chatbot application designed for secure, offline environments. Built with Vue 3 on the frontend and Spring Boot on the backend, it integrates a local LLM (Large Language Model) in .gguf format to offer AI-powered conversations without any internet connection or external service.
Readme 6.7 MiB
Languages
Java 86.9%
Vue 9.6%
TypeScript 2.3%
HTML 0.5%
CSS 0.5%
Other 0.2%