🤖 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
- Acceder a la aplicación:
http://localhost:3000
- Crear nueva conversación o seleccionar una existente
- Escribir mensaje y recibir respuesta de la IA
- 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}/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
️ 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:
- Fork el proyecto
- Crea una rama feature (
git checkout -b feature/nueva-funcionalidad
) - Commit los cambios (
git commit -m 'Añadir nueva funcionalidad'
) - Push a la rama (
git push origin feature/nueva-funcionalidad
) - Abre un Pull Request
Licencia
Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.
Recursos
- llama.cpp - Motor de inferencia IA
- Spring Boot - Framework backend
- Vue.js - Framework frontend
- OpenChat - Modelo de lenguaje utilizado
Desarrollado por Pablo TJ