| <!DOCTYPE html> |
| <html lang="es"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>GPT Local - Interfaces Disponibles</title> |
| <style> |
| body { |
| font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; |
| line-height: 1.6; |
| max-width: 1200px; |
| margin: 0 auto; |
| padding: 20px; |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| color: #333; |
| min-height: 100vh; |
| } |
| .container { |
| background: white; |
| border-radius: 15px; |
| padding: 30px; |
| box-shadow: 0 20px 40px rgba(0,0,0,0.1); |
| } |
| h1 { |
| color: #2c3e50; |
| text-align: center; |
| font-size: 2.5em; |
| margin-bottom: 10px; |
| } |
| .subtitle { |
| text-align: center; |
| color: #7f8c8d; |
| font-size: 1.2em; |
| margin-bottom: 40px; |
| } |
| .interface-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); |
| gap: 30px; |
| margin: 40px 0; |
| } |
| .interface-card { |
| border: 2px solid #e3e9ee; |
| border-radius: 12px; |
| padding: 25px; |
| background: #fafbfc; |
| transition: all 0.3s ease; |
| } |
| .interface-card:hover { |
| border-color: #667eea; |
| transform: translateY(-5px); |
| box-shadow: 0 15px 30px rgba(0,0,0,0.1); |
| } |
| .interface-title { |
| font-size: 1.4em; |
| font-weight: bold; |
| color: #2c3e50; |
| margin-bottom: 15px; |
| display: flex; |
| align-items: center; |
| } |
| .icon { |
| font-size: 1.5em; |
| margin-right: 10px; |
| } |
| .interface-description { |
| color: #5a6c7d; |
| margin-bottom: 20px; |
| line-height: 1.5; |
| } |
| .features { |
| list-style: none; |
| padding: 0; |
| margin: 15px 0; |
| } |
| .features li { |
| padding: 5px 0; |
| color: #34495e; |
| } |
| .features li:before { |
| content: "✅ "; |
| margin-right: 8px; |
| } |
| .command { |
| background: #2c3e50; |
| color: #ecf0f1; |
| padding: 12px 15px; |
| border-radius: 8px; |
| font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; |
| font-size: 0.9em; |
| margin: 15px 0; |
| word-break: break-all; |
| } |
| .status { |
| padding: 8px 15px; |
| border-radius: 6px; |
| font-weight: bold; |
| text-align: center; |
| margin: 10px 0; |
| } |
| .status.working { |
| background: #d4edda; |
| color: #155724; |
| border: 1px solid #c3e6cb; |
| } |
| .status.issue { |
| background: #f8d7da; |
| color: #721c24; |
| border: 1px solid #f5c6cb; |
| } |
| .links { |
| margin-top: 40px; |
| padding: 25px; |
| background: #f8f9fa; |
| border-radius: 10px; |
| } |
| .links h3 { |
| color: #2c3e50; |
| margin-bottom: 15px; |
| } |
| .link-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); |
| gap: 15px; |
| } |
| .link-item { |
| display: flex; |
| align-items: center; |
| padding: 10px; |
| background: white; |
| border-radius: 8px; |
| text-decoration: none; |
| color: #2c3e50; |
| border: 1px solid #dee2e6; |
| transition: all 0.3s ease; |
| } |
| .link-item:hover { |
| border-color: #667eea; |
| transform: translateX(5px); |
| } |
| .link-icon { |
| margin-right: 10px; |
| font-size: 1.2em; |
| } |
| .architecture { |
| margin-top: 40px; |
| padding: 25px; |
| background: #f8f9fa; |
| border-radius: 10px; |
| } |
| .component { |
| background: white; |
| padding: 15px; |
| margin: 10px 0; |
| border-radius: 8px; |
| border-left: 4px solid #667eea; |
| } |
| </style> |
| </head> |
| <body> |
| <div class="container"> |
| <h1>🤖 GPT Local</h1> |
| <p class="subtitle">Sistema de chat GPT local con HuggingFace y múltiples interfaces</p> |
| |
| <div class="interface-grid"> |
| |
| <div class="interface-card"> |
| <div class="interface-title"> |
| <span class="icon">💻</span> |
| Chat Terminal |
| </div> |
| <div class="interface-description"> |
| Interfaz de línea de comandos optimizada para Apple Silicon (MPS). |
| Es la interfaz principal y más estable del sistema. |
| </div> |
| <div class="status working">✅ Funcionando Perfectamente</div> |
| <ul class="features"> |
| <li>Optimizado para macOS MPS</li> |
| <li>Modelo DialoGPT-small</li> |
| <li>Chat conversacional</li> |
| <li>Reset de historial</li> |
| <li>Logging detallado</li> |
| </ul> |
| <div class="command">python3 chat_terminal.py</div> |
| </div> |
|
|
| |
| <div class="interface-card"> |
| <div class="interface-title"> |
| <span class="icon">🌐</span> |
| Interfaz Web (Gradio) |
| </div> |
| <div class="interface-description"> |
| Interfaz web moderna con pestañas para chat y configuración. |
| Actualmente tiene problemas de compatibilidad. |
| </div> |
| <div class="status issue">⚠️ Error de Compatibilidad</div> |
| <ul class="features"> |
| <li>Interfaz gráfica web</li> |
| <li>Control de parámetros</li> |
| <li>Múltiples modelos</li> |
| <li>Chat persistente</li> |
| <li>Puerto 7860</li> |
| </ul> |
| <div class="command">python3 main.py</div> |
| </div> |
|
|
| |
| <div class="interface-card"> |
| <div class="interface-title"> |
| <span class="icon">🐳</span> |
| Contenedor Docker |
| </div> |
| <div class="interface-description"> |
| Imagen Alpine Linux securizada, lista para despliegue en producción. |
| Sin vulnerabilidades de seguridad. |
| </div> |
| <div class="status working">✅ Imagen Segura Lista</div> |
| <ul class="features"> |
| <li>Base Alpine Linux</li> |
| <li>Usuario no privilegiado</li> |
| <li>Sin vulnerabilidades</li> |
| <li>2.2GB optimizado</li> |
| <li>Python 3.12</li> |
| </ul> |
| <div class="command">docker run -p 7860:7860 drtv/gpt-local</div> |
| </div> |
|
|
| |
| <div class="interface-card"> |
| <div class="interface-title"> |
| <span class="icon">🧪</span> |
| Sistema de Pruebas |
| </div> |
| <div class="interface-description"> |
| Script de pruebas automáticas para verificar el funcionamiento |
| del modelo y los componentes del sistema. |
| </div> |
| <div class="status working">✅ Pruebas Funcionales</div> |
| <ul class="features"> |
| <li>Test de modelo</li> |
| <li>Verificación MPS</li> |
| <li>Test de generación</li> |
| <li>Logging de errores</li> |
| <li>Validación completa</li> |
| </ul> |
| <div class="command">python3 test_gpt.py</div> |
| </div> |
| </div> |
|
|
| <div class="architecture"> |
| <h3>🏗️ Arquitectura del Sistema</h3> |
| <div class="component"> |
| <strong>models/</strong> - Gestión de modelos HuggingFace |
| <br><small>model_loader.py, text_generator.py</small> |
| </div> |
| <div class="component"> |
| <strong>ui/</strong> - Interfaces de usuario |
| <br><small>gradio_interface.py (web), chat_terminal.py (terminal)</small> |
| </div> |
| <div class="component"> |
| <strong>config/</strong> - Configuración del sistema |
| <br><small>settings.py con parámetros por defecto</small> |
| </div> |
| <div class="component"> |
| <strong>Docker</strong> - Contenedor securizado |
| <br><small>Alpine Linux, usuario no privilegiado, sin vulnerabilidades</small> |
| </div> |
| </div> |
|
|
| <div class="links"> |
| <h3>🔗 Enlaces del Proyecto</h3> |
| <div class="link-grid"> |
| <a href="https://github.com/panacea-icono/gpt-local" class="link-item"> |
| <span class="link-icon">📁</span> |
| Repositorio GitHub |
| </a> |
| <a href="https://huggingface.co/DRDELATV/gpt-local" class="link-item"> |
| <span class="link-icon">🤗</span> |
| HuggingFace Hub |
| </a> |
| <a href="https://hub.docker.com/r/drtv/gpt-local" class="link-item"> |
| <span class="link-icon">🐳</span> |
| Docker Hub |
| </a> |
| <a href="http://localhost:7860" class="link-item"> |
| <span class="link-icon">🌐</span> |
| Interfaz Local (cuando funcione) |
| </a> |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |
|
|