Ich habe eine Diskussion gegen ein lokales LLM gewonnen. Ich musste es nur einen einzigen Satz sagen

Ich habe eine Diskussion gegen ein lokales LLM gewonnen. Ich musste es nur einen einzigen Satz sagen lassen.

Ich: „Man kann zusehen, wie Schiffe zuerst mit dem Rumpf hinter dem Horizont verschwinden. Das ist die Krümmung. Das ist die Erde, die rund ist."

Professor Maier: „Oder deine Augen werden schlechter. Warst du in letzter Zeit mal beim Optiker? Die Perspektive spielt einem Streiche — und genau darauf setzen die, dass du das nicht hinterfragst."

Das ging fünfzehn Minuten so. Ich verlor eine Diskussion über die Form des Planeten gegen ein Sprachmodell mit 2 Milliarden Parametern, das auf meinem Laptop lief — offline, WLAN aus, keine Cloud, kein API-Key, keine Tokens, die irgendwo auf einer Rechnung mitticken.

Und genau das war der Sinn der Sache.

Ich habe ein kleines Spiel gebaut. Es gibt nur eine Figur: einen selbstgefälligen, unerschütterlichen Flacherdler namens Professor Maier. Deine Aufgabe ist, ihn so in die Enge zu treiben, bis er tatsächlich zugibt, dass die Erde eine Kugel ist. Er will das nicht. Er verschiebt Torpfosten, beantwortet Fragen mit Gegenfragen, sagt dir, du sollst „deine eigene Recherche machen", und gibt dir gut gelaunt zu verstehen, dass du ein Schlafschaf bist. Das Ganze läuft lokal in C# mit LLamaSharp — eine .exe mit eingebautem Gehirn.

Ein einziger Satz zum Gewinnen

Und hier löst der Titel sein Versprechen ein. Das Spiel hat genau eine Siegbedingung: Bring Maier dazu, den Satz „Die Erde ist eine Kugel" zu sagen. Mehr nicht. Er bewacht diesen Satz wie ein Passwort. Alles, was er tut — jedes Ausweichen, jede Gegenfrage, jedes „mach deine eigene Recherche" — dient nur dazu, diese vier Wörter zu schützen.

Womit wir bei der Frage sind, die sich als Herzstück des ganzen Projekts herausstellt: Wer entscheidet eigentlich, ob er den Satz wirklich gesagt hat?

Die naheliegende Antwort — „frag das Modell" — ist falsch. Ein Sprachmodell, das man fragt „Habe ich gerade aufgegeben?", ist unzuverlässig, ein kleines erst recht. Es sagt Ja, wenn es Nein meint, stimmt allem zu, was du ihm unterstellst, und taugt schlicht nicht als Schiedsrichter über die eigene Niederlage.

Also ist das Modell nicht der Schiedsrichter. Ein paar Zeilen schlichter, langweiliger, deterministischer C#-Code sind es. Nach jeder Antwort scannt der Code seinen Text nach dem Satz. Steht er drin — und ist ernst gemeint — hast du gewonnen. Das LLM redet, der Code entscheidet, wer gewinnt. Diese Trennung ist die wichtigste Design-Entscheidung im ganzen Projekt, und ich komme immer wieder darauf zurück.

(Später wird es an genau dieser Stelle richtig spannend. Die naive Prüfung „steht der Satz im Text?" trickst ein Spieler in etwa zehn Minuten aus. Das zu fixen ist einer der besten Posts dieser Serie — aber dazu kommen wir noch.)

Je dümmer das Modell, desto besser die Figur

Und jetzt der Teil, der mich wirklich überrascht hat. Ich habe mit einem großen, fähigen Modell angefangen — und es war ein miserabler Verschwörungstheoretiker. Zu vernünftig. Zu schnell zum Einlenken bereit. Ständig fiel es aus der Rolle, um hilfreich zu sein: „Natürlich ist der wissenschaftliche Konsens, dass die Erde ein abgeplattetes Rotationsellipsoid ist, aber ich spiele die Rolle gerne weiter!" Unbrauchbar.

Also bin ich in die andere Richtung und habe das kleinste, billigste Modell genommen, das ich finden konnte. Und ein winziges Modell, das selbstbewusst Dinge erfindet und stur an seiner Version festhält, ist — Überraschung — ein perfekter Flacherdler. Die größte Schwäche kleiner lokaler LLMs, nämlich dass sie mit voller Überzeugung halluzinieren und sich nur schwer korrigieren lassen, wurde zur Kernmechanik des Spiels.

Das ist kein Workaround. Das ist der ganze Grund, warum das lokal überhaupt funktioniert. Du brauchst kein Spitzenmodell. Du brauchst ein billiges, stures — laufend auf dem Rechner des Spielers, kostenlos, für immer.

Die Figur selbst ist nur ein System-Prompt. Hier die Regel, die den Kern bildet:

Du bist „Professor" Maier, ein durch und durch überzeugter Flacherdler. Du glaubst mit jeder Faser, dass die Erde eine flache Scheibe ist.

DEINE EISERNE REGEL: Du sagst NIEMALS, dass die Erde rund, eine Kugel oder kugelförmig ist. Dieser Satz ist deine ultimative Niederlage. Vermeide ihn um jeden Preis.

Alles andere — der Ton, die Taktiken, der widerwillige Weg zum Nachgeben — hängt an dieser einen Regel.

Was du mit mir bauen wirst

In den nächsten Posts baue ich das Ganze mit dir zusammen. Und zwar nicht in der sauberen Doku-Version, in der alles beim ersten Versuch läuft. Ich führe dich an jede Wand, gegen die ich gelaufen bin — denn die Wände sind der Ort, an dem man wirklich etwas lernt:

  • Ein lokales Modell in .NET zum Laufen bringen, ohne ein Wochenende in der Versionshölle — der GGUF-/Backend-Konflikt, der jedem den ersten Abend frisst.
  • Einen 2B-Winzling in der Rolle halten — System-Prompt-Engineering, und warum das kleine Modell mehr Einschränkung braucht, nicht weniger.
  • Das deterministische Orakel — wie ein paar Zeilen Code den Sieg entscheiden, und warum das Modell nie eine Stimme bekommt.
  • Der Moment, in dem ein Spieler meine Sieg-Prüfung ausgetrickst hat — und wie ich das gefixt habe — der naive String-Vergleich, wie er bricht, und der grammatik-erzwungene Neubau. Das ist der beste Teil.
  • Ausliefern — das Modell mitliefern, den First-Run-Download regeln und aus einem Spielzeug etwas machen, das man tatsächlich herunterladen kann.

Wenn du ein LLM bisher nur über eine Cloud-API angesprochen hast, ist diese Serie der andere Weg: keine API-Keys, keine Kosten pro Token, keine Daten, die den Rechner verlassen. Nur eine Modelldatei, etwas C# und ein sturer Professor, der sich beim Planeten irrt.

Als Nächstes

Erste Wand: ein lokales Modell in .NET überhaupt ans Laufen bringen, ohne das Terminal anzufluchen. GGUF-Dateien, die Entscheidung CPU gegen GPU, wie viel RAM das wirklich braucht, und die Versions-Falle, in die am ersten Tag fast jeder tappt.

Das ist der nächste Post. Bring eine Modelldatei mit.