Zwei KIs debattieren live – mit TTS-Audio und animiertem Player. Alles in einer unified Web-App.
Von Jay Imdahl — YouTube: @binaerverkehr | Website
| Konfigurator | Debatte | Player |
|---|---|---|
![]() |
![]() |
![]() |
- Konfigurator – Thema, Modelle, Stimmen, Runden, Positionen – alles im Browser
- Live-Debatte – WebSocket-basierte Fortschrittsanzeige während die KIs debattieren
- Multi-Provider – Anthropic (Claude), OpenAI (GPT-4o), Ollama (lokal)
- TTS-Audio – edge-tts generiert MP3s für jeden Debattenbeitrag
- Audio-Player – Sequenzieller Player mit Visualizer, Auto-Advance, Keyboard-Shortcuts
- Moderator – Optionales Intro & Zusammenfassung durch KI-Moderator
| Komponente | Technologie |
|---|---|
| Backend | FastAPI (async, WebSocket) |
| Frontend | HTMX + Jinja2 Templates |
| TTS | edge-tts (Microsoft Edge voices, kostenlos) |
| LLMs | anthropic SDK, openai SDK, Ollama HTTP API |
| Tooling | Python 3.12+, uv |
# 1. Installieren (einmalig)
pipx install ki-arena # oder: uv tool install ki-arena
# oder: pip install ki-arena
# 2. Starten — Browser öffnet sich automatisch
ki-arenaBeim ersten Start erscheint eine Einrichtungsseite im Browser, auf der du deine API-Keys eingeben kannst. Keine .env-Datei nötig.
# 1. In den Projektordner wechseln
cd ki-arena
# 2. Dependencies installieren
uv sync
# 3. Server starten — Browser öffnet sich automatisch
uv run python -m app.mainAPI-Keys können über die Einrichtungsseite im Browser (/setup) oder wie bisher über eine .env-Datei konfiguriert werden.
Beim Start zeigt die App an, welche Provider verfügbar sind:
========================================================
⚔ KI Arena – Starting up
========================================================
✓ Anthropic API key found
⚠ OpenAI API key missing — GPT models unavailable
✓ Ollama erreichbar – 3 Modell(e): llama3:latest, ...
📂 Debatten-Ordner: ~/.ki-arena/debates
🌐 http://localhost:8000
========================================================
Falls du noch nie mit Python oder der Kommandozeile gearbeitet hast, folge dieser Schritt-für-Schritt-Anleitung.
macOS:
- Drücke
Cmd + Leertaste(Spotlight-Suche öffnet sich) - Tippe
Terminalein und drückeEnter
Windows:
- Drücke
Windows-Taste + R - Tippe
cmdein und drückeEnter - Alternativ: Suche im Startmenü nach „Eingabeaufforderung" oder „PowerShell"
Im Folgenden werden alle Befehle in diesem Terminal/dieser Kommandozeile eingegeben.
KI Arena benötigt Python 3.12 oder neuer.
Prüfen, ob Python bereits installiert ist:
python3 --versionWenn eine Versionsnummer wie Python 3.12.x erscheint, ist Python bereits installiert. Weiter mit Schritt 3.
macOS – Python installieren:
Option A: Über die offizielle Website
- Gehe zu https://www.python.org/downloads/
- Klicke auf „Download Python 3.12.x" (die große gelbe Schaltfläche)
- Öffne die heruntergeladene
.pkg-Datei und folge dem Installationsassistenten - Starte das Terminal neu und prüfe mit
python3 --version
Option B: Über Homebrew (falls Homebrew installiert ist)
brew install python@3.12Windows – Python installieren:
- Gehe zu https://www.python.org/downloads/
- Klicke auf „Download Python 3.12.x"
- Öffne die heruntergeladene
.exe-Datei - Wichtig: Setze im Installationsfenster unbedingt den Haken bei „Add python.exe to PATH" (ganz unten im Fenster)
- Klicke auf „Install Now"
- Schließe die Eingabeaufforderung und öffne sie neu
- Prüfe mit
python --version(unter Windows ohne3)
uv ist ein moderner Python-Paketmanager, der alle Abhängigkeiten automatisch installiert.
macOS:
curl -LsSf https://astral.sh/uv/install.sh | shDanach Terminal schließen und neu öffnen, damit der Befehl uv verfügbar ist.
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Danach Eingabeaufforderung schließen und neu öffnen.
Prüfen, ob die Installation geklappt hat:
uv --versionFalls du das Projekt als ZIP-Datei erhalten hast:
- Entpacke die ZIP-Datei (Doppelklick auf macOS, Rechtsklick → „Alle extrahieren" auf Windows)
- Merke dir den Ordnerpfad (z.B.
Downloads/ki-arena)
Falls du Git installiert hast:
git clone https://github.com/binaerverkehr/ki-arena.gitWechsle im Terminal in den Projektordner:
macOS:
cd ~/Downloads/ki-arenaWindows:
cd %USERPROFILE%\Downloads\ki-arenaTipp: Du kannst den Ordner auch per Drag & Drop ins Terminal ziehen, um den Pfad einzufügen.
Dieser Befehl installiert automatisch alle benötigten Python-Pakete:
uv syncDas dauert beim ersten Mal ca. 1–2 Minuten. Wenn alles klappt, erscheint keine Fehlermeldung.
Die KI Arena braucht Zugang zu einem KI-Sprachmodell. Du hast drei Optionen:
- Gehe zu https://console.anthropic.com/
- Erstelle ein kostenloses Konto (E-Mail + Bestätigung)
- Gehe zu Settings → API Keys (oder direkt: https://console.anthropic.com/settings/keys)
- Klicke auf „Create Key"
- Gib dem Key einen Namen (z.B. „KI Arena") und klicke auf „Create Key"
- Kopiere den Key sofort – er wird nur einmal angezeigt! Er beginnt mit
sk-ant-api03-...
Kosten: Anthropic bietet ein kostenloses Startguthaben. Danach fallen geringe Kosten pro Debatte an (ca. $0.01–0.10 je nach Modell und Länge). Du musst eine Zahlungsmethode hinterlegen, um das kostenlose Guthaben zu nutzen.
- Gehe zu https://platform.openai.com/
- Erstelle ein Konto oder melde dich an
- Gehe zu API Keys (oder direkt: https://platform.openai.com/api-keys)
- Klicke auf „Create new secret key"
- Gib dem Key einen Namen und klicke auf „Create secret key"
- Kopiere den Key sofort – er beginnt mit
sk-...
Kosten: Ähnlich wie Anthropic – geringes Startguthaben, dann Pay-per-Use. Zahlungsmethode erforderlich.
Ollama lässt KI-Modelle direkt auf deinem Computer laufen – komplett kostenlos und ohne Internet (nach dem Download).
- Gehe zu https://ollama.com/download
- Lade die Version für dein Betriebssystem herunter und installiere sie
- Öffne ein neues Terminal-Fenster und starte Ollama:
ollama serve
- Öffne ein weiteres Terminal-Fenster und lade ein Modell herunter:
(Das Modell ist ca. 4 GB groß – braucht etwas Zeit.)
ollama pull llama3
Hinweis: Ollama braucht einen Computer mit mindestens 8 GB RAM. Auf älteren oder schwächeren Geräten kann es langsam sein.
Am einfachsten: Über die Web-Oberfläche
Starte die App (siehe Schritt 7) — beim ersten Start öffnet sich automatisch die Einrichtungsseite im Browser. Dort trägst du deinen API-Key ein und klickst auf „Speichern & Starten". Fertig!
Die Keys werden sicher in ~/.ki-arena/.env gespeichert.
Alternativ: Manuell per .env-Datei
# macOS:
cp .env.example .env && open -e .env
# Windows:
copy .env.example .env && notepad .envBeispiel:
ANTHROPIC_API_KEY=sk-ant-api03-dein-key-hier-einfügen
Wichtig: Die
.env-Datei enthält geheime Schlüssel. Teile sie niemals mit anderen und lade sie nicht ins Internet hoch.
uv run python -m app.mainWenn alles funktioniert, öffnet sich automatisch dein Browser mit der KI Arena.
Falls kein API-Key konfiguriert ist, erscheint die Einrichtungsseite — trage dort deinen Key ein und klicke auf „Speichern & Starten".
Falls der Browser sich nicht automatisch öffnet, gehe manuell zu: http://localhost:8000
Wenn du die KI Arena später erneut starten willst, brauchst du nur zwei Schritte:
- Terminal öffnen und in den Projektordner wechseln:
cd ~/Downloads/ki-arena # macOS cd %USERPROFILE%\Downloads\ki-arena # Windows
- Server starten:
uv run python -m app.main
Falls du Ollama nutzt: Stelle sicher, dass ollama serve in einem separaten Terminal-Fenster läuft.
ki-arena/
├── app/
│ ├── main.py # FastAPI App + Startup-Checks + Error-Handler
│ ├── config.py # pydantic-settings (.env-basiert)
│ ├── services/
│ │ ├── llm.py # LLM-Provider (Anthropic, OpenAI, Ollama)
│ │ ├── tts.py # edge-tts Wrapper mit kuratierten Stimmen
│ │ └── debate.py # Debate Engine (Runden-Orchestrierung)
│ ├── routers/
│ │ ├── pages.py # Template-Routes (/, /debate, /player)
│ │ ├── api.py # REST API + HTMX Partials
│ │ └── ws.py # WebSocket für Live-Updates
│ ├── templates/
│ │ ├── base.html # Layout (HTMX, Fonts, Navigation)
│ │ ├── index.html # Konfigurator mit Validierung
│ │ ├── setup.html # Einrichtungsseite für API-Keys
│ │ ├── debate.html # Live-Ansicht + WebSocket-Client
│ │ ├── player.html # Audio-Player mit Keyboard-Shortcuts
│ │ └── partials/
│ │ └── debate_turn.html
│ └── static/
│ ├── css/style.css # Dark Arena Theme
│ └── js/arena.js # Frontend-Utilities
├── debates/ # Generierte Debatten (JSON + MP3) – oder ~/.ki-arena/debates/
├── pyproject.toml
├── .env.example
└── README.md
- Konfigurieren → Thema, Modelle, Stimmen, Runden wählen
- Starten → Debatte läuft asynchron im Hintergrund
- Live verfolgen → WebSocket pusht Fortschritts-Updates in Echtzeit
- Anhören → Audio-Player spielt alle Beiträge sequenziell ab
| Taste | Funktion |
|---|---|
Space |
Play / Pause |
← / → |
Vorheriges / Nächstes Segment |
↑ / ↓ |
Lauter / Leiser |
Home / End |
Zum Anfang / Ende |
M |
Stummschalten ein/aus |
→ Es ist kein API-Key konfiguriert und Ollama ist nicht erreichbar.
Lösung: Öffne die Einstellungen unter /setup im Browser und trage mindestens einen API-Key ein. Alternativ per .env-Datei:
# Option A: Anthropic
ANTHROPIC_API_KEY=sk-ant-api03-...
# Option B: OpenAI
OPENAI_API_KEY=sk-...
# Option C: Ollama (kein Key nötig)
# Stelle sicher, dass Ollama läuft: ollama serve# Anderen Port nutzen:
PORT=8080 uv run python -m app.main
# Oder prüfen, was Port 8000 belegt:
lsof -i :8000→ Stelle sicher, dass Ollama läuft und erreichbar ist:
# Ollama starten
ollama serve
# Modell installieren (falls noch nicht geschehen)
ollama pull llama3
# Testen
curl http://localhost:11434/api/tags→ edge-tts braucht eine Internetverbindung (nutzt Microsoft Edge Cloud-Stimmen).
Offline? Dann werden Debatten ohne Audio generiert – die Texte sind trotzdem verfügbar.
→ Lade die Seite neu. Falls die Debatte einen Fehler hatte, wird dieser in der Debattenansicht angezeigt. Häufige Ursachen:
- API Rate-Limit erreicht (warte kurz, dann erneut versuchen)
- Ungültiger API-Key
- Ollama-Modell nicht installiert
Wenn du Python 3.14 beta nutzt und Probleme mit uv sync hast:
# Explizit Python 3.12 nutzen:
uv python install 3.12
uv sync --python 3.12Du hast eine Idee, einen Bug gefunden oder möchtest ein Feature beitragen? Dann freue ich mich über deine Beteiligung!
- Feature-Requests & Bugs — Erstelle ein Issue auf GitHub
- Pull Requests — Fork das Repo, erstelle einen Branch und schick einen PR
- Feedback — Schreib mir auf YouTube oder über meine Website




