# Der KI-Blindtest: Finde heraus, welches Modell wirklich zu dir passt

**Werkzeug aus dem Kasten von stevennoack.de · Stand: Juli 2026**

Welches KI-Modell schreibt am besten? Die ehrliche Antwort: Das weißt du erst,
wenn du blind vergleichst. Ranglisten aus dem Internet messen den Durchschnitt
aller Nutzer, und dein Markenbild („Modell X ist doch das beste") urteilt mit,
sobald du weißt, wer geschrieben hat. Dieser Bauplan nimmt beides aus dem Spiel.

Ich habe so am 31. Juli 2026 drei Spitzenmodelle gegeneinander schreiben lassen.
Gewonnen hat blind ausgerechnet das Modell, das ich nie benutzt hatte. Seitdem
hat es bei mir die Kreativ-Schublade.

## So geht der Blindtest

1. **Ein Auftrag, mehrere Modelle.** Gleicher Prompt, wortgleich, an zwei bis
   vier Modelle.
2. **Namen weg, Buchstaben dran.** Die Antworten heißen nur noch A, B, C. Die
   Auflösung wandert in eine Datei, die du erst nach dem Urteil öffnest.
3. **Blind urteilen.** Lies alle Texte, wähle den besten, sag laut warum.
4. **Auflösen.** Erst jetzt schauen, wer wer war. Die Überraschung ist der
   Erkenntnisgewinn.

## Das Skript

Braucht nur Python 3 und einen OpenAI-kompatiblen Endpunkt (ein lokales
LiteLLM, oder direkt die Schnittstelle eines Anbieters).

```python
#!/usr/bin/env python3
"""KI-Blindtest: gleicher Prompt an mehrere Modelle, Antworten nur als A, B, C.

Aufruf:
  export OPENAI_BASE_URL="http://127.0.0.1:4000/v1"   # dein Endpunkt
  export OPENAI_API_KEY="..."                          # dein Schlüssel
  python3 blindtest.py "Dein Prompt" modell-1 modell-2 modell-3

Die Zuordnung landet in blindtest-aufloesung.json.
Nicht öffnen, bevor du geurteilt hast. Ehrenwort zählt.
"""
import json
import os
import sys
import urllib.request

base = os.environ.get("OPENAI_BASE_URL", "http://127.0.0.1:4000/v1")
key = os.environ.get("OPENAI_API_KEY", "")

if len(sys.argv) < 4:
    sys.exit("Aufruf: python3 blindtest.py \"Prompt\" modell-1 modell-2 [modell-3 ...]")

prompt, modelle = sys.argv[1], sys.argv[2:]

texte = {}
for m in modelle:
    req = urllib.request.Request(
        f"{base}/chat/completions",
        data=json.dumps({
            "model": m,
            "messages": [{"role": "user", "content": prompt}],
            "max_tokens": 1200,
        }).encode(),
        headers={"Authorization": f"Bearer {key}", "Content-Type": "application/json"},
    )
    texte[m] = json.load(urllib.request.urlopen(req, timeout=180))["choices"][0]["message"]["content"].strip()

with open("blindtest-aufloesung.json", "w") as f:
    json.dump(texte, f, ensure_ascii=False, indent=2)

for label, m in zip("ABCDEFG", modelle):
    print(f"━━━ Text {label} ━━━\n{texte[m]}\n")
```

## Die Steigerung: Blindtest für Code

Bei Texten entscheidet Geschmack, bei Code entscheiden Tests. Die Variante:
Stell allen Modellen dieselbe Programmieraufgabe, lass den gelieferten Code
lokal gegen Testfälle laufen, die NICHT im Prompt stehen, und zähle, wer
besteht. Nicht raten, messen.

Zwei Lehren aus meinen Läufen:

- **Ein Test, den alle bestehen, misst nichts.** Spitzenmodelle lösen normale
  Übungsaufgaben alle fehlerfrei. Unterschiede zeigen sich erst bei gemeinen
  Randfällen (Jahreswechsel, leere Eingaben, Formulierungen wie „viertel vor 1").
- **Der Umgang mit Unklarem verrät am meisten.** Bei einer Eingabe außerhalb
  der Regeln stürzte ein Modell ab, eins lehnte sauber mit Fehlermeldung ab,
  eins wählte einen klugen Standardwert. Diese Reaktion sagt mehr über
  Alltagstauglichkeit als jeder bestandene Normalfall.

## Stolperfallen

1. **Wer die Testfälle kennt, urteilt nicht blind.** Wenn du die Aufgaben
   selbst baust, optimierst du unbewusst darauf. Sauberer: Aufgaben und Urteil
   trennen (eine Person oder KI baut, eine andere bewertet).
2. **Einzelläufe streuen.** Dasselbe Modell liefert beim selben Prompt mal die
   bessere, mal die schwächere Antwort. Wichtige Entscheidungen auf zwei, drei
   Läufe stützen.
3. **Denk-Modelle geben bei knappem Antwort-Budget leere Antworten** zurück,
   weil das Budget fürs interne Nachdenken draufgeht. Im Zweifel max_tokens
   großzügig setzen.

---
Aus der Werkstatt von Steven Noack · stevennoack.de · Die Geschichte zum
Werkzeug steht im Logbuch: stevennoack.de/logbuch
