--- title: Does this model need a reasoning parser? emoji: 🧩 colorFrom: indigo colorTo: gray sdk: static app_file: index.html pinned: false license: apache-2.0 short_description: Decide --reasoning-parser from a model's own chat template --- # Reasoning-parser advisor A model that thinks needs vLLM's `--reasoning-parser` to split that thinking out of the answer, and the two ways of getting it wrong are not symmetric. A **missing** parser is visible: the user sees the model's reasoning in the reply. A **wrong** one is not — it claims the entire output, the request finishes with `stop`, and `content` comes back **empty**. Nothing errors, and nothing in the logs says so. The family name cannot decide it. `Qwen3.6-35B-A3B` emits `` and needs the `qwen3` parser; `Qwen3-VL-30B` emits nothing of the sort and is broken by it. A quantized pack inherits its source's template, so the same split runs through every repack. Everything runs **in the visitor's browser**. There is no backend and nothing is uploaded: the page fetches the repo's chat template — a few kilobytes — and asks whether the assistant's turn carries a marker some parser closes on. ## How the rules are kept honest Markers are read out of vLLM's own `vllm/reasoning/` modules rather than from documentation, because a parser matches what its code matches. Only markers that *discriminate a reasoning section* are listed: an earlier version of the table included `<|end|>`, gpt-oss's turn terminator, and recommended a parser for a model that does no thinking at all. The rules exist twice — once in Python for development, once in JavaScript for this page — and a parity gate runs the same fixtures through both and refuses to deploy on any disagreement. Built from the tooling behind the [aleada](https://huggingface.co/aleada) W4A16 packs. See also the [pack integrity checker](https://huggingface.co/spaces/aleada/pack-integrity-check).