Fortgeschritten 11 Min.Quantization

Qwen3 GGUF: Tokenizer und Chat korrigieren template

Direkte Antwort

Fehler beim Tokenizer und Chat-Template von Qwen3-GGUFs äußern sich in drei Symptomen: einer Denk-Markierung, die nie geschlossen wird, einer Generierung, die nicht aufhört, oder Antworten, die am Thema vorbeigehen. Die Ursache ist fast immer ein falsch angewendetes Chat-Template. Fügen Sie --jinja hinzu, um das im GGUF eingebettete Template zu verwenden, überprüfen Sie die Herkunft der Datei und übergeben Sie als letzten Ausweg ein benutzerdefiniertes Template.

Wenn ein Qwen3-GGUF „Unsinn“ antwortet, liegt das fast nie an der Qualität des Modells, sondern an der Formatierung des Prompts, bevor dieser das Modell erreicht. Dieser Leitfaden behandelt ausschließlich Tokenizer- und Chat-Template-Fehler bei Qwen3-GGUFs: das Symptom erkennen, die Herkunft der Datei prüfen und das Template korrigieren oder ersetzen.

Von Mohamed Meguedmi·Aktualisierung 2026-09-28·Unter Windows, macOS und Linux getestet

#Die drei Symptome, die Sie erkennen sollten

Drei Anzeichen deuten eher auf ein Problem mit dem Tokenizer oder dem Chat-Template als auf ein Problem mit dem Modell hin: ein Denk-Tag (meist „think“), das in der Antwort geöffnet, aber nie geschlossen wird, eine Generierung, die endlos weiterläuft, statt am logischen Ende der Antwort aufzuhören, oder ein Modell, das am Thema vorbeiredet, als hätte es nicht verstanden, dass ihm eine Frage gestellt wurde. In allen drei Fällen liegt es nicht am Modell selbst: Die Struktur des Textes, den es als Eingabe erhält, ist fehlerhaft.

i
Warum dies speziell bei Qwen3 auftritt
Das Chat-Template von Qwen3 verarbeitet eine komplexere Struktur als die meisten früheren Modelle: den Wechsel zwischen Denkmodus und direktem Modus, Tool-Aufrufe und eine Jinja-Syntax mit Konstrukten (wie Listen-Slicing), die von den frühen Versionen der Template-Engine von llama.cpp nicht alle unterstützt wurden.

#Die grundlegende Ursache: das Chat-Template

Das Lokale-KI-Paket

Ihr privates, kostenloses ChatGPT auf Ihrem Rechner in einer Stunde – mit LM Studio, Ollama, Open WebUI und Ihren Dokumenten, ganz ohne Cloud.

  • Lebenslanger Online-Zugang
  • PDF + Dateien
  • Erstattung binnen 30 Tagen

Ein Sprachmodell erhält Ihre Nachrichten nie direkt: Ein Chat-Template bringt sie in Form (Markierungen für Sprecherwechsel, Systemprompt, Anfangs- und Endmarkierungen), bevor sie in Tokens umgewandelt werden. Wenn dieses Template fehlt, falsch gewählt ist oder von der Inferenz-Engine falsch interpretiert wird, erhält das Modell einen Text, der nicht den Texten ähnelt, mit denen es trainiert wurde, und erzeugt schlechtere Ausgaben, selbst wenn die Modellgewichte und der Tokenizer selbst korrekt sind.

#Die Option --jinja: das Erste, was Sie prüfen sollten

Die offizielle Qwen-Dokumentation empfiehlt ausdrücklich, beim Start eines Qwen3-GGUF mit llama.cpp die Option --jinja hinzuzufügen: Sie weist die Engine an, das in der GGUF-Datei enthaltene Chat-Template zu verwenden. Diese Methode wird gegenüber einem generischen Template empfohlen, das die Engine standardmäßig auswählt.

Von Qwen dokumentierter Referenzbefehl
./llama-cli -hf Qwen/Qwen3-8B-GGUF:Q8_0 --jinja --color -ngl 99 -fa -sm row --temp 0.6 --top-k 20 --top-p 0.95 --min-p 0 -c 40960 -n 32768 --no-context-shift

Wenn Ihr Startbefehl --jinja nicht enthält, ist dies die erste Korrektur, die Sie ausprobieren sollten, bevor Sie andere Ursachen vermuten. Viele Skripte und Oberflächen, die vor der allgemeinen Verbreitung dieser Option entwickelt wurden, lassen sie noch immer weg. Das erklärt einen großen Teil der Berichte über „fehlerhafte Antworten“ bei eigentlich gültigen Qwen3-GGUFs.

#Ein bekannter und behobener Parsing-Fehler

