|
<!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> |
|
|