commit 74460acddb3f3ad8e73557d37fec330d03e5ff91 Author: jrodriiguezg Date: Sat Aug 15 15:17:50 2026 +0200 Subir archivos a "/" diff --git a/index.html b/index.html new file mode 100644 index 0000000..d6c3a57 --- /dev/null +++ b/index.html @@ -0,0 +1,154 @@ + + + + + + Grape Models | NLP to Terminal - T5 Expert Models & Semantic Router + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
NLP & Transformers
+

Grape Models

+

A collection of T5 expert models hosted on Hugging Face focused on translating natural language into actionable terminal commands, routed by an intelligent semantic categorizer.

+ +
+ + +
+

Architecture & Base Model

+
+
+

The Grape Models ecosystem utilizes a Mixture of Experts (MoE) approach to maximize terminal command accuracy.

+
    +
  • Base Foundation: All 4 expert models share the same foundation: Salesforce/codet5-small, allowing for lightweight execution.
  • +
  • Semantic Router: The minilm-l12-grape-route model acts as a traffic controller, evaluating the user's natural language input and routing it to the appropriate specialized expert.
  • +
  • Custom Fine-Tuning: Each expert was strictly fine-tuned on custom datasets using Google Colab instances for specialized tasks.
  • +
+ Explore the Router Model → +
+
+# NLP Pipeline Concept +def process_input(text): + # 1. Router categorizes intent + category = router_model.predict(text) + + # 2. Select specific Grape Expert + expert = load_expert(category) + + # 3. Generate terminal command + command = expert.generate(text) + return command +
+
+
+ + +
+

The Expert Models

+

Each model in the Grape family specializes in a specific domain of terminal operations.

+ +
+ + +
+

Chardonnay BASH

+

The generalist expert. Converts natural language instructions into standard bash commands for file management, networking, and system operations.

+ Model Card → +
+ + +
+

Pinot SEARCH

+

The search and retrieval expert. Enforces a strict Zero-Modification Policy (ignores install/delete requests), focusing exclusively on information retrieval using tools like find, grep, and stat.

+ Model Card → +
+ + +
+

Malbec DOCKER

+

The containerization expert. Fine-tuned for Docker and docker-compose workflows. Trained on the custom public dataset malbec-nl2docker-es.

+ +
+ + +
+

Syrah NETWORK

+

The network expert. Specifically trained to handle network-specific tasks including port scanning, connectivity testing, DNS resolution, and firewall configuration. It understands complex context constraints.