Ein bestimmter Fehler betraf llama.cpp beim Chat-Template von Qwen3: Die Template-Engine konnte eine Jinja-Syntax für Listenslicing (messages[::-1]) nicht parsen. Diese wird in der Logik für Tool-Aufrufe verwendet, um den Gesprächsverlauf rückwärts zu durchlaufen. Die gemeldete Fehlermeldung war ein Parsing-Fehler, der genau auf diese Zeile im Template verwies.

!
Diese Fehlermeldung sollten Sie erkennen
„Expected value expression at row 18, column 30“, gefolgt von einer Zeile mit messages[::-1] im Template: Daran lässt sich dieser Parsing-Fehler eindeutig erkennen. Er wurde durch einen späteren Pull Request im llama.cpp-Repository behoben. Wenn Sie ihm weiterhin begegnen, sollten Sie zuerst die Version Ihrer llama.cpp-Binärdatei überprüfen: Sie stammt wahrscheinlich aus der Zeit vor der Fehlerbehebung.
  1. 01
    Die verwendete Version von llama.cpp ermitteln
    Eine ältere Version enthält möglicherweise noch nicht die Parsing-Korrektur für die im Qwen3-Template verwendete Slicing-Syntax.
  2. 02
    Auf eine aktuelle Version aktualisieren
    Das erneute Kompilieren oder Herunterladen einer aktuellen llama.cpp-Binärdatei löst genau diesen Fall, ohne dass die GGUF-Datei selbst geändert werden muss.
  3. 03
    Wenn die Aktualisierung nicht möglich ist
    Ein vereinfachtes, benutzerdefiniertes Template über --chat-template-file übergeben und dabei die problematische Jinja-Konstruktion vermeiden.

#llama-server und llama-cli verhalten sich unterschiedlich

Ein im llama.cpp-Repository gemeldetes Verhalten: Wird --jinja mit llama-server aktiviert, kann der Denkblock (der Inhalt zwischen den Denk-Tags) aus der Antwort verschwinden, während derselbe Block bei llama-cli mit derselben Option und demselben Modell sichtbar bleibt. Wenn Ihre Integration darauf angewiesen ist, dass der Denkinhalt in der Ausgabe enthalten ist (für Observability oder Debugging), liegt kein Tokenizer-Problem vor, sondern ein Unterschied in der Verarbeitung zwischen den beiden ausführbaren Programmen – vor weiteren Nachforschungen prüfen, welches der beiden Sie verwenden.

Diese Unterscheidung hat eine praktische Konsequenz für alle, die eine Integration auf Basis von llama.cpp statt einer einfachen interaktiven Sitzung entwickeln: Eine Testpipeline, die das Ausgabeformat mit llama-cli validiert und anschließend in der Produktion hinter llama-server eingesetzt wird, kann genau an diesem Punkt eine unbemerkte Regression aufweisen, ohne dass sich irgendein Parameter auf Anwendungsseite geändert hat. Explizit zu dokumentieren, welche Binärdatei in der Produktion eingesetzt wird, und genau mit dieser Binärdatei statt mit der bei der lokalen Entwicklung verwendeten zu testen, vermeidet diese Falle.

#Das Deaktivieren des Denkmodus erzwingen

Qwen3 bietet im Chat-Template einen Mechanismus zum Umschalten zwischen Denkmodus und direktem Modus. Die offizielle Qwen-Dokumentation weist jedoch darauf hin, dass dieser Mechanismus zur erzwungenen Deaktivierung (hard switch) in llama.cpp nicht nativ zugänglich ist: Wird enable_thinking über die Kommandozeilenoptionen auf false gesetzt, kann dies je nach Version ignoriert werden, wie mehrere aktuelle Meldungen zu Qwen3.5-Varianten zeigen.

Die von Qwen dokumentierte Umgehungslösung besteht darin, über --chat-template-file eine benutzerdefinierte Vorlage bereitzustellen, in der enable_thinking ausdrücklich in der Vorlage selbst auf false gesetzt wird, statt es bei der Anfrage als Parameter zu übergeben. Das ist zuverlässiger als ein Laufzeitparameter, dessen Unterstützung von Ihrer konkreten llama.cpp-Version abhängt.

Ein Punkt muss klargestellt werden, um falsche Verallgemeinerungen zu vermeiden: Die Fehlermeldung #20182 („enable_thinking param cannot turn off thinking“) betrifft ausdrücklich Qwen3.5-9B in Build 8215, ist im llama.cpp-Repository weiterhin mit „bug-unconfirmed“ gekennzeichnet und wurde ohne Lösung geschlossen („not planned“). Nichts belegt, dass dasselbe Verhalten auch ein GGUF-Modell des ursprünglichen Qwen3 (im Gegensatz zu Qwen3.5) betrifft: Wenn Sie dieses Symptom bei einem klassischen Qwen3 feststellen, behandeln Sie es als einen Fall, der gesondert eingegrenzt und gemeldet werden muss, statt ihn automatisch als Bestätigung dieses Tickets zu betrachten.

