7.3 KiB
Raw Blame History

🤖 AI Chat Platform - "Kairon"

Asistente personal de IA completamente offline y privado


Descripción

Kairon es una aplicación de chat con inteligencia artificial que funciona completamente offline. Utiliza un modelo de lenguaje local para generar respuestas naturales y contextuales, manteniendo todas las conversaciones en tu dispositivo sin enviar datos a servicios externos.

La aplicación está construida con una arquitectura hexagonal moderna, separando claramente las responsabilidades entre el frontend (Vue.js), el backend (Spring Boot) y el motor de IA (Llama). Esto permite un código mantenible, escalable y fácil de extender.


Características

  • 💬 Chat inteligente - Conversaciones naturales con memoria de contexto
  • 🔒 100% Privado - Todas las conversaciones permanecen en tu dispositivo
  • 🌐 Funciona offline - No requiere conexión a internet
  • 📱 Interfaz moderna - Frontend responsive construido con Vue.js 3
  • 🏗️ Arquitectura limpia - Backend con patrones de diseño empresariales
  • 📊 Monitoreo integrado - Health checks y métricas de rendimiento
  • 🔧 Altamente configurable - Prompts y comportamiento personalizables

Arquitectura

El proyecto está organizado como una aplicación multimodular:

ai-chat-platform/
├── chat-api/            # API REST con Spring Boot
│   ├── domain/          # Lógica de negocio
│   ├── application/     # Casos de uso
│   ├── infrastructure/  # Implementaciones técnicas
│   └── presentation/    # Controllers REST
├── chat-web-client/     # Interfaz web con Vue.js
│   ├── src/components/  # Componentes reutilizables
│   ├── src/views/       # Páginas principales
│   └── src/stores/      # Estado global
└── models/              # Modelos de IA (Llama)

Stack Tecnológico

Backend:

  • Java 21 con Spring Boot 3
  • Arquitectura hexagonal con DDD
  • SQLite para persistencia
  • Llama.cpp para inferencia de IA
  • OpenAPI para documentación

Frontend:

  • Vue.js 3 con Composition API
  • TypeScript para tipado estático
  • Pinia para gestión de estado
  • Vite como bundler
┌─────────────────────┐    ┌─────────────────────┐    ┌─────────────────────┐
│   Frontend (Vue.js) │    │  Backend (Spring)   │    │    AI Engine       │
│                     │    │                     │    │                     │
│ • Vue 3 + TypeScript│◄──►│ • Hexagonal Arch    │◄──►│ • Llama Model       │
│ • Pinia Store       │    │ • Domain-Driven     │    │ • Offline Inference │
│ • Modern UI/UX      │    │ • REST API          │    │ • Custom Prompts    │
└─────────────────────┘    └─────────────────────┘    └─────────────────────┘
           │                           │                           │
           └───────────────────────────┼───────────────────────────┘
                                       │
                              ┌─────────────────────┐
                              │   SQLite Database   │
                              │                     │
                              │ • Conversations     │
                              │ • Messages          │
                              │ • User Preferences  │
                              └─────────────────────┘

Instalación

Requisitos

  • Java 21+
  • Node.js 18+
  • Maven 3.8+
  • 8GB RAM (16GB recomendado)
  • 4GB espacio libre

Instalación Rápida

# Clonar repositorio
git clone https://github.com/pablotj/ai-chat-platform.git
cd ai-chat-platform

# Descargar modelo de IA
mkdir models
cd models
wget https://huggingface.co/TheBloke/openchat-3.5-0106-GGUF/resolve/main/openchat-3.5-0106.Q4_K_M.gguf

# Ejecutar backend
cd ../chat-api
mvn spring-boot:run

# En otra terminal, ejecutar frontend
cd ../chat-web-client
npm install
npm run dev

Con Docker

docker-compose up -d

Uso

  1. Acceder a la aplicación: http://localhost:3000
  2. Crear nueva conversación o seleccionar una existente
  3. Escribir mensaje y recibir respuesta de la IA
  4. Historial automático - Las conversaciones se guardan localmente

API REST

La aplicación expone una API REST completa:

Endpoint Método Descripción
/api/v1/conversations GET Listar conversaciones
/api/v1/conversations POST Crear conversación
/api/v1/conversations/{id} DELETE Elimina conversación
/api/v1/conversations/{id}/messages GET Obtener mensajes
/api/v1/conversations/{id}/messages POST Enviar mensaje

Documentación completa: http://localhost:8080/api/v1/swagger-ui.html

Capturas de Pantalla

Interfaz de Chat

demo.gif


Configuración

Personalización del Asistente

Edita chat-api/src/main/resources/prompts/system_prompt.json:

{
  "character": "Eres mi asistente personal llamado 'Kairon'",
  "tone": "Cercano, natural y amigable",
  "language": "Español",
  "rules": [
    "Responde siempre en español",
    "Sé útil y preciso",
    "Mantén un tono amigable"
  ]
}

Configuración del Modelo

En backend/src/main/resources/application.yml:

ai:
  model:
    name: openchat-3.5-0106.Q4_K_M
    path: models/${ai.model.name}.gguf
    inference:
      max-tokens: 2048
      temperature: 0.7
    gpu:
      enabled: true
      layers: 35

Testing

# Tests del backend
cd chat-api
mvn test

# Tests del frontend
cd chat-web-client
npm run test
npm run test:e2e

Monitoreo

La aplicación incluye endpoints de monitoreo:

  • Health Check: http://localhost:8080/api/actuator/health
  • Métricas: http://localhost:8080/api/actuator/metrics
  • Info: http://localhost:8080/api/actuator/info

Contribuir

Las contribuciones son bienvenidas. Para contribuir:

  1. Fork el proyecto
  2. Crea una rama feature (git checkout -b feature/nueva-funcionalidad)
  3. Commit los cambios (git commit -m 'Añadir nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Abre un Pull Request

Licencia

Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.


Recursos


Desarrollado por Pablo TJ