LLM Council: mehrere Modelle beraten lassen locaux
LLM Council ist ein kleines Projekt, das Andrej Karpathy Ende 2025 veröffentlicht hat: Statt eine Frage an ein einzelnes Modell zu senden, wird sie mehreren Modellen vorgelegt. Anschließend bewertet jedes die Antworten der anderen, ohne zu wissen, wer sie verfasst hat, und ein „Vorsitzender“-Modell erstellt die abschließende Zusammenfassung. Das Repository zielt auf Cloud-Modelle über OpenRouter ab, aber das Grundmuster umfasst etwa hundert Zeilen und lässt sich auf lokale Modelle übertragen, die von Ollama bereitgestellt werden. Diese Anleitung erklärt die drei Schritte, zeigt, wie Sie sie auf einem persönlichen Rechner reproduzieren, erläutert den Speicher- und Zeitaufwand und erklärt, warum Sie nicht davon ausgehen sollten, dass der Rat besser antwortet als ein gutes Einzelmodell.
#LLM Council: das Grundmuster in drei Schritten
Das Repository beschreibt einen festen Ablauf in drei Phasen. Jede Phase ist ein gewöhnlicher Modellaufruf ohne Tool und ohne Speicher: Der einzige Kniff besteht darin, wie die Ausgaben der ersten Phase die beiden folgenden speisen.
- 01Erste EinschätzungenDie Frage des Benutzers wird unverändert und separat an jedes Ratsmitglied gesendet. Jedes Mitglied antwortet, ohne die anderen zu sehen. In der ursprünglichen Benutzeroberfläche werden diese Antworten in Registerkarten angezeigt, eine pro Modell.
- 02Korrekturlesen und BewertungJedes Mitglied erhält anschließend die anonymisierten Antworten der anderen (gekennzeichnet mit „Antwort A“, „Antwort B“ ...), und muss sie von der besten bis zur schlechtesten bewerten, indem es ihre Richtigkeit und Tiefe beurteilt. Die Anonymisierung soll verhindern, dass ein Modell einen bekannten Konkurrenten bevorzugt oder benachteiligt.
- 03Zusammenfassung des VorsitzendenEin als Vorsitzender bestimmtes Modell erhält die Frage, alle Antworten und alle Bewertungen und formuliert anschließend die einheitliche endgültige Antwort, die dem Benutzer angezeigt wird.
Nichts an diesem Schema erfordert unterschiedliche Modelle, aber genau darin liegt sein ganzer Sinn: Man setzt auf die Vielfalt der Trainingsdaten, damit die Fehler eines Modells von einem anderen erkannt werden. Der Vorsitzende kann eines der Mitglieder oder ein separates Modell sein, im Allgemeinen das leistungsfähigste der Liste.
#Was Karpathys Repository enthält
Agenten, die auf Ihrem Rechner handeln: agentisches Cline, MCP, n8n + Ollama und lokale Automatisierungen.
- Lebenslanger Online-Zugang
- PDF + Dateien
- Lebenslange Updates
Das Repository github.com/karpathy/llm-council ist eine lokale Webanwendung, die einer herkömmlichen Chatoberfläche ähnelt. Laut README und den Konfigurationsdateien zum Zeitpunkt der Erstellung besteht es aus:
- Ein Python-Backend (FastAPI)
- Im Ordner backend/: die Logik der drei Schritte, ein HTTP-Client für die OpenRouter-API und die Speicherung der Unterhaltungen als JSON-Dateien in einem data/-Ordner. Die Abhängigkeiten werden mit uv verwaltet.
- Ein React-Frontend (Vite)
- Im Ordner frontend/: die Oberfläche, die die einzelnen Antworten, die Ranglisten und die Zusammenfassung anzeigt.
- Eine Konfigurationsdatei
- backend/config.py führt die Ratsmitglieder (COUNCIL_MODELS) und den Vorsitzenden (CHAIRMAN_MODEL) in Form von OpenRouter-Kennungen sowie die Adresse der aufgerufenen API auf.
- Ein Startskript
- start.sh startet Backend und Frontend gemeinsam. In einer .env-Datei wird ein Schlüssel OPENROUTER_API_KEY erwartet.
Die standardmäßig konfigurierten Modelle sind geschlossene Cloud-Modelle (in der veröffentlichten Version die Familien GPT, Gemini, Claude und Grok). Das ist der Punkt, den Sie für eine lokale Version ändern müssen: Der übrige Code kümmert sich nicht darum, wer antwortet, solange die API das von OpenAI popularisierte Format „chat completions“ spricht. Lesen Sie README und config.py, bevor Sie dieser Anleitung folgen; das Projekt kann sich seit dem 12. Oktober 2026 weiterentwickelt haben.
#Voraussetzungen für eine lokale Version
- Ollama installiert und funktionsfähig
- Der Server lauscht standardmäßig auf http://localhost:11434. Überprüfen Sie mit dem Befehl ollama list, ob Ihre Modelle angezeigt werden.
- Drei bis vier Modelle aus unterschiedlichen Modellfamilien
- Ein Rat aus Modellen derselben Familie verliert den Vorteil der Vielfalt. Streben Sie beispielsweise ein Qwen, ein Llama, ein Mistral und ein Gemma in ähnlichen Größen an.
- Passender Speicher
- Bei Q4_K_M sollten Sie mit ungefähr 5 GB pro 7B-Modell und 9 GB pro 14B-Modell rechnen. Die Mitglieder müssen nicht alle gleichzeitig im Speicher Platz finden, aber davon hängt der Bedienkomfort ab (siehe den Abschnitt zu den Kosten).
- Python 3.10 oder höher
- Für das minimale Skript dieser Anleitung mit dem Paket requests. Für das ursprüngliche Repository zusätzlich uv und Node.js.
- Patience
- Eine Beratungsrunde kostet mindestens doppelt so viele Generierungen wie die Anzahl der Mitglieder plus eine weitere. Das ist kein Tool für Sofort-Chats.
#Schritt 1: Rat und Vorsitzenden auswählen
Die Auswahl der Mitglieder ist ein Balanceakt zwischen Vielfalt und Speicher. Der Vorsitzende muss dagegen vor allem lange Kontexte gut lesen: Er erhält die Frage, alle Antworten und alle Bewertungen, was leicht mehrere tausend Tokens umfasst. Wählen Sie für diese Rolle das leistungsfähigste Modell, das Ihre Maschine unterstützt, auch wenn es langsamer ist, denn es wird pro Durchlauf nur einmal aufgerufen.
Größen von 7B bis 8B eignen sich für die Mitglieder auf einer Karte mit 12 GB: Ein einziges Modell passt mit Spielraum für den Kontext in den Speicher, und Ollama wechselt zwischen ihnen. Mit 24 GB oder einem Mac mit 48 GB Unified Memory können Sie die Mitglieder auf 14B erhöhen oder zwei bis drei Modelle gleichzeitig geladen halten, wodurch die Neuladungen entfallen.
#Schritt 2: Ollama für mehrere Modelle konfigurieren
Hier sind zwei Einstellungen von Ollama entscheidend. Die erste ist die Anzahl der im Speicher gehaltenen Modelle, festgelegt durch die Variable OLLAMA_MAX_LOADED_MODELS: Wenn der Speicher es erlaubt, verhindert das Geladenhalten aller Mitglieder ein erneutes Laden bei jedem Wechsel. Die zweite ist das Kontextfenster num_ctx, das auf Ollama standardmäßig kurz ist: Beim Bewerten und bei der Zusammenfassung des Vorsitzenden müssen mehrere vollständige Antworten gelesen werden, und ein zu kleiner Kontext schneidet den Anfang des Prompts stillschweigend ab.
Unter macOS setzen Sie dieselben Variablen mit launchctl setenv, bevor Sie die Anwendung neu starten. Der Wert von OLLAMA_MAX_LOADED_MODELS muss zu Ihrem Speicher passen: Zwei 8B-Modelle in Q4 belegen mit ihrem Kontext bereits etwa zehn Go. Der Kontext selbst wird pro Anfrage (über das Feld options.num_ctx der API) oder in einer abgeleiteten Modelfile festgelegt; im nächsten Abschnitt wird er an jeden Aufruf übergeben.
#Schritt 3: ein minimalistischer Rat in Python
Das folgende Skript bildet die drei Schritte des Verfahrens mit der nativen API von Ollama ohne Benutzeroberfläche nach. Es mischt die Reihenfolge der Antworten vor der Bewertung, damit die Kennzeichnungen den Verfasser nicht verraten, bittet jedes Mitglied um eine kurze Rangfolge und übergibt anschließend alles dem Vorsitzenden. Passen Sie die Modellnamen an die auf Ihrer Maschine vorhandenen Modelle an.
Das ursprüngliche Repository geht etwas weiter: Es extrahiert die Bewertungszeile jedes Richters, um einen durchschnittlichen Rang pro Antwort zu berechnen und ihn neben den Registerkarten anzuzeigen. Sie können dies mit wenigen Zeilen ergänzen, indem Sie die Zeile „BEWERTUNG:“ aus jeder Ausgabe auslesen. Denken Sie daran, dass kleinere Modelle dieses Format nicht immer einhalten: Sehen Sie eine Ausweichlösung vor, wenn die Zeile fehlt.
#Schritt 4: das ursprüngliche Repository an Ollama anpassen
Wenn Sie die Weboberfläche verwenden möchten, besteht der kürzeste Weg darin, den OpenAI-kompatiblen Endpunkt von Ollama zu verwenden, der unter http://localhost:11434/v1/chat/completions bereitgestellt wird. Das Backend des Repositorys sendet bereits Anfragen in diesem Format an OpenRouter: Im Prinzip müssen Sie nur die API-Adresse und die Modellkennungen in backend/config.py ersetzen und anschließend einen Dummy-Schlüssel eintragen, Ollama ignoriert den Autorisierungs-Header.
Zwei Punkte müssen weiterhin manuell behandelt werden. Erstens der Kontext: Der OpenAI-kompatible Endpunkt verfügt über kein Feld num_ctx. Sie müssen daher entweder Modellvarianten mit einem den Kontext festlegenden Modelfile erstellen oder den Client auf die native API von /api/chat umstellen, die Optionen akzeptiert. Zweitens die weiter oben erwähnte Parallelität: Der erste Schritt startet die Aufrufe gleichzeitig, was einen sequenziellen Ablauf erfordert, wenn Ihre Mitglieder nicht alle in den Speicher passen.
Mehrere Community-Forks haben diese Änderungen für Ollama oder für andere lokale Server vorgenommen. Bevor Sie einen davon übernehmen, prüfen Sie das Datum des letzten Commits und die Anzahl der betroffenen Dateien im Vergleich zum ursprünglichen Repository und lesen Sie den Code, der das Modell aufruft: Er ist kurz, und dort liegen die Unterschiede. Dieser Leitfaden empfiehlt keinen bestimmten Fork; ihr Zustand ändert sich zu schnell.
#Speicher- und Zeitaufwand
Die Rechnung ist einfach und sollte geklärt werden, bevor Sie sich festlegen. Für eine Beratung mit N Mitgliedern erfordert eine vollständige Runde N Generierungen in Schritt 1, N Generierungen in Schritt 2 und eine für den Vorsitzenden, also 2N + 1 Aufrufe. Die Aufrufe von Schritt 2 und der Aufruf des Vorsitzenden sind aufwendiger zu verarbeiten als der erste, da der Prompt alle Antworten enthält: Zur Generierungszeit kommt die Lesezeit des Prompts hinzu.
- Drei Mitglieder
- Sieben Generierungen pro Frage. Wenn jede Antwort auf Ihrer Maschine etwa eine halbe Minute benötigt, dauert ein Durchlauf ohne die Neuladungen mehr als drei Minuten.
- Mindestgröße des Arbeitsspeichers
- Das größte Modell des Rats zuzüglich seines Kontexts. Mit 8B-Mitgliedern in Q4 und einem Kontext von 16 000 Tokens reicht eine Karte mit 12 GB aus, sofern nur ein geladenes Modell behalten wird.
- Ausreichend Speicher
- Alle Mitglieder werden gleichzeitig geladen: die Summe ihrer Größen zuzüglich eines Kontext-Caches pro Modell. Drei 8B-Modelle in Q4 benötigen mindestens eine GPU mit 24 GB oder einen Mac mit 32 GB Unified Memory.
- Rechargements
- Wenn die Mitglieder nicht gemeinsam in den Speicher passen, kostet jeder Modellwechsel einige Sekunden zum Laden von der Festplatte. In einem Durchlauf geschieht das bis zu 2N-mal. Eine NVMe-SSD macht diese Kosten erträglich; eine langsame Festplatte macht sie lästig.
Diese Größenordnungen hängen von Ihrer Hardware, der Quantisierung und der Länge der Antworten ab: Wir haben für diesen Artikel keine Durchlaufzeiten gemessen, und die obigen Zahlen sind Berechnungsregeln, keine Ergebnisse. Um Ihren Fall zu bewerten, messen Sie die Dauer einer einfachen Generierung mit jedem Ihrer Mitglieder und wenden Sie die Formel an.
#Grenzen und Verzerrungen des Rats
Das Muster ist reizvoll, weil es einer Peer-Review ähnelt. Dennoch sollte man der Vorstellung widerstehen, dass es zwangsläufig genauer ist als ein gutes Einzelmodell: Das Repository liefert dafür keinerlei Messung, und mehrere bekannte Verzerrungen von Bewertungsmodellen sprechen dagegen.
- Unvollständige Anonymisierung
- Die Bezeichnungen verbergen den Namen, nicht den Stil. Ein Modell kann seine eigene Schreibweise oder die einer ihm bekannten Modellfamilie erkennen und entsprechend klassifizieren. Karpathy merkt selbst qualitativ an, dass Modelle häufig die Antwort eines anderen ihrer eigenen vorgezogen haben: Das ist eine Beobachtung, keine Garantie.
- Positions- und Längenbias
- Arbeiten zu Bewertungsmodellen, etwa der Artikel zu MT-Bench von Zheng et al. (2023), dokumentieren eine Präferenz für die zuerst gelesene Antwort und für lange Antworten. Das Mischen der Reihenfolge schwächt den ersten Bias ab; der zweite lässt sich nur schwer korrigieren.
- Korrelation von Fehlern
- Modelle, die mit ähnlichen Korpora trainiert wurden, machen oft dieselben Fehler. Ein Rat aus kleinen Modellen kann einstimmig für eine falsche Antwort stimmen, und der Vorsitzende übernimmt sie.
- Der Vorsitzende bleibt allein
- Die Zusammenfassung hängt vollständig vom Vorsitzendenmodell ab: Wenn es halluziniert, ändert der Rat daran nichts. Lesen Sie die einzelnen Antworten, wenn das Thema wichtig ist; genau darin liegt übrigens der Nutzen der Registerkarten der ursprünglichen Oberfläche.
- Kleine Modelle, lange Anweisungen
- Der Bewertungs-Prompt ist anspruchsvoll: drei oder vier Texte lesen, urteilen, begründen und ein Format einhalten. Unterhalb von 7B werden die Ausgaben unregelmäßig, und die durchschnittliche Bewertung verliert ihre Bedeutung.
#Praktische Anwendungsfälle eines lokalen LLM Council
Der Mehraufwand von 2N + 1 Generierungen ist gerechtfertigt, wenn die Frage selten und wichtig ist, nicht bei belanglosem Plaudern. Bei Personen, die das Muster lokal übernommen haben, zeichnen sich drei Situationen ab.
- Korrekturlesen eines sensiblen Textes oder Codes
- Ein Vertragsanschreiben, ein Verfahren, eine kritische Funktion: Die Mitglieder erkennen unterschiedliche Probleme, der Vorsitzende fasst sie in einer Liste zusammen. Die Bewertung ist hier weniger wichtig als die Vielfalt der Anmerkungen.
- Begründete technische Entscheidung
- „Soll diese Datenbank migriert werden“, „welches Format für diesen Export“: Abweichende Antworten sind bereits an sich eine Information. Bitten Sie den Vorsitzenden, Meinungsverschiedenheiten sichtbar zu machen, statt sie zu glätten.
- Qualitätskontrolle eines einzelnen Modells
- Verwenden Sie den Rat als Jury, um zwei Prompt-Versionen oder zwei Quantisierungen desselben Modells zu vergleichen, indem Sie ihn Ausgaben bewerten lassen, die Sie an anderer Stelle erzeugt haben. Das ist eine direkte Anwendung von Schritt 2 ohne Schritt 1.
In all diesen Fällen ist der Datenschutz das eigentliche Argument für die lokale Version: Die geprüften Dokumente verlassen die Maschine nicht, während die ursprüngliche Version sie über OpenRouter an vier verschiedene Anbieter sendet. Das macht das Muster für ein Team interessant, das interne Daten verarbeitet, sofern es die Wartezeiten von mehreren Minuten akzeptiert.
#Fehlerbehebung
- Die Bewertung ignoriert eine Antwort
- Der Kontext ist zu kurz und der Anfang des Prompts wurde abgeschnitten. Erhöhen Sie num_ctx (oder das Modelfile) und prüfen Sie in den Protokollen von Ollama, dass keine Warnung wegen einer Kürzung erscheint.
- Die Aufrufe von Schritt 1 sind sehr langsam
- Die Mitglieder werden parallel aufgerufen und konkurrieren um den Speicher. Wechseln Sie zu einer sequenziellen Ausführung oder verkleinern Sie den Rat auf die Modelle, die gemeinsam in den VRAM passen.
- Der Vorsitzende antwortet am Thema vorbei
- Sein Kontext ist in dieser Runde am umfangreichsten. Geben Sie ihm ein größeres Modell oder fassen Sie die Ranglisten zusammen, bevor Sie sie ihm übermitteln.
- Bewertungsformat fehlt
- Kleine Modelle vergessen die Zeile „KLASSEMENT :“. Erinnern Sie am Ende des Prompts an das Format, senken Sie die Temperatur oder akzeptieren Sie eine manuelle Prüfung der Begründungen.
- Leere oder englische Antworten eines Mitglieds
- Überprüfen Sie, dass das Modell nicht nur seine Denkphase zurückgibt, und geben Sie in der Frage die erwartete Sprache an.
- Speicher nach einigen Durchläufen ausgelastet
- OLLAMA_MAX_LOADED_MODELS ist für die Maschine zu hoch. Setzen Sie den Wert auf 1 und lassen Sie Ollama abwechseln.
#Weiterführende Informationen
LLM Council ist ein Muster für Beratung, kein Agenten-Framework: Es verwaltet weder Werkzeuge noch Rollen noch Gedächtnis. Wenn Ihr Bedarf über die Zusammenfassung von Meinungen hinausgeht, behandeln diese Anleitungen der Website die benachbarten Bausteine.
- CrewAI mit Ollama
- Wenn Modelle Rollen untereinander aufteilen und Aufgaben nacheinander abarbeiten müssen, statt dieselbe Antwort zu beurteilen. https://quelllm.fr/guide/crewai-ollama-multi-agents
- LiteLLM als lokales Gateway
- Um mehrere Modellserver hinter einer einzigen OpenAI-kompatiblen API bereitzustellen, etwa einen auf zwei Maschinen verteilten Rat. https://quelllm.fr/guide/litellm-proxy-gateway-local
- Architektur eines lokalen KI-Agenten
- Die Komponenten, die man um ein Modell herum zusammenstellt, wenn man ihm Werkzeuge und ein Gedächtnis geben möchte. https://quelllm.fr/guide/agent-ia-local-architecture
- Einen Ollama-Server im lokalen Netzwerk teilen
- Hosten Sie die Ratsmitglieder auf einer größeren Maschine und rufen Sie sie von Ihrem Arbeitsplatz aus auf. https://quelllm.fr/guide/ollama-serveur-reseau-local-partage
Leitfaden verfasst am 12. Oktober 2026 auf Grundlage des GitHub-Repositorys von Karpathy und der Dokumentation von Ollama. Für diesen Artikel wurden weder Zeit- noch Qualitätsmessungen durchgeführt; die Angaben zum Speicher sind Größenordnungen für Q4_K_M. Die Namen von Konstanten, Ports und Modellen ändern sich: Lesen Sie die unten aufgeführten Quellen erneut, bevor Sie die Befehle kopieren.
- GitHub-Repository karpathy/llm-council (README, backend/config.py, start.sh)
- Dokumentation Ollama (native API /api/chat, OpenAI-Kompatibilität, Umgebungsvariablen)
- Zheng et al., 2023: Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena (Bias von Bewertungsmodellen)
Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.