#Die Herkunft eines externen GGUF-Modells prüfen

Ein Teil der Tokenizer-Probleme bei Qwen3-GGUF-Dateien liegt nicht an llama.cpp, sondern an der GGUF-Datei selbst: Eine Konvertierung mit einer alten Version der Konvertierungswerkzeuge oder eine Datei mit einem fehlerhaft exportierten Tokenizer verursacht ähnliche Symptome (die Generierung endet nicht, spezielle Tokens werden nicht richtig erkannt). Bevor Sie nach einem Fehler in der Inferenz-Engine suchen, können Sie diese mögliche Ursache ausschließen, indem Sie die Größe und das Veröffentlichungsdatum Ihrer GGUF-Datei mit den Angaben in einem anerkannten Repository vergleichen (dem offiziellen Qwen-Repository oder einem Repository mit dokumentierten Neuquantisierungen).

Ein einfacher Anhaltspunkt, um schnell zwischen einem Dateiproblem und einem Konfigurationsproblem zu unterscheiden: Wenn dieselbe GGUF-Datei auf einem anderen Rechner oder mit einer anderen Version von llama.cpp korrekt funktioniert, liegt es wahrscheinlich nicht an der Datei selbst. Wenn dagegen mehrere erneute Downloads aus demselben Repository auf demselben Rechner jedes Mal dasselbe Symptom hervorrufen, liegt die Ursache am wahrscheinlichsten in der lokalen Konfiguration (Version der Binärdatei, Startoptionen) statt in der Datei.

→
Hilfreiche Gewohnheit
Wenn eine kürzlich heruntergeladene GGUF-Datei Tokenizer-Fehler aufweist, die bei einer älteren GGUF-Datei desselben Modells nicht auftraten, die Datei erneut von ihrer ursprünglichen Quelle herunterladen, bevor ein Fehler in llama.cpp vermutet wird: Ein beschädigter Download oder eine nicht korrekt abgeschlossene Konvertierung sind häufige Ursachen, die sich leicht ausschließen lassen.

#Zu niedrige Quantisierung: fehlerhaft formatierte Tool-Aufrufe

Ein letztes Symptom, das sich von den ersten drei unterscheidet, betrifft speziell den Einsatz von Qwen3 als Agent mit Tool-Aufrufen: Statt eines Problems bei der Textformatierung kommt der Tool-Aufruf selbst abgeschnitten an, mit leeren oder falsch strukturierten Argumenten (ungültiges JSON). Ein von der Community erstellter Leitfaden zur Fehlerbehebung bei llama.cpp dokumentiert, dass die Struktur der Tool-Aufrufe vom Quantisierungsniveau abhängt: Quantisierungen unter 4 Bit (Q3, Q2, IQ) erzeugen fehlerhaft strukturierte Tool-Aufrufe, selbst wenn das Chat-Template korrekt mit --jinja angewendet wird.

!
Vorher prüfen, bevor das Template als Ursache angesehen wird
Wenn Ihre Tool-Aufrufe mit einem GGUF in Q5_K_M oder Q6_K korrekt funktionieren, beim selben Modell in Q3 oder Q2 jedoch fehlschlagen, liegt die Ursache nicht im Chat-Template, sondern in der Quantisierung selbst: Die geringere Präzision der Gewichte beeinträchtigt die Erzeugung streng strukturierter Ausgaben (JSON, Tags) stärker als die allgemeine Textqualität. Die dokumentierte Lösung besteht darin, eine Quantisierung mit höherer Präzision zu verwenden, statt das Template zu ändern.

Dieser Punkt wird leicht übersehen, weil er auf den ersten Blick wie ein klassisches Tokenizer-Problem wirkt: Eine abgeschnittene Antwort lässt sofort an ein nicht korrekt abgeschlossenes Chat-Template denken. Der praktische Unterschied liegt darin, unter welchen Umständen das Symptom auftritt: Ein Template-Problem betrifft alle Antworten, auch einfachen Text ohne Tool-Aufruf, während ein Quantisierungsproblem bei Tool-Aufrufen Antworten in freiem Text in der Regel unbeeinträchtigt lässt und sich nur bei der strikten JSON-Struktur zeigt, die das Tool-Aufruf-Protokoll erwartet.

#Tabelle zur schnellen Fehlerbehebung

