Subir archivos a "/"

This commit is contained in:
2026-08-15 15:17:50 +02:00
commit 74460acddb
2 changed files with 514 additions and 0 deletions
+154
View File
@@ -0,0 +1,154 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Grape Models | NLP to Terminal - T5 Expert Models & Semantic Router</title>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3361658259789683"
crossorigin="anonymous"></script>
<!-- SEO Optimization Meta Tags -->
<meta name="description" content="A collection of T5 expert models hosted on Hugging Face focused on translating natural language queries into actionable terminal commands, routed by an intelligent semantic router.">
<meta name="keywords" content="Grape Models, NLP to Terminal, CodeT5, Hugging Face collection, semantic router, bash translator, natural language commands, Docker fine-tuning, machine learning models">
<meta name="author" content="Juan Raul Rodriguez Gil">
<link rel="canonical" href="https://grape.jrodriiguezg.link/">
<!-- Open Graph (Facebook / LinkedIn) -->
<meta property="og:title" content="Grape Models | NLP to Terminal - T5 Expert Models & Semantic Router">
<meta property="og:description" content="A collection of T5 expert models hosted on Hugging Face focused on translating natural language queries into actionable terminal commands, routed by an intelligent semantic router.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://grape.jrodriiguezg.link/">
<meta property="og:image" content="https://grape.jrodriiguezg.link/styles.css">
<!-- Twitter Cards -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Grape Models | NLP to Terminal - T5 Expert Models & Semantic Router">
<meta name="twitter:description" content="A collection of T5 expert models hosted on Hugging Face focused on translating natural language queries into actionable terminal commands, routed by an intelligent semantic router.">
<!-- Structured Data (JSON-LD) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Grape Models",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Cross-platform (Python, Hugging Face Transformers)",
"description": "A collection of CodeT5 expert models hosted on Hugging Face focused on translating natural language into actionable terminal commands (BASH, Docker, Search, Network), dynamically routed by an intelligent semantic classifier.",
"url": "https://grape.jrodriiguezg.link/",
"codeRepository": "https://huggingface.co/collections/jrodriiguezg/grape-models",
"author": {
"@type": "Person",
"name": "Juan Raul Rodriguez Gil",
"url": "https://jrodriiguezg.link/"
},
"knowsAbout": [
"Natural Language Processing",
"Hugging Face Transformers",
"CodeT5",
"Semantic Routing",
"Terminal Automation"
]
}
</script>
<link rel="stylesheet" href="styles.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;800&family=Fira+Code&display=swap" rel="stylesheet">
</head>
<body>
<div class="container">
<!-- Hero Section -->
<section class="hero">
<div class="badge">NLP & Transformers</div>
<h1>Grape Models</h1>
<p>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.</p>
<div class="hero-buttons">
<a href="https://huggingface.co/collections/jrodriiguezg/grape-models" target="_blank" rel="noopener noreferrer" class="btn btn-primary">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM9.5 9C9.5 8.17 10.17 7.5 11 7.5S12.5 8.17 12.5 9 11.83 10.5 11 10.5 9.5 9.83 9.5 9zm5 0c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5-1.5-.67-1.5-1.5zm-2.5 7c-2.33 0-4.31-1.46-5.11-3.5h10.22C16.31 14.54 14.33 16 12 16z"/></svg>
View Collection
</a>
<a href="https://jrodriiguezg.link" class="btn btn-secondary">Back to Portfolio</a>
<a href="https://ko-fi.com/jrodriiguezg" target="_blank" rel="noopener noreferrer" class="btn btn-kofi">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M23.881 8.948c-.773-4.085-4.859-4.593-4.859-4.593H.723c-.604 0-.679.798-.679.798s-.082 7.324-.022 11.822c.164 2.424 2.586 2.672 2.586 2.672s8.267-.023 11.966-.049c2.438-.426 2.683-2.566 2.658-3.734 4.352.24 7.422-2.831 6.649-6.916zm-11.062 3.511c-1.246 1.453-4.011 3.976-4.011 3.976s-.121.119-.31.023c-.076-.057-.108-.09-.108-.09-.443-.441-3.368-3.049-4.051-3.954-1.094-1.465-1.083-3.262 0-4.198 1.116-.916 2.79-.843 3.995.212.352.312.593.636.593.636s.202-.308.514-.6A4.331 4.331 0 0 1 12.87 8.07c1.196-.906 2.87-.978 3.996-.061 1.083.936 1.094 2.733 0 4.198z"/></svg>
Support on Ko-fi
</a>
</div>
</section>
<!-- Architecture Section -->
<section class="glass-panel">
<h2 class="section-title">Architecture & Base Model</h2>
<div class="grid-2">
<div>
<p style="color: var(--text-secondary); margin-bottom: 1rem;">The Grape Models ecosystem utilizes a Mixture of Experts (MoE) approach to maximize terminal command accuracy.</p>
<ul class="tech-list">
<li><strong>Base Foundation:</strong> All 4 expert models share the same foundation: <span style="font-family: 'Fira Code', monospace; color: var(--text-primary);">Salesforce/codet5-small</span>, allowing for lightweight execution.</li>
<li><strong>Semantic Router:</strong> The <span style="font-family: 'Fira Code', monospace; color: var(--text-primary);">minilm-l12-grape-route</span> model acts as a traffic controller, evaluating the user's natural language input and routing it to the appropriate specialized expert.</li>
<li><strong>Custom Fine-Tuning:</strong> Each expert was strictly fine-tuned on custom datasets using Google Colab instances for specialized tasks.</li>
</ul>
<a href="https://huggingface.co/jrodriiguezg/minilm-l12-grape-route" target="_blank" rel="noopener noreferrer" class="expert-link" style="margin-top: 1rem;">Explore the Router Model →</a>
</div>
<div class="code-block">
<span class="code-comment"># NLP Pipeline Concept</span>
<span class="code-keyword">def</span> process_input(text):
<span class="code-comment"># 1. Router categorizes intent</span>
category = router_model.predict(text)
<span class="code-comment"># 2. Select specific Grape Expert</span>
expert = load_expert(category)
<span class="code-comment"># 3. Generate terminal command</span>
command = expert.generate(text)
<span class="code-keyword">return</span> command
</div>
</div>
</section>
<!-- The Experts -->
<section class="glass-panel">
<h2 class="section-title">The Expert Models</h2>
<p style="color: var(--text-secondary); margin-bottom: 2rem;">Each model in the Grape family specializes in a specific domain of terminal operations.</p>
<div class="experts-grid">
<!-- Chardonnay -->
<div class="expert-card">
<h3>Chardonnay <span class="expert-tag">BASH</span></h3>
<p>The generalist expert. Converts natural language instructions into standard bash commands for file management, networking, and system operations.</p>
<a href="https://huggingface.co/jrodriiguezg/grape-chardonnay" target="_blank" rel="noopener noreferrer" class="expert-link">Model Card →</a>
</div>
<!-- Pinot -->
<div class="expert-card">
<h3>Pinot <span class="expert-tag">SEARCH</span></h3>
<p>The search and retrieval expert. Enforces a strict Zero-Modification Policy (ignores install/delete requests), focusing exclusively on information retrieval using tools like <span style="font-family: 'Fira Code', monospace;">find</span>, <span style="font-family: 'Fira Code', monospace;">grep</span>, and <span style="font-family: 'Fira Code', monospace;">stat</span>.</p>
<a href="https://huggingface.co/jrodriiguezg/grape-pinot" target="_blank" rel="noopener noreferrer" class="expert-link">Model Card →</a>
</div>
<!-- Malbec -->
<div class="expert-card">
<h3>Malbec <span class="expert-tag">DOCKER</span></h3>
<p>The containerization expert. Fine-tuned for Docker and docker-compose workflows. Trained on the custom public dataset <span style="font-family: 'Fira Code', monospace; color: var(--text-primary);">malbec-nl2docker-es</span>.</p>
<div style="display: flex; gap: 1rem;">
<a href="https://huggingface.co/jrodriiguezg/grape-malbec" target="_blank" rel="noopener noreferrer" class="expert-link">Model Card →</a>
<a href="https://huggingface.co/datasets/jrodriiguezg/malbec-nl2docker-es" target="_blank" rel="noopener noreferrer" class="expert-link">Dataset →</a>
</div>
</div>
<!-- Syrah -->
<div class="expert-card">
<h3>Syrah <span class="expert-tag">NETWORK</span></h3>
<p>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.</p>
<a href="https://huggingface.co/jrodriiguezg/grape-syrah" target="_blank" rel="noopener noreferrer" class="expert-link">Model Card →</a>
</div>
</div>
</section>
<footer>
<p>&copy; 2026 Juan Raul Rodriguez Gil. <br> <a href="https://jrodriiguezg.link" class="footer-link">jrodriiguezg.link</a> | <a href="https://www.instagram.com/jrodriiguezg.link/?hl=es" target="_blank" rel="noopener noreferrer" class="footer-link">Instagram</a></p>
</footer>
</div>
</body>
</html>
+360
View File
@@ -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);
}