Nexus/AI-MODELS-SYSTEM.md

490 lines
11 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🤖 Sistema de Configuración de Modelos IA - NexusChat
## Gestión Completa de Proveedores y Modelos
He implementado un sistema completo para gestionar proveedores de IA, configurar API Keys y seleccionar modelos.
---
## 🎯 Componentes Implementados
### 1. **Configuración de Proveedores de IA** (`aiProviders.ts`)
Define todos los proveedores y modelos disponibles:
```typescript
// 5 Proveedores soportados
- OpenAI (GPT-4o, GPT-4o Mini, GPT-4 Turbo, GPT-3.5)
- Anthropic (Claude 3 Opus, Sonnet, Haiku)
- Google (Gemini Pro, Gemini Pro Vision)
- Mistral AI (Large, Medium, Small)
- Cohere (Command, Command Light)
```
**Características por modelo**:
- ✅ Nombre y ID único
- ✅ Context window (tokens)
- ✅ Pricing (input/output)
- ✅ Provider asociado
---
### 2. **ModelSelector** - Selector de Modelos
Dropdown elegante en el header del chat para seleccionar modelos.
**Ubicación**: Header del área de chat
**Features**:
- ✅ Dropdown con lista de modelos
- ✅ Agrupados por proveedor
- ✅ Muestra context window
- ✅ Badge "Fast" para modelos económicos
- ✅ Checkmark en modelo seleccionado
- ✅ Empty state si no hay modelos configurados
**Visual**:
```
┌────────────────────────┐
│ 🤖 GPT-4o Mini ▾ │ ← Trigger
└────────────────────────┘
┌──────────────────────────┐
│ MODELOS DISPONIBLES │
├──────────────────────────┤
│ 🤖 OpenAI │
│ ✓ GPT-4o │
│ GPT-4o Mini [Fast] │
│ GPT-4 Turbo │
├──────────────────────────┤
│ 🧠 Anthropic │
│ Claude 3 Opus │
│ Claude 3 Sonnet │
└──────────────────────────┘
```
---
### 3. **SettingsView** - Configuración de IA
Pantalla completa para gestionar proveedores y API Keys.
**Acceso**: Click en ⚙️ Config en navigation sidebar
**Secciones**:
#### Provider Cards
Cada proveedor tiene su card con:
- ✅ Toggle enable/disable
- ✅ Input para API Key (tipo password)
- ✅ Botón show/hide key
- ✅ Validación de API Key
- ✅ Lista de modelos disponibles
- ✅ Status badge (configurado/error)
**Visual de Provider Card**:
```
┌────────────────────────────────────────┐
│ 🤖 OpenAI [Toggle] │
├────────────────────────────────────────┤
│ API Key │
│ 🔑 [sk-proj-***************] [👁️] │
Obtén tu API Key en OpenAI │
│ │
│ ✓ API Key configurada correctamente │
│ │
│ Modelos Disponibles │
│ [GPT-4o] [GPT-4o Mini] [GPT-4 Turbo] │
└────────────────────────────────────────┘
```
---
## 📐 Flujo de Uso Completo
### Configuración Inicial
#### 1. Ir a Configuración
```
1. Click en ⚙️ Config (navigation sidebar)
2. Se abre SettingsView
```
#### 2. Habilitar Proveedor
```
1. Buscar el proveedor deseado (ej: OpenAI)
2. Click en el toggle para habilitarlo
3. Se expande el formulario
```
#### 3. Configurar API Key
```
1. Click en el input de API Key
2. Pegar tu API Key
3. Click en 👁️ para ver/ocultar
4. Ver status de validación:
✓ Verde = Configurada
✗ Roja = Inválida
```
#### 4. Guardar Configuración
```
1. Click en "Guardar Cambios"
2. Configuración se guarda en localStorage
3. Mensaje de confirmación
```
---
### Uso de Modelos en Chat
#### 1. Volver a Chats
```
1. Click en 💬 Chats (navigation sidebar)
2. Los modelos configurados están disponibles
```
#### 2. Seleccionar Modelo
```
1. En el header del chat, ver selector actual
2. Click en el dropdown
3. Ver lista de modelos disponibles
4. Click en modelo deseado
5. Se actualiza el selector
```
#### 3. Chatear con Modelo
```
1. Escribir mensaje en el input
2. El mensaje se envía usando el modelo seleccionado
3. Respuesta del modelo aparece en el chat
```
---
## 🎨 Características del Sistema
### Gestión de Proveedores
**5 Proveedores Integrados**:
#### 1. OpenAI 🤖
```typescript
Modelos:
- GPT-4o (128K context)
- GPT-4o Mini (128K context) [Fast]
- GPT-4 Turbo (128K context)
- GPT-3.5 Turbo (16K context) [Fast]
API Key: sk-proj-...
Website: https://platform.openai.com
```
#### 2. Anthropic 🧠
```typescript
Modelos:
- Claude 3 Opus (200K context)
- Claude 3 Sonnet (200K context)
- Claude 3 Haiku (200K context) [Fast]
API Key: sk-ant-...
Website: https://console.anthropic.com
```
#### 3. Google 🔷
```typescript
Modelos:
- Gemini Pro (32K context)
- Gemini Pro Vision (16K context)
API Key: AIza...
Website: https://makersuite.google.com
```
#### 4. Mistral AI 🌊
```typescript
Modelos:
- Mistral Large (32K context)
- Mistral Medium (32K context)
- Mistral Small (32K context) [Fast]
API Key: ...
Website: https://mistral.ai
```
#### 5. Cohere 🎯
```typescript
Modelos:
- Command (4K context)
- Command Light (4K context) [Fast]
API Key: ...
Website: https://cohere.com
```
---
### Características del ModelSelector
#### Dropdown Features
-**Trigger compacto**: Muestra modelo actual + proveedor
-**Agrupación**: Modelos agrupados por proveedor
-**Context window**: Badge con tamaño de contexto
-**Fast badge**: Resalta modelos económicos
-**Checkmark**: Marca visual del modelo activo
-**Scroll**: Scroll interno si hay muchos modelos
-**Empty state**: Mensaje si no hay modelos
#### Filtrado Automático
Solo muestra modelos de proveedores que:
1. Están habilitados (toggle ON)
2. Tienen API Key configurada
3. API Key es válida (>10 caracteres)
---
### Características de SettingsView
#### Provider Card Features
-**Toggle visual**: Switch animado con gradiente
-**API Key input**: Tipo password con icono
-**Show/Hide**: Botón para revelar key
-**Validación**: Checkea longitud mínima
-**Status badge**: Verde (OK) / Rojo (Error)
-**Models grid**: Chips con nombres de modelos
-**Link helper**: Link directo al sitio del proveedor
#### Persistencia
-**localStorage**: Guarda config localmente
-**Auto-load**: Carga al iniciar la app
-**Save button**: Botón explícito para guardar
-**Feedback**: Mensaje de confirmación
---
## 💻 Código Implementado
### aiProviders.ts
```typescript
export interface AIProvider {
id: string;
name: string;
icon: string;
enabled: boolean;
apiKey?: string;
models: AIModel[];
}
export interface AIModel {
id: string;
name: string;
providerId: string;
contextWindow: number;
pricing?: {
input: number;
output: number;
};
}
```
### App.tsx - Gestión de Estado
```typescript
const [providers, setProviders] = useState<AIProvider[]>([]);
const [selectedModel, setSelectedModel] = useState<AIModel | null>(null);
// Load from localStorage
useEffect(() => {
const saved = localStorage.getItem('ai_providers');
if (saved) {
setProviders(JSON.parse(saved));
}
}, []);
// Get available models
const getAvailableModels = (providersList: AIProvider[]): AIModel[] => {
return providersList
.filter(p => p.enabled && p.apiKey && p.apiKey.length > 10)
.flatMap(p => p.models);
};
```
---
## 📁 Archivos Creados
### Configuración
```
client/src/config/
└── aiProviders.ts (5 providers, 17 models)
```
### Componentes
```
client/src/components/
├── ModelSelector.tsx (Dropdown de modelos)
└── SettingsView.tsx (Configuración de IA)
```
### Modificados
```
client/src/
├── App.tsx (Estado de modelos)
├── LobeChatArea.tsx (Props de modelo)
└── NavigationSidebar.tsx (Vista settings)
```
---
## 🎯 Casos de Uso
### Caso 1: Usuario Nuevo
```
1. Abre NexusChat por primera vez
2. Ve mensaje "No hay modelos disponibles"
3. Click en ⚙️ Config
4. Habilita OpenAI
5. Pega API Key de OpenAI
6. Click "Guardar Cambios"
7. Vuelve a 💬 Chats
8. Selector muestra modelos de OpenAI
9. Selecciona GPT-4o Mini
10. Empieza a chatear
```
### Caso 2: Usuario con Múltiples Proveedores
```
1. En Settings, habilita:
- OpenAI ✓
- Anthropic ✓
- Google ✓
2. Configura API Keys para los 3
3. Guarda
4. En Chats, selector muestra:
- OpenAI (4 modelos)
- Anthropic (3 modelos)
- Google (2 modelos)
5. Total: 9 modelos disponibles
6. Puede cambiar entre ellos fácilmente
```
### Caso 3: Modelo Según Tarea
```
Tareas de código:
- Selecciona GPT-4o (mejor para código)
Tareas simples/rápidas:
- Selecciona GPT-4o Mini (más rápido y económico)
Análisis largo:
- Selecciona Claude 3 Opus (200K context)
Consultas económicas:
- Selecciona Mistral Small (más barato)
```
---
## 🔒 Seguridad
### API Keys
-**Password type**: Input oculto por defecto
-**localStorage**: Guardado localmente (browser)
-**No server**: Keys no se envían al backend
-**Show/Hide**: Usuario controla visibilidad
### Mejores Prácticas
```
⚠️ IMPORTANTE:
- Las API Keys se guardan en localStorage
- Son visibles en DevTools
- Para producción, considera:
* Backend proxy
* Encriptación
* Variables de entorno
```
---
## 📊 Estado del Sistema
### Componentes
```
✅ aiProviders.ts (5 providers, 17 models)
✅ ModelSelector.tsx (Dropdown funcional)
✅ SettingsView.tsx (Config completa)
✅ NavigationSidebar.tsx (Vista settings)
✅ LobeChatArea.tsx (Integrado)
✅ App.tsx (Estado global)
```
### Funcionalidades
```
✅ Configurar proveedores
✅ Enable/Disable toggle
✅ Guardar API Keys
✅ Show/Hide keys
✅ Validación de keys
✅ Lista de modelos
✅ Selector en header
✅ Agrupación por provider
✅ Badges de context
✅ Fast indicators
✅ Persistencia localStorage
✅ Auto-load al iniciar
```
---
## 🚀 Para Probar
### 1. Iniciar Aplicación
```bash
npm run dev:all
```
### 2. Configurar Proveedor
```
1. Click en ⚙️ Config
2. Habilitar OpenAI (toggle)
3. Pegar API Key (ej: sk-proj-abc123...)
4. Click "Guardar Cambios"
```
### 3. Usar Modelo
```
1. Click en 💬 Chats
2. Ver selector en header
3. Click en dropdown
4. Seleccionar modelo
5. Escribir mensaje
6. Ver respuesta
```
---
## 🎉 Resultado
Has conseguido un sistema completo:
-**5 Proveedores** configurables
-**17 Modelos** disponibles
-**Configuración visual** con toggles y API Keys
-**Selector elegante** en el chat
-**Persistencia** en localStorage
-**Validación** de API Keys
-**Seguridad** con password fields
-**UX pulida** con badges y estados
---
**Implementado**: 14 de Febrero, 2026
**Componentes nuevos**: 3
**Proveedores**: 5
**Modelos**: 17
**Estado**: ✅ **COMPLETAMENTE FUNCIONAL**