Beobachtetes Symptom, wahrscheinlichste Ursache, zuerst auszuprobierende Korrektur
SymptomWahrscheinlichste UrsacheZuerst auszuprobierende Korrektur
„think“-Tag wird nie geschlossenChat-Template nicht angewendet--jinja beim Start hinzufügen
Generierung, die nie endetFalsch interpretiertes oder fehlendes Template--jinja prüfen, andernfalls llama.cpp aktualisieren
Fehler „Expected value expression“ beim StartParsing-Fehler beim Jinja-Slicing (in PR #13573 behoben)Auf eine aktuelle Version von llama.cpp aktualisieren
Reflexionsblock fehlt bei llama-server, aber sichtbar bei llama-cliDokumentierter Unterschied in der Verarbeitung zwischen den beiden BinärdateienMit llama-cli testen, um dies zu bestätigen, und anschließend Ticket #14894 verfolgen
enable_thinking=false ignoriertHard Switch in llama.cpp nicht nativ zugänglichenable_thinking=false in einer Vorlage über --chat-template-file setzen
Abgeschnittene Tool-Aufrufe oder ungültiges JSONQuantisierung mit zu geringer Präzision (Q3, Q2, IQ)Mindestens auf Q4_K_M erhöhen, idealerweise auf Q5_K_M oder Q6_K
Neuere GGUF-Datei fehlerhafter als eine ältere desselben ModellsFehlerhaft konvertierte Datei oder beschädigter DownloadErneut von der ursprünglichen Quelle herunterladen (offizielle Qwen-Quelle oder anerkanntes Repository)
Häufig gestellte Fragen
Warum schließt mein Qwen3-GGUF das „think“-Tag nie?+
Das ist der häufigste Symptom eines falsch angewendeten Chat-Templates. Überprüfen Sie zunächst, ob Ihr Befehl --jinja enthält, um das im GGUF integrierte Template anstelle eines standardmäßigen, generischen Templates zu verwenden, das in vielen vorherigen Scripts und Interfaces fehlt.
Behebt die Option --jinja alle Template-Probleme bei Qwen3?+
Sie löst die meisten Fälle, aber nicht alle: Ein Parsing-Fehler bei der Syntax für das Slicing von Listen betraf bestimmte Versionen von llama.cpp (inzwischen behoben), das Verhalten bei der Anzeige des Reflexionsblocks unterscheidet sich manchmal zwischen llama-server und llama-cli, und eine Quantisierung mit zu geringer Präzision kann trotz eines korrekten Templates dazu führen, dass Tool-Aufrufe nicht mehr funktionieren.
Wie deaktiviert man den Reflexionsmodus von Qwen3 mit llama.cpp endgültig?+
Der über die Kommandozeile übergebene Parameter enable_thinking kann je nach Version ignoriert werden. Die von Qwen dokumentierte Methode besteht darin, über --chat-template-file ein benutzerdefiniertes Template bereitzustellen, in dem enable_thinking direkt auf false gesetzt wird, statt diesen Wert als Anfrageparameter zu übermitteln, dessen Unterstützung von Ihrem konkreten Build abhängt.
Eine kürzlich heruntergeladene Qwen3-GGUF-Datei verhält sich anders als eine ältere: Warum?+
Prüfen Sie zunächst die Herkunft und Integrität der Datei (erneuter Download von der offiziellen Qwen-Quelle oder aus einem anerkannten Repository), bevor Sie einen Fehler in llama.cpp vermuten: Eine nicht korrekt abgeschlossene GGUF-Konvertierung oder ein beschädigter Download können Tokenizer-Probleme verursachen, die einem Template-Fehler sehr ähnlich sind, sich aber durch erneutes Herunterladen der Datei beheben lassen.
Warum werden meine Qwen3-Toolaufrufe auch mit --jinja abgeschnitten?+
Ein von der Community erstellter Leitfaden zur Fehlerbehebung dokumentiert, dass die Struktur der Tool-Aufrufe empfindlich auf die Quantisierung reagiert: Quantisierungen unter 4 Bit (Q3, Q2, IQ) erzeugen selbst mit dem richtigen Template fehlerhaft formatiertes JSON. Der Wechsel zu Q4_K_M oder einer höheren Quantisierung (Q5_K_M, Q6_K) ist die erste Korrektur, die Sie testen sollten.
Betrifft der Fehler, bei dem enable_thinking ignoriert wird, auch Qwen3 und nicht nur Qwen3.5?+
Die am besten dokumentierten Meldungen (Issues #20182, #20409) betreffen ausdrücklich Qwen3.5-Varianten und behalten den Status „bug-unconfirmed“; sie wurden ohne Lösung geschlossen. Nichts bestätigt dasselbe Verhalten bei einer GGUF-Datei des ursprünglichen Qwen3: im Einzelfall prüfen, statt identisches Verhalten anzunehmen.
Hat Ihnen dieser Guide geholfen?

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.