Spaces:
Running
Running
| <html lang="es"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Informe de Avances | Chatbot Prepa en Línea SEP</title> | |
| <link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,300;14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet"> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
| <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script> | |
| <style> | |
| :root { | |
| --primary-color: #2c3e50; | |
| --secondary-color: #3498db; | |
| --accent-color: #1abc9c; | |
| --success-color: #27ae60; | |
| --warning-color: #f39c12; | |
| --danger-color: #e74c3c; | |
| --light-bg: #ecf0f1; | |
| } | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| body { | |
| font-family: 'Inter', sans-serif; | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| color: var(--primary-color); | |
| min-height: 100vh; | |
| padding: 2rem; | |
| } | |
| .report-container { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| background: white; | |
| border-radius: 24px; | |
| box-shadow: 0 25px 80px rgba(0, 0, 0, 0.25); | |
| overflow: hidden; | |
| } | |
| .header { | |
| background: linear-gradient(135deg, var(--primary-color) 0%, #34495e 100%); | |
| color: white; | |
| padding: 2.5rem 3rem; | |
| text-align: center; | |
| } | |
| .header h1 { | |
| font-size: 2.4rem; | |
| font-weight: 700; | |
| margin-bottom: 0.5rem; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 1rem; | |
| } | |
| .header h1 i { | |
| color: var(--accent-color); | |
| } | |
| .header .subtitle { | |
| font-size: 1.1rem; | |
| opacity: 0.9; | |
| margin-bottom: 1rem; | |
| } | |
| .header .meta { | |
| display: flex; | |
| justify-content: center; | |
| gap: 2rem; | |
| font-size: 0.9rem; | |
| opacity: 0.8; | |
| } | |
| .header .meta span { | |
| background: rgba(255,255,255,0.15); | |
| padding: 0.4rem 1rem; | |
| border-radius: 20px; | |
| } | |
| .content { | |
| padding: 2rem 3rem; | |
| } | |
| .section { | |
| margin-bottom: 2.5rem; | |
| padding-bottom: 2rem; | |
| border-bottom: 1px solid #e0e0e0; | |
| } | |
| .section:last-child { | |
| border-bottom: none; | |
| } | |
| .section-title { | |
| font-size: 1.5rem; | |
| font-weight: 600; | |
| color: var(--primary-color); | |
| margin-bottom: 1.2rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.8rem; | |
| } | |
| .section-title i { | |
| color: var(--secondary-color); | |
| } | |
| .executive-summary { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 1.5rem; | |
| margin-bottom: 1.5rem; | |
| } | |
| .kpi-card { | |
| background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); | |
| border-radius: 16px; | |
| padding: 1.5rem; | |
| border-left: 4px solid var(--accent-color); | |
| } | |
| .kpi-card.highlight { | |
| background: linear-gradient(135deg, var(--secondary-color) 0%, #2980b9 100%); | |
| color: white; | |
| border-left-color: var(--accent-color); | |
| } | |
| .kpi-card.highlight .kpi-value { | |
| color: white; | |
| } | |
| .kpi-label { | |
| font-size: 0.85rem; | |
| color: #666; | |
| margin-bottom: 0.5rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| } | |
| .kpi-card.highlight .kpi-label { | |
| color: rgba(255,255,255,0.85); | |
| } | |
| .kpi-value { | |
| font-size: 2rem; | |
| font-weight: 700; | |
| color: var(--primary-color); | |
| } | |
| .kpi-trend { | |
| font-size: 0.8rem; | |
| margin-top: 0.5rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.3rem; | |
| } | |
| .kpi-trend.up { | |
| color: var(--success-color); | |
| } | |
| .kpi-trend.down { | |
| color: var(--danger-color); | |
| } | |
| .flow-diagram { | |
| background: #f8f9fa; | |
| border-radius: 16px; | |
| padding: 2rem; | |
| text-align: center; | |
| margin: 1.5rem 0; | |
| } | |
| .flow-diagram h3 { | |
| font-size: 1rem; | |
| margin-bottom: 1.5rem; | |
| color: #555; | |
| } | |
| .flow-container { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| flex-wrap: wrap; | |
| gap: 0.5rem; | |
| } | |
| .flow-step { | |
| background: white; | |
| border-radius: 12px; | |
| padding: 1rem 1.5rem; | |
| box-shadow: 0 4px 15px rgba(0,0,0,0.1); | |
| min-width: 140px; | |
| text-align: center; | |
| transition: all 0.4s ease; | |
| opacity: 0; | |
| transform: translateX(-30px); | |
| } | |
| .flow-step.active { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| .flow-step:hover { | |
| transform: translateY(-5px); | |
| } | |
| .flow-step i { | |
| font-size: 1.5rem; | |
| margin-bottom: 0.5rem; | |
| display: block; | |
| } | |
| .flow-step.user i { color: var(--secondary-color); } | |
| .flow-step.retrieval i { color: var(--warning-color); } | |
| .flow-step.llm i { color: var(--accent-color); } | |
| .flow-step.response i { color: var(--success-color); } | |
| .flow-step .label { | |
| font-size: 0.8rem; | |
| font-weight: 600; | |
| color: var(--primary-color); | |
| } | |
| .flow-arrow { | |
| font-size: 1.5rem; | |
| color: #aaa; | |
| margin: 0 0.3rem; | |
| } | |
| .architecture-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .arch-box { | |
| background: #f8f9fa; | |
| border-radius: 12px; | |
| padding: 1.5rem; | |
| } | |
| .arch-box h4 { | |
| font-size: 1rem; | |
| margin-bottom: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .arch-box h4 i { | |
| color: var(--secondary-color); | |
| } | |
| .arch-box ul { | |
| list-style: none; | |
| } | |
| .arch-box li { | |
| padding: 0.4rem 0; | |
| font-size: 0.9rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .arch-box li i { | |
| color: var(--accent-color); | |
| font-size: 0.7rem; | |
| } | |
| .metrics-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| margin-top: 1rem; | |
| } | |
| .metrics-table th, | |
| .metrics-table td { | |
| padding: 1rem; | |
| text-align: left; | |
| border-bottom: 1px solid #e0e0e0; | |
| } | |
| .metrics-table th { | |
| background: #f8f9fa; | |
| font-weight: 600; | |
| font-size: 0.85rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| } | |
| .metrics-table td { | |
| font-size: 0.95rem; | |
| } | |
| .badge { | |
| display: inline-block; | |
| padding: 0.25rem 0.75rem; | |
| border-radius: 20px; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| } | |
| .badge.success { | |
| background: #d4edda; | |
| color: #155724; | |
| } | |
| .badge.warning { | |
| background: #fff3cd; | |
| color: #856404; | |
| } | |
| .progress-container { | |
| margin-top: 1.5rem; | |
| } | |
| .progress-item { | |
| margin-bottom: 1rem; | |
| } | |
| .progress-label { | |
| display: flex; | |
| justify-content: space-between; | |
| margin-bottom: 0.5rem; | |
| font-size: 0.9rem; | |
| } | |
| .progress-bar { | |
| height: 10px; | |
| background: #e9ecef; | |
| border-radius: 10px; | |
| overflow: hidden; | |
| } | |
| .progress-fill { | |
| height: 100%; | |
| border-radius: 10px; | |
| transition: width 1s ease; | |
| } | |
| .progress-fill.primary { | |
| background: linear-gradient(90deg, var(--secondary-color), var(--accent-color)); | |
| } | |
| .progress-fill.accent { | |
| background: linear-gradient(90deg, var(--accent-color), var(--success-color)); | |
| } | |
| .conclusions { | |
| background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%); | |
| border-radius: 16px; | |
| padding: 1.5rem; | |
| } | |
| .conclusions h3 { | |
| margin-bottom: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .conclusions ul { | |
| list-style: none; | |
| } | |
| .conclusions li { | |
| padding: 0.5rem 0; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.8rem; | |
| } | |
| .conclusions li i { | |
| color: var(--success-color); | |
| } | |
| .next-steps { | |
| background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%); | |
| border-radius: 16px; | |
| padding: 1.5rem; | |
| margin-top: 1.5rem; | |
| } | |
| .next-steps h3 { | |
| margin-bottom: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .next-steps ul { | |
| list-style: none; | |
| } | |
| .next-steps li { | |
| padding: 0.5rem 0; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.8rem; | |
| } | |
| .next-steps li i { | |
| color: var(--secondary-color); | |
| } | |
| .footer { | |
| background: #f8f9fa; | |
| padding: 1.5rem 3rem; | |
| text-align: center; | |
| font-size: 0.85rem; | |
| color: #666; | |
| border-top: 1px solid #e0e0e0; | |
| } | |
| .footer .developers { | |
| color: var(--primary-color); | |
| margin: 0.5rem 0; | |
| } | |
| .screenshot-gallery { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); | |
| gap: 1.5rem; | |
| margin-top: 1.5rem; | |
| } | |
| .screenshot-card { | |
| background: #f8f9fa; | |
| border-radius: 12px; | |
| overflow: hidden; | |
| box-shadow: 0 4px 15px rgba(0,0,0,0.1); | |
| } | |
| .screenshot-card img { | |
| width: 100%; | |
| height: auto; | |
| display: block; | |
| max-height: 350px; | |
| object-fit: contain; | |
| } | |
| .timeline { | |
| position: relative; | |
| padding: 1rem 0; | |
| margin: 1.5rem 0; | |
| } | |
| .timeline::before { | |
| content: ''; | |
| position: absolute; | |
| left: 20px; | |
| top: 0; | |
| bottom: 0; | |
| width: 4px; | |
| background: linear-gradient(180deg, var(--secondary-color), var(--accent-color)); | |
| border-radius: 4px; | |
| } | |
| .timeline-item { | |
| position: relative; | |
| padding-left: 60px; | |
| margin-bottom: 1.5rem; | |
| } | |
| .timeline-marker { | |
| position: absolute; | |
| left: 10px; | |
| top: 5px; | |
| width: 24px; | |
| height: 24px; | |
| background: white; | |
| border: 4px solid var(--secondary-color); | |
| border-radius: 50%; | |
| z-index: 1; | |
| } | |
| .timeline-item.current .timeline-marker { | |
| background: var(--accent-color); | |
| border-color: var(--accent-color); | |
| animation: pulse 2s infinite; | |
| } | |
| @keyframes pulse { | |
| 0% { box-shadow: 0 0 0 0 rgba(26, 188, 156, 0.7); } | |
| 70% { box-shadow: 0 0 0 10px rgba(26, 188, 156, 0); } | |
| 100% { box-shadow: 0 0 0 0 rgba(26, 188, 156, 0); } | |
| } | |
| .timeline-content { | |
| background: #f8f9fa; | |
| padding: 1rem; | |
| border-radius: 12px; | |
| border-left: 4px solid var(--secondary-color); | |
| } | |
| .timeline-item.current .timeline-content { | |
| background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%); | |
| border-left-color: var(--accent-color); | |
| } | |
| .timeline-date { | |
| font-size: 0.8rem; | |
| color: #666; | |
| margin-bottom: 0.3rem; | |
| } | |
| .timeline-content h4 { | |
| font-size: 1rem; | |
| margin-bottom: 0.3rem; | |
| color: var(--primary-color); | |
| } | |
| .timeline-content p { | |
| font-size: 0.85rem; | |
| color: #555; | |
| margin: 0; | |
| } | |
| .infra-highlight { | |
| margin-top: 1.5rem; | |
| } | |
| .infra-current { | |
| background: linear-gradient(135deg, #1e3a5f 0%, #2c5282 100%); | |
| border-radius: 16px; | |
| padding: 1.5rem; | |
| color: white; | |
| margin-bottom: 1.5rem; | |
| } | |
| .infra-header { | |
| font-size: 1.2rem; | |
| font-weight: 600; | |
| margin-bottom: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .infra-header i { | |
| color: var(--accent-color); | |
| } | |
| .infra-hf { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.8rem; | |
| font-size: 1.5rem; | |
| font-weight: 700; | |
| margin-bottom: 1rem; | |
| } | |
| .infra-hf i { | |
| font-size: 2rem; | |
| } | |
| .infra-details { | |
| display: flex; | |
| gap: 2rem; | |
| margin-bottom: 1rem; | |
| flex-wrap: wrap; | |
| } | |
| .infra-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| background: rgba(255,255,255,0.15); | |
| padding: 0.5rem 1rem; | |
| border-radius: 8px; | |
| } | |
| .infra-item i { | |
| color: var(--accent-color); | |
| } | |
| .infra-screenshot { | |
| width: 100%; | |
| max-width: 400px; | |
| border-radius: 8px; | |
| border: 2px solid rgba(255,255,255,0.3); | |
| margin-top: 1rem; | |
| } | |
| .infra-hf-badge { | |
| background: rgba(255,255,255,0.15); | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| text-align: center; | |
| } | |
| .infra-hf-badge i { | |
| font-size: 4rem; | |
| margin-bottom: 0.5rem; | |
| } | |
| .infra-hf-badge span { | |
| display: block; | |
| font-size: 1.2rem; | |
| font-weight: 600; | |
| } | |
| .infra-arrow { | |
| text-align: center; | |
| font-size: 2rem; | |
| color: #aaa; | |
| margin: 1rem 0; | |
| } | |
| .migration-options h3 { | |
| font-size: 1.1rem; | |
| margin-bottom: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .migration-options h3 i { | |
| color: var(--secondary-color); | |
| } | |
| .cloud-options { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 1rem; | |
| margin-bottom: 1rem; | |
| } | |
| .cloud-card { | |
| background: white; | |
| border-radius: 12px; | |
| padding: 1.2rem; | |
| text-align: center; | |
| box-shadow: 0 4px 15px rgba(0,0,0,0.08); | |
| border: 2px solid transparent; | |
| transition: all 0.3s; | |
| } | |
| .cloud-card:hover { | |
| border-color: var(--secondary-color); | |
| transform: translateY(-3px); | |
| } | |
| .cloud-card i { | |
| font-size: 2.5rem; | |
| margin-bottom: 0.5rem; | |
| } | |
| .cloud-card:nth-child(1) i { color: #FF9900; } | |
| .cloud-card:nth-child(2) i { color: #4285F4; } | |
| .cloud-card:nth-child(3) i { color: var(--primary-color); } | |
| .cloud-card span { | |
| display: block; | |
| font-weight: 600; | |
| margin-bottom: 0.3rem; | |
| } | |
| .cloud-card p { | |
| font-size: 0.8rem; | |
| color: #666; | |
| margin: 0; | |
| } | |
| .migration-note { | |
| background: #e3f2fd; | |
| padding: 1rem; | |
| border-radius: 8px; | |
| font-size: 0.9rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .migration-note i { | |
| color: var(--secondary-color); | |
| } | |
| .screenshot-caption { | |
| padding: 1rem; | |
| text-align: center; | |
| font-weight: 600; | |
| color: var(--primary-color); | |
| background: white; | |
| } | |
| @media (max-width: 768px) { | |
| body { padding: 1rem; } | |
| .header, .content, .footer { padding: 1.5rem; } | |
| .header h1 { font-size: 1.8rem; } | |
| .meta { flex-direction: column; gap: 0.5rem; } | |
| .flow-container { flex-direction: column; } | |
| .flow-arrow { transform: rotate(90deg); } | |
| .screenshot-gallery { grid-template-columns: 1fr; } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="report-container"> | |
| <div class="header"> | |
| <h1><i class="fas fa-robot"></i> Chatbot Educativo Prepa en Línea SEP</h1> | |
| <p class="subtitle">Informe de Avances y Estado del Sistema</p> | |
| <div class="meta"> | |
| <span><i class="fas fa-calendar"></i> Abril 2026</span> | |
| <span><i class="fas fa-rocket"></i> Evolución del Modelo de IA</span> | |
| </div> | |
| </div> | |
| <div class="content"> | |
| <div class="section"> | |
| <h2 class="section-title"><i class="fas fa-chart-pie"></i> Resumen</h2> | |
| <div class="executive-summary"> | |
| <div class="kpi-card highlight"> | |
| <div class="kpi-label">Modelo de IA</div> | |
| <div class="kpi-value">Gemini 2.5</div> | |
| <div class="kpi-trend"><i class="fas fa-bolt"></i> Flash</div> | |
| </div> | |
| <div class="kpi-card"> | |
| <div class="kpi-label">Tiempo de Respuesta</div> | |
| <div class="kpi-value">2-4s</div> | |
| <div class="kpi-trend up"><i class="fas fa-stopwatch"></i> Rápido</div> | |
| </div> | |
| <div class="kpi-card"> | |
| <div class="kpi-label">Confianza</div> | |
| <div class="kpi-value">98.3%</div> | |
| <div class="kpi-trend up"><i class="fas fa-check-circle"></i> Alta</div> | |
| </div> | |
| <div class="kpi-card"> | |
| <div class="kpi-label">Documentos</div> | |
| <div class="kpi-value">7</div> | |
| <div class="kpi-trend up"><i class="fas fa-file-alt"></i> Oficiales</div> | |
| </div> | |
| </div> | |
| <p style="margin-top: 1.5rem; font-size: 1.05rem; line-height: 1.6; color: #444; background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%); padding: 1.2rem; border-radius: 12px; border-left: 4px solid var(--success-color);"> | |
| <strong>Evolución final del Chatbot RAG de Prepa en Línea SEP:</strong> Con optimizaciones en documentos, respuestas y velocidad, el sistema alcanza una <strong>tasa de éxito del 100%</strong> con un <strong>tiempo de respuesta de 2 a 4 segundos</strong>, ofreciendo calidad excelente y consistente. <strong>El sistema está listo para evaluación por grupo piloto y potencial despliegue en producción.</strong> | |
| </p> | |
| </div> | |
| <div class="section"> | |
| <h2 class="section-title"><i class="fas fa-history"></i> Evolución del Modelo de IA</h2> | |
| <div class="timeline"> | |
| <div class="timeline-item"> | |
| <div class="timeline-marker"></div> | |
| <div class="timeline-content"> | |
| <div class="timeline-date">Enero 2026</div> | |
| <h4>BERT</h4> | |
| <p>Modelo base de embeddings para pruebas iniciales</p> | |
| </div> | |
| </div> | |
| <div class="timeline-item"> | |
| <div class="timeline-marker"></div> | |
| <div class="timeline-content"> | |
| <div class="timeline-date">Febrero 2026</div> | |
| <h4>TinyLlama</h4> | |
| <p>Primer modelo generativo pruebas locally</p> | |
| </div> | |
| </div> | |
| <div class="timeline-item"> | |
| <div class="timeline-marker"></div> | |
| <div class="timeline-content"> | |
| <div class="timeline-date">Marzo 2026</div> | |
| <h4>Gemma 2B</h4> | |
| <p>Mejora en calidad de respuestas con 2B parámetros</p> | |
| </div> | |
| </div> | |
| <div class="timeline-item"> | |
| <div class="timeline-marker"></div> | |
| <div class="timeline-content"> | |
| <div class="timeline-date">Marzo 2026</div> | |
| <h4>Phi-3 Mini</h4> | |
| <p>Modelo de Microsoft para comparison</p> | |
| </div> | |
| </div> | |
| <div class="timeline-item"> | |
| <div class="timeline-marker"></div> | |
| <div class="timeline-content"> | |
| <div class="timeline-date">Abril 2026</div> | |
| <h4>Gemma 4 E4B</h4> | |
| <p>Última versión de Ollama con mejor contexto</p> | |
| </div> | |
| </div> | |
| <div class="timeline-item current"> | |
| <div class="timeline-marker"></div> | |
| <div class="timeline-content"> | |
| <div class="timeline-date">Abril 2026</div> | |
| <h4>⭐ Gemini 2.5 Flash</h4> | |
| <p><strong>Modelo actual:</strong> API de Google con 1M tokens contexto, multimodal, mejor rendimiento</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="section"> | |
| <h2 class="section-title"><i class="fas fa-project-diagram"></i> Arquitectura del Sistema</h2> | |
| <div class="flow-diagram"> | |
| <h3>Flujo de Conversación</h3> | |
| <div class="flow-container"> | |
| <div class="flow-step user"> | |
| <i class="fas fa-user"></i> | |
| <div class="label">Usuario</div> | |
| </div> | |
| <span class="flow-arrow"><i class="fas fa-arrow-right"></i></span> | |
| <div class="flow-step"> | |
| <i class="fas fa-comments"></i> | |
| <div class="label">Interfaz Web</div> | |
| </div> | |
| <span class="flow-arrow"><i class="fas fa-arrow-right"></i></span> | |
| <div class="flow-step retrieval"> | |
| <i class="fas fa-search"></i> | |
| <div class="label">Búsqueda</div> | |
| </div> | |
| <span class="flow-arrow"><i class="fas fa-arrow-right"></i></span> | |
| <div class="flow-step retrieval"> | |
| <i class="fas fa-database"></i> | |
| <div class="label">Base de Conocimientos</div> | |
| </div> | |
| <span class="flow-arrow"><i class="fas fa-arrow-right"></i></span> | |
| <div class="flow-step llm"> | |
| <i class="fas fa-brain"></i> | |
| <div class="label">Gemini 2.5</div> | |
| </div> | |
| <span class="flow-arrow"><i class="fas fa-arrow-right"></i></span> | |
| <div class="flow-step response"> | |
| <i class="fas fa-reply"></i> | |
| <div class="label">Respuesta</div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="architecture-grid"> | |
| <div class="arch-box"> | |
| <h4><i class="fas fa-layer-group"></i> Tecnología de Servicio</h4> | |
| <ul> | |
| <li><i class="fas fa-check"></i> API web de alto rendimiento</li> | |
| <li><i class="fas fa-check"></i> Interfaz accesible desde cualquier dispositivo</li> | |
| <li><i class="fas fa-check"></i> Base de datos vectorial ultrarrápida</li> | |
| <li><i class="fas fa-check"></i> Comprensión de texto en múltiples idiomas</li> | |
| </ul> | |
| </div> | |
| <div class="arch-box"> | |
| <h4><i class="fas fa-robot"></i> Motor de IA Generativa</h4> | |
| <ul> | |
| <li><i class="fas fa-check"></i> Gemini 2.5 Flash de Google</li> | |
| <li><i class="fas fa-check"></i> Capacidad multimodal (texto, imágenes)</li> | |
| <li><i class="fas fa-check"></i> Ventana de contexto amplia (1M tokens)</li> | |
| <li><i class="fas fa-check"></i> Respuestas precisas y contextualizadas</li> | |
| </ul> | |
| </div> | |
| <div class="arch-box"> | |
| <h4><i class="fas fa-search"></i> Sistema de Búsqueda Inteligente</h4> | |
| <ul> | |
| <li><i class="fas fa-check"></i> Recupera información más relevante</li> | |
| <li><i class="fas fa-check"></i> Expande búsquedas con sinónimos</li> | |
| <li><i class="fas fa-check"></i> Re-ranking automático de resultados</li> | |
| <li><i class="fas fa-check"></i> Filtrado por tipo de contenido</li> | |
| </ul> | |
| </div> | |
| <div class="arch-box"> | |
| <h4><i class="fas fa-database"></i> Base de Conocimiento</h4> | |
| <ul> | |
| <li><i class="fas fa-check"></i> Convocatoria oficial</li> | |
| <li><i class="fas fa-check"></i> Guía para aspirantes</li> | |
| <li><i class="fas fa-check"></i> Normativa de control escolar</li> | |
| <li><i class="fas fa-check"></i> Protocolo de convivencia escolar</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="section"> | |
| <h2 class="section-title"><i class="fas fa-tasks"></i> Estado de Implementación</h2> | |
| <table class="metrics-table"> | |
| <thead> | |
| <tr> | |
| <th>Módulo</th> | |
| <th>Estado</th> | |
| <th>Detalles</th> | |
| <th>Progress</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td>Conexión con IA de Google</td> | |
| <td><span class="badge success">Completado</span></td> | |
| <td>Puente de comunicación con Gemini operacional</td> | |
| <td>100%</td> | |
| </tr> | |
| <tr> | |
| <td> motor de búsqueda</td> | |
| <td><span class="badge success">Completado</span></td> | |
| <td>Sistema de recuperación de información</td> | |
| <td>100%</td> | |
| </tr> | |
| <tr> | |
| <td>Organización de documentos</td> | |
| <td><span class="badge success">Completado</span></td> | |
| <td>7 documentos dividisos en 108 fragmentos</td> | |
| <td>100%</td> | |
| </tr> | |
| <tr> | |
| <td>Pruebas automáticas</td> | |
| <td><span class="badge success">Completado</span></td> | |
| <td>20 preguntas de evaluación configuradas</td> | |
| <td>100%</td> | |
| </tr> | |
| <tr> | |
| <td>Interfaz de usuario</td> | |
| <td><span class="badge success">Completado</span></td> | |
| <td>Página web usable en cualquier dispositivo</td> | |
| <td>100%</td> | |
| </tr> | |
| <tr> | |
| <td>Diagnóstico del sistema</td> | |
| <td><span class="badge success">Completado</span></td> | |
| <td>Revisión automática al iniciar</td> | |
| <td>100%</td> | |
| </tr> | |
| <tr> | |
| <td>Evaluación de calidad</td> | |
| <td><span class="badge warning">En proceso</span></td> | |
| <td>Ejecutar pruebas definidas</td> | |
| <td>85%</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <div class="progress-container"> | |
| <div class="progress-item"> | |
| <div class="progress-label"> | |
| <span>Avance general del proyecto</span> | |
| <strong>95%</strong> | |
| </div> | |
| <div class="progress-bar"> | |
| <div class="progress-fill primary" style="width: 95%;"></div> | |
| </div> | |
| </div> | |
| <div class="progress-item"> | |
| <div class="progress-label"> | |
| <span>Calidad de retrieval</span> | |
| <strong>88%</strong> | |
| </div> | |
| <div class="progress-bar"> | |
| <div class="progress-fill accent" style="width: 88%;"></div> | |
| </div> | |
| </div> | |
| <div class="progress-item"> | |
| <div class="progress-label"> | |
| <span>Fidelidad de respuestas</span> | |
| <strong>85%</strong> | |
| </div> | |
| <div class="progress-bar"> | |
| <div class="progress-fill primary" style="width: 85%;"></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="section"> | |
| <h2 class="section-title"><i class="fas fa-server"></i> Infraestructura y Despliegue</h2> | |
| <div class="infra-highlight"> | |
| <div class="infra-current"> | |
| <div class="infra-header"> | |
| <i class="fas fa-rocket"></i> Estado Actual | |
| </div> | |
| <div class="infra-content"> | |
| <div class="infra-hf-badge"> | |
| <i class="fab fa-hugging-face"></i> | |
| <span>Hugging Face Spaces</span> | |
| </div> | |
| <div class="infra-details"> | |
| <div class="infra-item"> | |
| <i class="fas fa-microchip"></i> | |
| <span>8 vCPU</span> | |
| </div> | |
| <div class="infra-item"> | |
| <i class="fas fa-memory"></i> | |
| <span>32 GB RAM</span> | |
| </div> | |
| <div class="infra-item"> | |
| <i class="fas fa-dollar-sign"></i> | |
| <span>$0.03/hora</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="infra-arrow"> | |
| <i class="fas fa-arrow-down"></i> | |
| </div> | |
| <div class="migration-options"> | |
| <h3><i class="fas fa-cloud"></i> Opciones de Migración Futura</h3> | |
| <div class="cloud-options"> | |
| <div class="cloud-card"> | |
| <i class="fab fa-aws"></i> | |
| <span>AWS EC2</span> | |
| <p>Escalabilidad horizontal, múltiples regiones</p> | |
| </div> | |
| <div class="cloud-card"> | |
| <i class="fab fa-google"></i> | |
| <span>Google Cloud</span> | |
| <p>Integración nativa con Gemini API</p> | |
| </div> | |
| <div class="cloud-card"> | |
| <i class="fas fa-server"></i> | |
| <span>Servidor Dedicado</span> | |
| <p>Control total, menor costo mensual</p> | |
| </div> | |
| </div> | |
| <p class="migration-note"><i class="fas fa-info-circle"></i> El sistema está preparado para migrarse a cualquier plataforma de nube sin cambios en el código.</p> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="section"> | |
| <h2 class="section-title"><i class="fas fa-lightbulb"></i> Logros Principales</h2> | |
| <div class="conclusions"> | |
| <h3><i class="fas fa-check-circle"></i> Objetivos Alcanzados</h3> | |
| <ul> | |
| <li><i class="fas fa-check"></i> Migración exitosa a Gemini 2.5 Flash via Google AI API</li> | |
| <li><i class="fas fa-check"></i> Sistema de búsqueda inteligente que recupera información relevante</li> | |
| <li><i class="fas fa-check"></i> Creación de chunks semánticamente ricos para mayor precisión en respuestas</li> | |
| <li><i class="fas fa-check"></i> Chatbot que responde de forma concisa, sin alucinaciones, en promedio 2-4 segundos</li> | |
| <li><i class="fas fa-check"></i> Interfaz web con menú jerárquico funcional</li> | |
| <li><i class="fas fa-check"></i> Dashboard de monitoreo en tiempo real (58 interacciones, 98.3% confianza, 84.5% tasa RAG)</li> | |
| </ul> | |
| </div> | |
| <div class="next-steps"> | |
| <h3><i class="fas fa-rocket"></i> Siguientes Pasos</h3> | |
| <ul> | |
| <li><i class="fas fa-angle-right"></i> Ejecución de evaluación automática completa</li> | |
| <li><i class="fas fa-angle-right"></i> Ajuste de parámetros según resultados</li> | |
| <li><i class="fas fa-angle-right"></i> Incorporación de documentación adicional (tickets de mesa de servicio, FAQs, etc.)</li> | |
| <li><i class="fas fa-cloud-upload-alt"></i> <strong>Despliegue en producción:</strong> Migración a servidor en la nube (AWS/Google Cloud) o máquina virtual dedicada</li> | |
| <li><i class="fas fa-globe"></i> <strong>Publicación:</strong> Integración en página web o portal institucional de Prepa en Línea SEP</li> | |
| </ul> | |
| </div> | |
| <div class="conclusions" style="margin-top: 1.5rem;"> | |
| <h3><i class="fas fa-chart-line"></i> Monitoreo en Tiempo Real</h3> | |
| <ul> | |
| <li><i class="fas fa-desktop"></i> Dashboard integrado para supervisión de interacciones</li> | |
| <li><i class="fas fa-users"></i> Seguimiento de usuarios y conversaciones</li> | |
| <li><i class="fas fa-bullseye"></i> Métricas de efectividad del sistema</li> | |
| <li><i class="fas fa-history"></i> Historial de conversaciones para análisis</li> | |
| </ul> | |
| </div> | |
| <div class="screenshot-gallery"> | |
| <div class="screenshot-card"> | |
| <img src="images/interfaz_chatbot.png" alt="Interfaz del Chatbot"> | |
| <div class="screenshot-caption"> | |
| <i class="fas fa-comments"></i> | |
| <a href="https://huggingface.co/spaces/ecotecds/Chatbot-RAG-v4" target="_blank" style="color: inherit; text-decoration: underline;">Interfaz de Usuario</a> | |
| </div> | |
| </div> | |
| <div class="screenshot-card"> | |
| <img src="images/dashboard.png" alt="Dashboard de Métricas"> | |
| <div class="screenshot-caption"> | |
| <i class="fas fa-chart-line"></i> | |
| <a href="https://ecotecds-chatbot-rag-v4.hf.space/user-dashboard" target="_blank" style="color: inherit; text-decoration: underline;">Panel de Control</a> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="footer"> | |
| <i class="fas fa-graduation-cap"></i> Chatbot Educativo Prepa en Línea SEP<br> | |
| Desarrollado con Gemini 2.5 Flash + RAG<br> | |
| <span class="developers"><i class="fas fa-user"></i> <strong>Erick Delgadillo</strong> & <i class="fas fa-user"></i> <strong>Noé Martínez</strong></span><br> | |
| Abril 2026 | |
| </div> | |
| </div> | |
| <script> | |
| document.addEventListener('DOMContentLoaded', function() { | |
| const bars = document.querySelectorAll('.progress-fill'); | |
| bars.forEach(bar => { | |
| const width = bar.style.width; | |
| bar.style.width = '0%'; | |
| setTimeout(() => { | |
| bar.style.width = width; | |
| }, 300); | |
| }); | |
| const flowSteps = document.querySelectorAll('.flow-step'); | |
| flowSteps.forEach((step, index) => { | |
| setTimeout(() => { | |
| step.classList.add('active'); | |
| }, index * 400); | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> |