Files
AI-Vortrag/slides-manifest.js
Erik Thiele 64f057a7c0 Add Docker deployment, EU AI Act slide, and chapter name in HUD
Serves the deck via a small nginx container (docker compose up -d).
The Dockerfile copies files individually rather than COPY . . so the
speaker notes, design docs and local backups stay out of the image.

Deck grows to 44 slides: adds a Vibe Coding slide covering AI-assisted
programming, an EU AI Act slide with the four risk tiers, and expands
the outlook from three to six trends. The HUD now also shows the
current chapter name, resolved from the slide manifest.
2026-07-31 10:36:34 +02:00

69 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ===========================================
SLIDE-MANIFEST — einzige Quelle der Wahrheit für Titel/Reihenfolge.
Wird von ki-verstehen.html (Deck) UND config.html (Konfigurator) geladen.
`id` muss exakt der Dokumentreihenfolge der <section class="slide" data-slide-id="…">
in ki-verstehen.html entsprechen (1-basiert). Beim Umbau des Decks hier mitpflegen.
=========================================== */
const SLIDE_MANIFEST = [
{ id: 1, title: "Titel", kapitel: "—", type: "content", locked: true },
{ id: 2, title: "Hook: Wer hat heute schon KI benutzt?", kapitel: "—", type: "content" },
{ id: 3, title: "Kapitel 1 · Wie alles begann", kapitel: "Wie alles begann", type: "divider" },
{ id: 4, title: "Geschichte: Zeitstrahl 19502022", kapitel: "Wie alles begann", type: "content" },
{ id: 5, title: "Verschachtelte Kreise: KI/ML/DL/GenAI", kapitel: "Wie alles begann", type: "content" },
{ id: 6, title: "Wie lernt eine Maschine (das „A“)", kapitel: "Wie alles begann", type: "content" },
{ id: 7, title: "ANI vs. AGI", kapitel: "Wie alles begann", type: "content" },
{ id: 8, title: "Kapitel 2 · Wie ein LLM funktioniert", kapitel: "Wie ein LLM funktioniert", type: "divider" },
{ id: 9, title: "Mitmach-Spiel: Satz vervollständigen", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 10, title: "LLM: Autovervollständigung", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 11, title: "Token & Parameter", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 12, title: "Token-Beispiel: ein normaler Satz", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 13, title: "Parameter: die Stellschrauben wachsen", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 14, title: "Parameter-Beispiele (Hauspreis, Bild, Sprache)", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 15, title: "Reasoning-Modelle", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 16, title: "System-Prompt, User-Prompt, Context", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 17, title: "Beispiel: System- & User-Prompt", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 18, title: "Kontext-Limit & Compact", kapitel: "Wie ein LLM funktioniert", type: "content" },
{ id: 19, title: "Kapitel 3 · Die Modell-Landschaft", kapitel: "Die Modell-Landschaft", type: "divider" },
{ id: 20, title: "Woher kommt das Wissen", kapitel: "Die Modell-Landschaft", type: "content" },
{ id: 21, title: "Modell-Landschaft (GPT, Claude, Gemini …)", kapitel: "Die Modell-Landschaft", type: "content" },
{ id: 22, title: "Wer baut sie, was unterscheidet sie", kapitel: "Die Modell-Landschaft", type: "content" },
{ id: 23, title: "Geschäftsmodell: Womit verdienen sie Geld", kapitel: "Die Modell-Landschaft", type: "content" },
{ id: 24, title: "SEO vs. GEO", kapitel: "Die Modell-Landschaft", type: "content" },
{ id: 25, title: "Wo finde ich diese Modelle", kapitel: "Die Modell-Landschaft", type: "content" },
{ id: 26, title: "Kapitel 4 · Vom Chatbot zum Agenten", kapitel: "Vom Chatbot zum Agenten", type: "divider" },
{ id: 27, title: "Eskalationsleiter: Chatbot → Agent", kapitel: "Vom Chatbot zum Agenten", type: "content" },
{ id: 28, title: "MCP: USB-C für KI", kapitel: "Vom Chatbot zum Agenten", type: "content" },
{ id: 29, title: "Kapitel 5 · Die Grenzen der KI", kapitel: "Die Grenzen der KI", type: "divider" },
{ id: 30, title: "Schwächen der KI (Übersicht)", kapitel: "Die Grenzen der KI", type: "content" },
{ id: 31, title: "Halluzination im Detail", kapitel: "Die Grenzen der KI", type: "content" },
{ id: 32, title: "Grounding: KI an der Realität verankern", kapitel: "Die Grenzen der KI", type: "content" },
{ id: 33, title: "Grounding-Beispiel: Urlaubstage", kapitel: "Die Grenzen der KI", type: "content" },
{ id: 34, title: "Kapitel 6 · Sicherheit im Umgang mit KI", kapitel: "Sicherheit im Umgang mit KI", type: "divider" },
{ id: 35, title: "Prompt Injection", kapitel: "Sicherheit im Umgang mit KI", type: "content" },
{ id: 36, title: "Security: weitere Punkte", kapitel: "Sicherheit im Umgang mit KI", type: "content" },
{ id: 37, title: "Kapitel 7 · Praxis & Ausblick", kapitel: "Praxis & Ausblick", type: "divider" },
{ id: 38, title: "Praktische Tipps", kapitel: "Praxis & Ausblick", type: "content" },
{ id: 39, title: "Agenten selbst bauen: Microsoft Copilot", kapitel: "Praxis & Ausblick", type: "content" },
{ id: 40, title: "Vibe Coding: KI-Unterstützung beim Programmieren", kapitel: "Praxis & Ausblick", type: "content" },
{ id: 41, title: "Ausblick", kapitel: "Praxis & Ausblick", type: "content" },
{ id: 42, title: "EU AI Act: KI nach Risiko sortiert", kapitel: "Praxis & Ausblick", type: "content" },
{ id: 43, title: "Glossar", kapitel: "Praxis & Ausblick", type: "content" },
{ id: 44, title: "Closing", kapitel: "—", type: "content", locked: true },
];
const SLIDE_CONFIG_STORAGE_KEY = 'cancomDeckSlideConfig';
function loadSlideConfig() {
try {
const raw = localStorage.getItem(SLIDE_CONFIG_STORAGE_KEY);
if (!raw) return null;
const parsed = JSON.parse(raw);
if (Array.isArray(parsed)) return new Set(parsed);
} catch (_) {}
return null;
}
function saveSlideConfig(enabledIdSet) {
localStorage.setItem(SLIDE_CONFIG_STORAGE_KEY, JSON.stringify(Array.from(enabledIdSet)));
}