124 lines
6.8 KiB
Markdown
124 lines
6.8 KiB
Markdown
# Arquitectura Local LLM Agent
|
|
|
|
## Vision General
|
|
|
|
Local LLM Agent es un gateway de LLM local que permite a los agentes del workspace (Claude Code, Trae, Gemini) delegar tareas simples para optimizar el uso de contexto y tokens en los modelos principales.
|
|
|
|
## Diagrama de Arquitectura
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ AGENTES EXTERNOS │
|
|
│ Claude Code (Orquestador) │ Trae (Ejecutor) │ Gemini (QA) │
|
|
└─────────────────────────────┬───────────────────────────────────┘
|
|
│ HTTP/REST
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ LOCAL-LLM-AGENT (Puerto 3160) │
|
|
│ │
|
|
│ ┌───────────────────────────────────────────────────────────┐ │
|
|
│ │ API Gateway (NestJS) │ │
|
|
│ │ │ │
|
|
│ │ ┌─────────────────────┐ ┌─────────────────────────────┐ │ │
|
|
│ │ │ OpenAI Compatible │ │ MCP Tools │ │ │
|
|
│ │ │ POST /v1/chat/... │ │ POST /mcp/tools/:name │ │ │
|
|
│ │ │ GET /v1/models │ │ GET /mcp/tools │ │ │
|
|
│ │ └─────────────────────┘ └─────────────────────────────┘ │ │
|
|
│ │ │ │ │
|
|
│ │ ┌───────────────────────────┴────────────────────────┐ │ │
|
|
│ │ │ Router Service │ │ │
|
|
│ │ │ - Tier Classification (small/main) │ │ │
|
|
│ │ │ - Token Estimation │ │ │
|
|
│ │ │ - Project Detection │ │ │
|
|
│ │ └────────────────────────────────────────────────────┘ │ │
|
|
│ └───────────────────────────────────────────────────────────┘ │
|
|
│ │ HTTP │
|
|
│ ┌───────────────────────────┴───────────────────────────────┐ │
|
|
│ │ Inference Engine (Python FastAPI) │ │
|
|
│ │ │ │
|
|
│ │ ┌─────────────────────┐ ┌─────────────────────────────┐ │ │
|
|
│ │ │ Ollama Backend │ │ vLLM Backend (futuro) │ │ │
|
|
│ │ │ (MVP) │ │ - Multi-LoRA │ │ │
|
|
│ │ └─────────────────────┘ │ - Continuous Batching │ │ │
|
|
│ │ └─────────────────────────────┘ │ │
|
|
│ └───────────────────────────────────────────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ NVIDIA RTX 5060 Ti (16GB VRAM) │
|
|
│ GPT-OSS 20B Q4_K_M (~14GB) + KV Cache (~1.5GB) │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Componentes
|
|
|
|
### 1. API Gateway (NestJS)
|
|
|
|
Punto de entrada para todos los agentes. Expone:
|
|
|
|
- **OpenAI-Compatible API**: Compatibilidad con el estandar OpenAI para integracion facil
|
|
- **MCP Tools API**: Herramientas especializadas para tareas comunes
|
|
- **Router Service**: Clasificacion de tier y deteccion de proyecto
|
|
|
|
### 2. Inference Engine (Python FastAPI)
|
|
|
|
Motor de inferencia con soporte para multiples backends:
|
|
|
|
- **Ollama Backend (MVP)**: Integracion con Ollama existente
|
|
- **vLLM Backend (Futuro)**: Para capacidades avanzadas (Multi-LoRA, batching)
|
|
|
|
### 3. Router Service
|
|
|
|
Clasifica requests en tiers:
|
|
|
|
| Tier | Max Tokens | Max Context | Latencia Target | Uso |
|
|
|------|------------|-------------|-----------------|-----|
|
|
| small | 512 | 4096 | 500ms | Clasificacion, extraccion simple |
|
|
| main | 2048 | 16384 | 2000ms | Tareas complejas |
|
|
|
|
## Flujo de Requests
|
|
|
|
```
|
|
1. Agente envia request a Gateway (3160)
|
|
2. Router clasifica tier basado en:
|
|
- Estimacion de tokens
|
|
- Header x_tier (opcional)
|
|
- Tipo de herramienta MCP
|
|
3. Gateway envia a Inference Engine (3161)
|
|
4. Inference Engine ejecuta contra Ollama (11434)
|
|
5. Respuesta regresa al agente
|
|
```
|
|
|
|
## Configuracion de VRAM
|
|
|
|
```
|
|
Total VRAM: 16GB
|
|
├── Modelo (GPT-OSS 20B Q4_K_M): 14GB
|
|
├── KV Cache (dinamico): 1.5GB
|
|
└── Buffer: 0.5GB
|
|
```
|
|
|
|
## Escalabilidad
|
|
|
|
- **Concurrencia**: 2-3 agentes simultaneos
|
|
- **Batch Size**: 4 requests
|
|
- **Context Length**: Hasta 16384 tokens
|
|
|
|
## Evolucion Planeada
|
|
|
|
### Fase 1 (MVP)
|
|
- Gateway basico
|
|
- Ollama backend
|
|
- MCP tools basicos
|
|
|
|
### Fase 2 (Multi-Proyecto)
|
|
- LoRA adapters por proyecto
|
|
- Project detection automatico
|
|
- Metricas por proyecto
|
|
|
|
### Fase 3 (Produccion)
|
|
- vLLM backend en WSL
|
|
- Multi-LoRA simultaneo
|
|
- Continuous batching
|