+ Model Card → +
+ +
+
+ + +
+ + diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..5c38ea9 --- /dev/null +++ b/styles.css @@ -0,0 +1,360 @@ +:root { + --bg-main: #0f1115; + --bg-secondary: #1a1d24; + --bg-tertiary: #232730; + --text-primary: #f8fafc; + --text-secondary: #94a3b8; + --accent-color: #9333ea; /* Grape purple */ + --accent-hover: #7e22ce; + --border-color: #2e3340; + --glass-bg: rgba(26, 29, 36, 0.4); + --glass-border: rgba(255, 255, 255, 0.08); +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Inter', -apple-system, sans-serif; + background-color: var(--bg-main); + color: var(--text-primary); + line-height: 1.6; + min-height: 100vh; + overflow-x: hidden; + position: relative; +} + +/* Dynamic glowing background blobs */ +body::before, body::after { + content: ''; + position: fixed; + border-radius: 50%; + filter: blur(120px); + z-index: -1; + opacity: 0.15; + pointer-events: none; + animation: drift 20s infinite alternate; +} + +body::before { + width: 600px; + height: 600px; + background: var(--accent-color); + top: -200px; + left: -200px; +} + +body::after { + width: 500px; + height: 500px; + background: #d946ef; /* Magenta/Pinkish purple */ + bottom: -100px; + right: -150px; + animation-delay: -5s; +} + +@keyframes drift { + 0% { transform: translate(0, 0); } + 100% { transform: translate(100px, 100px); } +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 4rem 2rem; +} + +/* Header / Hero */ +.hero { + text-align: center; + margin-bottom: 5rem; + padding: 4rem 0; +} + +.badge { + display: inline-block; + padding: 0.4rem 1rem; + background: rgba(147, 51, 234, 0.1); + color: var(--accent-color); + border-radius: 20px; + font-size: 0.85rem; + font-weight: 600; + margin-bottom: 1.5rem; + border: 1px solid rgba(147, 51, 234, 0.2); + letter-spacing: 1px; +} + +.hero h1 { + font-size: 4rem; + font-weight: 800; + letter-spacing: -2px; + margin-bottom: 1.5rem; + background: linear-gradient(135deg, var(--text-primary) 0%, var(--text-secondary) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.hero p { + font-size: 1.25rem; + color: var(--text-secondary); + max-width: 700px; + margin: 0 auto 2.5rem; +} + +.hero-buttons { + display: flex; + justify-content: center; + gap: 1rem; +} + +.btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.8rem 1.8rem; + border-radius: 8px; + font-weight: 600; + text-decoration: none; + transition: all 0.3s ease; + font-size: 1rem; +} + +.btn-primary { + background-color: var(--accent-color); + color: #fff; + border: 1px solid var(--accent-color); + box-shadow: 0 4px 15px rgba(147, 51, 234, 0.3); +} + +.btn-primary:hover { + background-color: var(--accent-hover); + transform: translateY(-2px); + box-shadow: 0 6px 20px rgba(147, 51, 234, 0.4); +} + +.btn-secondary { + background-color: var(--glass-bg); + color: var(--text-primary); + border: 1px solid var(--border-color); + backdrop-filter: blur(10px); +} + +.btn-secondary:hover { + background-color: var(--bg-tertiary); + border-color: var(--text-secondary); + transform: translateY(-2px); +} + +/* Glassmorphism Section blocks */ +.glass-panel { + background: var(--glass-bg); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid var(--glass-border); + border-radius: 16px; + padding: 3rem; + margin-bottom: 4rem; + transition: transform 0.3s ease, border-color 0.3s ease; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); +} + +.glass-panel:hover { + border-color: rgba(255, 255, 255, 0.15); + transform: translateY(-2px); +} + +.section-title { + font-size: 2rem; + margin-bottom: 2rem; + color: var(--text-primary); + font-weight: 700; + display: flex; + align-items: center; + gap: 1rem; +} + +.section-title::after { + content: ''; + flex: 1; + height: 1px; + background: linear-gradient(90deg, var(--border-color) 0%, transparent 100%); +} + +/* Architecture / Grid */ +.grid-2 { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 3rem; + align-items: center; +} + +.tech-list { + list-style: none; + margin-top: 1.5rem; +} + +.tech-list li { + position: relative; + padding-left: 1.5rem; + margin-bottom: 1rem; + color: var(--text-secondary); + font-size: 1.05rem; + line-height: 1.6; +} + +.tech-list li::before { + content: ''; + position: absolute; + left: 0; + top: 0.6rem; + width: 8px; + height: 8px; + background: var(--accent-color); + border-radius: 50%; + box-shadow: 0 0 10px var(--accent-color); +} + +.code-block { + background-color: #0d0f12; + padding: 1.5rem; + border-radius: 8px; + font-family: 'Fira Code', monospace; + font-size: 0.9rem; + color: #e2e8f0; + border: 1px solid var(--border-color); + overflow-x: auto; + white-space: pre-wrap; + word-break: break-word; +} + +.code-comment { + color: #64748b; +} +.code-keyword { + color: #c678dd; +} +.code-string { + color: #98c379; +} + +/* Experts Grid */ +.experts-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 2rem; +} + +.expert-card { + background: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: 12px; + padding: 2rem; + transition: all 0.3s; + display: flex; + flex-direction: column; +} + +.expert-card:hover { + border-color: var(--accent-color); + background: var(--bg-tertiary); + transform: translateY(-5px); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); +} + +.expert-card h3 { + color: var(--text-primary); + margin-bottom: 0.5rem; + font-size: 1.4rem; + display: flex; + align-items: center; + justify-content: space-between; +} + +.expert-tag { + font-family: 'Fira Code', monospace; + font-size: 0.75rem; + background-color: rgba(147, 51, 234, 0.15); + color: var(--accent-color); + padding: 0.3rem 0.6rem; + border-radius: 4px; +} + +.expert-card p { + color: var(--text-secondary); + font-size: 0.95rem; + margin-bottom: 1.5rem; + flex: 1; +} + +.expert-link { + color: var(--accent-color); + text-decoration: none; + font-weight: 600; + font-size: 0.9rem; + display: inline-flex; + align-items: center; + gap: 0.4rem; + transition: color 0.2s; +} + +.expert-link:hover { + color: var(--accent-hover); +} + +/* Footer */ +footer { + text-align: center; + color: var(--text-secondary); + font-size: 0.9rem; + padding: 3rem 0 2rem; + border-top: 1px solid var(--border-color); + margin-top: 5rem; +} + +.footer-link { + color: var(--accent-color); + text-decoration: none; + transition: color 0.3s; +} + +.footer-link:hover { + color: var(--text-primary); +} + +/* Responsive */ +@media (max-width: 900px) { + .grid-2 { + grid-template-columns: 1fr; + } + + .experts-grid { + grid-template-columns: 1fr; + } + + .hero h1 { + font-size: 3rem; + } + + .glass-panel { + padding: 2rem; + } +} +/* Estilo específico para Ko-fi en Grape Models */ +.btn-kofi { + background-color: var(--glass-bg); + color: var(--text-primary); + border: 1px solid var(--border-color); + backdrop-filter: blur(10px); +} + +/* Hover con resplandor morado (Grape purple) */ +.btn-kofi:hover { + background-color: rgba(147, 51, 234, 0.15); + border-color: var(--accent-color); + color: #fff; + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(147, 51, 234, 0.2); +}