--- id: "RF-LLM-006" title: "Gestión de Contexto y Memoria" type: "Requirement" status: "Done" priority: "Alta" epic: "OQI-007" project: "trading-platform" version: "1.0.0" created_date: "2025-12-05" updated_date: "2026-01-04" --- # RF-LLM-006: Gestión de Contexto y Memoria **Épica:** OQI-007 - LLM Strategy Agent **Versión:** 1.0 **Fecha:** 2025-12-05 **Estado:** Planificado **Prioridad:** P0 - Crítico --- ## Descripción El agente LLM debe mantener contexto coherente durante las conversaciones, recordar información relevante del usuario entre sesiones, y enriquecer automáticamente cada interacción con datos de mercado y perfil del usuario. --- ## Requisitos Funcionales ### RF-LLM-006.1: Contexto de Conversación - El sistema debe mantener historial de mensajes de la conversación actual - El sistema debe limitar contexto a N mensajes para optimizar tokens - El sistema debe resumir conversaciones largas automáticamente - El sistema debe preservar información crítica al resumir - El sistema debe detectar cambio de tema y ajustar contexto ### RF-LLM-006.2: Memoria de Usuario - El sistema debe recordar preferencias del usuario - El sistema debe recordar símbolos de interés frecuente - El sistema debe recordar estilo de comunicación preferido - El sistema debe recordar preguntas y respuestas relevantes pasadas - El sistema debe actualizar memoria basado en interacciones ### RF-LLM-006.3: Enriquecimiento Automático - El sistema debe inyectar datos de mercado relevantes - El sistema debe incluir posiciones actuales del usuario - El sistema debe incluir alertas activas relacionadas - El sistema debe incluir progreso educativo si es relevante - El sistema debe incluir señales ML si el usuario tiene acceso ### RF-LLM-006.4: Contexto de Sistema - El agente debe conocer fecha y hora actual - El agente debe conocer estado del mercado (abierto/cerrado) - El agente debe conocer eventos económicos próximos - El agente debe conocer configuración regional del usuario ### RF-LLM-006.5: Gestión de Tokens - El sistema debe monitorear uso de tokens por conversación - El sistema debe comprimir contexto cuando se acerca al límite - El sistema debe priorizar información más reciente/relevante - El sistema debe estimar tokens antes de llamar al LLM --- ## Criterios de Aceptación ```gherkin Feature: Gestión de Contexto Scenario: Mantener contexto en conversación Given inicié conversación preguntando sobre AAPL And el agente analizó AAPL When pregunto "¿Y qué opinas del volumen?" Then el agente entiende que me refiero a AAPL And no necesito repetir el símbolo Scenario: Recordar preferencias entre sesiones Given ayer configuré preferencia "siempre mostrar disclaimer" And cerré la aplicación When inicio nueva conversación hoy Then el agente recuerda mi preferencia And incluye disclaimers automáticamente Scenario: Enriquecimiento automático de contexto Given tengo posición abierta en TSLA And hay alerta activa para TSLA a $240 When pregunto "¿Cómo va mi inversión?" Then el agente automáticamente incluye info de TSLA And menciona la alerta activa And muestra P&L actual Scenario: Resumen de conversación larga Given tenemos 30 mensajes en la conversación And se acerca el límite de tokens When envío nuevo mensaje Then el sistema resume mensajes antiguos And preserva puntos clave de la conversación And el agente responde coherentemente Scenario: Contexto de mercado automático Given el mercado US está cerrado (es sábado) When pregunto "¿Debería comprar AAPL ahora?" Then el agente indica que el mercado está cerrado And sugiere usar paper trading o esperar apertura ``` --- ## Reglas de Negocio | Regla | Descripción | |-------|-------------| | RN-001 | Máximo 20 mensajes en contexto inmediato | | RN-002 | Resumir automáticamente después de 15 mensajes | | RN-003 | Memoria de usuario persiste máximo 90 días | | RN-004 | No recordar información financiera sensible | | RN-005 | Límite de tokens por request: 8000 input, 2000 output | | RN-006 | Contexto de mercado actualizado cada 60 segundos | --- ## Estructura de Contexto ```yaml context: # Información del usuario user: id: "user-123" name: "Carlos" plan: "premium" risk_profile: "moderate" experience: "intermediate" language: "es" timezone: "America/Mexico_City" # Preferencias recordadas preferences: show_disclaimers: true preferred_timeframe: "4h" favorite_indicators: ["RSI", "MACD"] notification_style: "detailed" # Contexto de mercado (auto-inyectado) market: status: "open" current_time: "2025-12-05T10:30:00-06:00" next_close: "2025-12-05T15:00:00-05:00" upcoming_events: - event: "Fed Minutes" date: "2025-12-06" impact: "high" # Portfolio del usuario (si es relevante) portfolio: positions: - symbol: "AAPL" quantity: 50 avg_price: 175.00 current_pnl: 525.00 - symbol: "TSLA" quantity: 20 avg_price: 250.00 current_pnl: -100.00 alerts: - symbol: "TSLA" condition: "<=" price: 240 # Historial de conversación conversation: id: "conv-456" started_at: "2025-12-05T10:00:00" messages_count: 8 summary: null # Se genera cuando supera 15 mensajes recent_topics: ["AAPL analysis", "RSI interpretation"] # Señales ML (si tiene acceso) ml_signals: AAPL: prediction: "bullish" confidence: 0.72 updated_at: "2025-12-05T10:25:00" ``` --- ## Proceso de Gestión de Contexto ``` ┌─────────────────────────────────────────────────────────────┐ │ 1. RECIBIR MENSAJE DEL USUARIO │ │ "¿Cómo va mi posición de Tesla?" │ └──────────────────────────┬──────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 2. CONSTRUIR CONTEXTO │ │ a) Cargar perfil de usuario │ │ b) Cargar preferencias de memoria │ │ c) Cargar historial de conversación │ │ d) Identificar símbolos mencionados (TSLA) │ │ e) Cargar datos de mercado relevantes │ │ f) Cargar posiciones del portfolio │ │ g) Cargar alertas activas │ │ h) Cargar señales ML (si tiene acceso) │ └──────────────────────────┬──────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 3. VERIFICAR TOKENS │ │ - Estimar tokens del contexto actual │ │ - Si > 6000 tokens → comprimir/resumir │ │ - Priorizar: mensaje actual > historial reciente > datos │ └──────────────────────────┬──────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 4. GENERAR SYSTEM PROMPT │ │ - Incluir rol del agente │ │ - Incluir contexto comprimido │ │ - Incluir instrucciones específicas │ └──────────────────────────┬──────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 5. LLAMAR AL LLM │ │ - Enviar system prompt + messages │ │ - Procesar respuesta │ └──────────────────────────┬──────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 6. ACTUALIZAR MEMORIA │ │ - Guardar mensaje en historial │ │ - Actualizar temas recientes │ │ - Detectar preferencias nuevas │ │ - Actualizar símbolos de interés │ └─────────────────────────────────────────────────────────────┘ ``` --- ## Algoritmo de Compresión de Contexto ```markdown ## Prioridad de Información (de mayor a menor) 1. **Crítico** (nunca comprimir) - Mensaje actual del usuario - Últimos 3 mensajes de contexto - Posiciones abiertas mencionadas 2. **Alto** (comprimir si es necesario) - Historial de conversación (resumir) - Datos de mercado (reducir a esenciales) - Preferencias de usuario 3. **Medio** (comprimir agresivamente) - Alertas no relacionadas al tema - Progreso educativo - Eventos económicos lejanos 4. **Bajo** (eliminar si falta espacio) - Memoria de conversaciones antiguas - Símbolos no mencionados - Detalles de portfolio no relevantes ``` --- ## Dependencias ### Épicas Requeridas - **OQI-001:** Perfil de usuario y preferencias - **OQI-003:** Datos de mercado y portfolio - **OQI-006:** Señales ML ### Servicios de Base de Datos - Conversations table (historial) - User_Preferences table (memoria) - User_Memory table (información recordada) --- ## Especificaciones Técnicas Relacionadas - [ET-LLM-001: Arquitectura del Chat](../especificaciones/ET-LLM-001-arquitectura-chat.md) - [ET-LLM-006: Gestión de Memoria](../especificaciones/ET-LLM-006-gestion-memoria.md) --- ## Historias de Usuario Relacionadas - US-LLM-001: Enviar mensaje al copilot (contexto básico) - US-LLM-002: Conversación continua con memoria --- *Documento de requerimientos - Sistema NEXUS* *Trading Platform*