CoolFace
Apppublic

aidn/caveman

sourceHugging Faceupdated 6mo agoView on Hugging Face
1likes
index.html549 linesDownload Raw Back to root
1<!DOCTYPE html>2<html lang="de">3<head>4    <meta charset="UTF-8">5    <meta name="viewport" content="width=device-width, initial-scale=1.0">6    <title>Gemma-4 Caveman — Semantische Kompression mit Stil</title>7    <link rel="preconnect" href="https://fonts.googleapis.com">8    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>9    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">10    <style>11        *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }12 13        :root {14            --bg: #0a0a0b;15            --surface: #141416;16            --surface-2: #1c1c20;17            --border: #2a2a2f;18            --text: #e8e8ec;19            --text-muted: #8b8b96;20            --accent: #d4a054;21            --accent-dim: #d4a05420;22            --green: #4ade80;23            --red: #f87171;24        }25 26        html { scroll-behavior: smooth; }27 28        body {29            font-family: 'Inter', system-ui, -apple-system, sans-serif;30            background: var(--bg);31            color: var(--text);32            line-height: 1.7;33            -webkit-font-smoothing: antialiased;34        }35 36        /* ─── Hero ─── */37        .hero {38            min-height: 85vh;39            display: flex;40            flex-direction: column;41            align-items: center;42            justify-content: center;43            text-align: center;44            padding: 4rem 2rem;45            position: relative;46            overflow: hidden;47        }48 49        .hero::before {50            content: '';51            position: absolute;52            top: -40%;53            left: 50%;54            transform: translateX(-50%);55            width: 800px;56            height: 800px;57            background: radial-gradient(circle, var(--accent-dim) 0%, transparent 70%);58            pointer-events: none;59        }60 61        .badge {62            display: inline-flex;63            align-items: center;64            gap: 0.5rem;65            padding: 0.4rem 1rem;66            border-radius: 100px;67            border: 1px solid var(--border);68            background: var(--surface);69            font-size: 0.8rem;70            color: var(--text-muted);71            margin-bottom: 2rem;72            letter-spacing: 0.03em;73        }74 75        .badge .dot {76            width: 6px;77            height: 6px;78            border-radius: 50%;79            background: var(--green);80            animation: pulse-dot 2s ease-in-out infinite;81        }82 83        @keyframes pulse-dot {84            0%, 100% { opacity: 0.4; }85            50% { opacity: 1; }86        }87 88        .hero h1 {89            font-size: clamp(3rem, 7vw, 5.5rem);90            font-weight: 900;91            letter-spacing: -0.03em;92            line-height: 1.05;93            margin-bottom: 1.5rem;94        }95 96        .hero h1 .rock { display: inline-block; }97 98        .hero .tagline {99            font-size: clamp(1.05rem, 2vw, 1.3rem);100            color: var(--text-muted);101            max-width: 560px;102            margin-bottom: 3rem;103            font-weight: 400;104        }105 106        .hero .tagline strong {107            color: var(--accent);108            font-weight: 600;109        }110 111        .scroll-hint {112            position: absolute;113            bottom: 2rem;114            display: flex;115            flex-direction: column;116            align-items: center;117            gap: 0.5rem;118            color: var(--text-muted);119            font-size: 0.75rem;120            letter-spacing: 0.1em;121            text-transform: uppercase;122            animation: float 3s ease-in-out infinite;123        }124 125        .scroll-hint svg {126            width: 20px;127            height: 20px;128            stroke: var(--text-muted);129        }130 131        @keyframes float {132            0%, 100% { transform: translateY(0); }133            50% { transform: translateY(6px); }134        }135 136        /* ─── Sections ─── */137        section {138            max-width: 820px;139            margin: 0 auto;140            padding: 5rem 2rem;141        }142 143        .section-label {144            font-size: 0.7rem;145            text-transform: uppercase;146            letter-spacing: 0.15em;147            color: var(--accent);148            font-weight: 600;149            margin-bottom: 1rem;150        }151 152        h2 {153            font-size: clamp(1.8rem, 4vw, 2.4rem);154            font-weight: 800;155            letter-spacing: -0.02em;156            margin-bottom: 1.5rem;157            line-height: 1.2;158        }159 160        p { color: var(--text-muted); margin-bottom: 1.2rem; }161        p strong { color: var(--text); font-weight: 600; }162 163        /* ─── Comparison Cards ─── */164        .comparison {165            display: grid;166            grid-template-columns: 1fr 1fr;167            gap: 1.5rem;168            margin: 3rem 0;169        }170 171        @media (max-width: 640px) {172            .comparison { grid-template-columns: 1fr; }173        }174 175        .card {176            background: var(--surface);177            border: 1px solid var(--border);178            border-radius: 16px;179            padding: 1.8rem;180            position: relative;181            overflow: hidden;182        }183 184        .card::before {185            content: '';186            position: absolute;187            top: 0; left: 0; right: 0;188            height: 3px;189        }190 191        .card.bad::before { background: var(--red); }192        .card.good::before { background: var(--green); }193 194        .card-label {195            font-size: 0.7rem;196            text-transform: uppercase;197            letter-spacing: 0.12em;198            font-weight: 700;199            margin-bottom: 1rem;200        }201 202        .card.bad .card-label { color: var(--red); }203        .card.good .card-label { color: var(--green); }204 205        .card pre {206            font-family: 'JetBrains Mono', monospace;207            font-size: 0.85rem;208            line-height: 1.7;209            color: var(--text);210            white-space: pre-wrap;211            word-break: break-word;212        }213 214        .card .token-count {215            display: inline-flex;216            align-items: center;217            gap: 0.4rem;218            margin-top: 1.2rem;219            padding: 0.3rem 0.7rem;220            border-radius: 6px;221            font-size: 0.75rem;222            font-weight: 600;223            font-family: 'JetBrains Mono', monospace;224        }225 226        .card.bad .token-count {227            background: #f8717115;228            color: var(--red);229        }230 231        .card.good .token-count {232            background: #4ade8015;233            color: var(--green);234        }235 236        /* ─── Rules ─── */237        .rules-grid {238            display: grid;239            grid-template-columns: 1fr 1fr;240            gap: 1rem;241            margin: 2.5rem 0;242        }243 244        @media (max-width: 640px) {245            .rules-grid { grid-template-columns: 1fr; }246        }247 248        .rule {249            background: var(--surface);250            border: 1px solid var(--border);251            border-radius: 12px;252            padding: 1.4rem;253        }254 255        .rule .emoji {256            font-size: 1.5rem;257            margin-bottom: 0.6rem;258        }259 260        .rule h3 {261            font-size: 0.95rem;262            font-weight: 700;263            margin-bottom: 0.3rem;264        }265 266        .rule p {267            font-size: 0.85rem;268            margin-bottom: 0;269            line-height: 1.5;270        }271 272        /* ─── Stats Strip ─── */273        .stats {274            display: grid;275            grid-template-columns: repeat(3, 1fr);276            gap: 1rem;277            margin: 3rem 0;278        }279 280        @media (max-width: 640px) {281            .stats { grid-template-columns: 1fr; }282        }283 284        .stat {285            background: var(--surface);286            border: 1px solid var(--border);287            border-radius: 12px;288            padding: 1.5rem;289            text-align: center;290        }291 292        .stat .number {293            font-size: 2.2rem;294            font-weight: 900;295            letter-spacing: -0.03em;296            color: var(--accent);297        }298 299        .stat .label {300            font-size: 0.8rem;301            color: var(--text-muted);302            margin-top: 0.3rem;303        }304 305        /* ─── App Embed ─── */306        .embed-section {307            max-width: 920px;308            margin: 0 auto;309            padding: 5rem 2rem;310            text-align: center;311        }312 313        @media (max-width: 768px) {314            .embed-section {315                padding: 3rem 0;316            }317            .embed-section .section-label,318            .embed-section h2,319            .embed-section > p {320                padding: 0 1.5rem;321            }322            .embed-wrapper {323                border-radius: 0;324                border-left: none;325                border-right: none;326            }327            .embed-wrapper iframe {328                height: 85vh;329                min-height: 600px;330            }331        }332 333        .embed-wrapper {334            margin-top: 2.5rem;335            border-radius: 20px;336            border: 1px solid var(--border);337            overflow: hidden;338            background: var(--surface);339            box-shadow: 0 25px 80px -20px rgba(0,0,0,0.5);340        }341 342        .embed-bar {343            display: flex;344            align-items: center;345            gap: 0.5rem;346            padding: 0.8rem 1.2rem;347            background: var(--surface-2);348            border-bottom: 1px solid var(--border);349        }350 351        .embed-bar .dot-row { display: flex; gap: 6px; }352 353        .embed-bar .dot-row span {354            width: 12px; height: 12px;355            border-radius: 50%;356            background: var(--border);357        }358 359        .embed-bar .url {360            flex: 1;361            text-align: center;362            font-size: 0.75rem;363            font-family: 'JetBrains Mono', monospace;364            color: var(--text-muted);365        }366 367        .embed-wrapper iframe {368            width: 100%;369            height: 1100px;370            border: none;371            display: block;372        }373 374        /* ─── Footer ─── */375        footer.site-footer {376            text-align: center;377            padding: 3rem 2rem 4rem;378            font-size: 0.8rem;379            color: var(--text-muted);380            border-top: 1px solid var(--border);381            max-width: 820px;382            margin: 0 auto;383        }384 385        footer.site-footer a {386            color: var(--accent);387            text-decoration: none;388        }389 390        footer.site-footer a:hover {391            text-decoration: underline;392        }393 394        /* ─── Selection ─── */395        ::selection {396            background: var(--accent);397            color: var(--bg);398        }399    </style>400</head>401<body>402 403    <!-- ─── Hero ─── -->404    <div class="hero">405        <div class="badge">406            <span class="dot"></span>407            Gemma-4-31B-IT · Live auf Hugging Face408        </div>409        <h1><span class="rock">🪨</span> Caveman</h1>410        <p class="tagline">411            31 Milliarden Parameter. Null Höflichkeit.<br>412            Ein Experiment in <strong>semantischer Kompression</strong> — weniger Tokens, gleiche Information, maximale Ironie.413        </p>414        <a class="scroll-hint" href="#idea">415            <span>Scrollen</span>416            <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round"><path d="M12 5v14M5 12l7 7 7-7"/></svg>417        </a>418    </div>419 420    <!-- ─── Idee ─── -->421    <section id="idea">422        <div class="section-label">Die Idee</div>423        <h2>Was, wenn dein LLM redet wie ein Höhlenmensch?</h2>424        <p>425            Ein viraler Post zeigte: Wenn man ein großes Sprachmodell anweist, <strong>wie ein Höhlenmensch zu antworten</strong> — keine Artikel, keine Füllwörter, nur Kernbotschaft — <strong>spart man massiv Tokens</strong>. Weniger Tokens bedeuten schnellere Antworten, geringere Kosten, und oft sogar <strong>klarere Information</strong>.426        </p>427        <p>428            Das hier ist die Umsetzung als echte App: <strong>Gemma-4 Caveman</strong>. Google's 31-Milliarden-Parameter-Modell, gezähmt durch einen System-Prompt, der Höflichkeit mit dem Aussterben bestraft.429        </p>430    </section>431 432    <!-- ─── Vergleich ─── -->433    <section>434        <div class="section-label">Vorher / Nachher</div>435        <h2>Gleiche Frage. Anderer Vibe.</h2>436        <p>Links: Wie ein normales LLM antwortet. Rechts: Höhlenmensch-Modus.</p>437 438        <div class="comparison">439            <div class="card bad">440                <div class="card-label">🦕 Normales LLM</div>441                <pre>Gerne erkläre ich Ihnen, was ein Large442Language Model ist. Es handelt sich443dabei um ein neuronales Netz, das auf444sehr großen Textmengen trainiert wird,445um natürliche Sprache zu verstehen446und zu generieren. Die zugrunde447liegende Architektur ist in der Regel448ein sogenannter Transformer...</pre>449                <div class="token-count">~68 Tokens</div>450            </div>451            <div class="card good">452                <div class="card-label">🪨 Caveman</div>453                <pre>LLM bedeuten großes Sprachmodell.454Fressen riesige Textmengen.455Vorhersagen nächstes Wort.456Nutzen Transformer-Architektur.</pre>457                <div class="token-count">~22 Tokens · 68% gespart</div>458            </div>459        </div>460    </section>461 462    <!-- ─── Regeln ─── -->463    <section>464        <div class="section-label">Steinzeit-Gesetze</div>465        <h2>Die Regeln des Höhlenmenschen</h2>466        <p>Der System-Prompt erzwingt diese Gesetze. Bei Verstoß: Säbelzahntiger.</p>467 468        <div class="rules-grid">469            <div class="rule">470                <div class="emoji">✂️</div>471                <h3>Maximal 7 Wörter</h3>472                <p>Pro Satz. Weniger = besser. Grunt gut.</p>473            </div>474            <div class="rule">475                <div class="emoji">🚫</div>476                <h3>Keine Füllwörter</h3>477                <p>der/die/das/ein — wegschmeißen wie faules Mammut.</p>478            </div>479            <div class="rule">480                <div class="emoji">🗿</div>481                <h3>Infinitiv. Immer.</h3>482                <p>„lernen" statt „lernt". Höhlenmensch nicht konjugieren können.</p>483            </div>484            <div class="rule">485                <div class="emoji">💀</div>486                <h3>Null Höflichkeit</h3>487                <p>„Gerne" und „Sicher" = Schwäche = Aussterben.</p>488            </div>489            <div class="rule">490                <div class="emoji">🥩</div>491                <h3>Fleisch, nicht Knochen</h3>492                <p>Ergebnis zuerst. Keine Einleitungen. Kein Vorgeplänkel.</p>493            </div>494            <div class="rule">495                <div class="emoji">🧮</div>496                <h3>Symbole sparsam</h3>497                <p>Kurze Sätze mit Verben statt Pfeil-Ketten.</p>498            </div>499        </div>500    </section>501 502    <!-- ─── Stats ─── -->503    <section>504        <div class="stats">505            <div class="stat">506                <div class="number">31B</div>507                <div class="label">Parameter</div>508            </div>509            <div class="stat">510                <div class="number">~68%</div>511                <div class="label">Token-Einsparung</div>512            </div>513            <div class="stat">514                <div class="number">0</div>515                <div class="label">Höflichkeit</div>516            </div>517        </div>518    </section>519 520    <!-- ─── Eingebettete App ─── -->521    <div class="embed-section" id="app">522        <div class="section-label">Ausprobieren</div>523        <h2>Frag den Höhlenmenschen</h2>524        <p>Live-Demo — läuft auf Hugging Face Spaces mit Gemma-4-31B-IT.</p>525 526        <div class="embed-wrapper">527            <div class="embed-bar">528                <div class="dot-row">529                    <span></span><span></span><span></span>530                </div>531                <div class="url">aidn-gemma-4-caveman.hf.space</div>532            </div>533            <iframe534                src="https://aidn-gemma-4-caveman.hf.space"535                loading="lazy"536                title="Gemma-4 Caveman Chat"537            ></iframe>538        </div>539    </div>540 541    <!-- ─── Footer ─── -->542    <footer class="site-footer">543        Gebaut mit <a href="https://huggingface.co/google/gemma-4-31B-it">Gemma-4-31B-IT</a> · Gehostet auf <a href="https://huggingface.co/spaces/aidn/gemma-4-caveman">Hugging Face Spaces</a><br>544        Keine Mammuts wurden verletzt.545    </footer>546 547</body>548</html>549