{"record":{"id":"6849dbf90fbcfba0","repo":"sgl-project/sglang","slug":"invalid-grammar-backend-name","errorCode":null,"errorMessage":"Invalid grammar backend: {name}","messagePattern":"Invalid grammar backend: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/constrained/base_grammar_backend.py","lineNumber":425,"sourceCode":"\n        grammar_backend = GuidanceBackend(\n            tokenizer=tokenizer,\n            any_whitespace=not get_serving().constrained_json_disable_any_whitespace,\n            whitespace_pattern=get_serving().constrained_json_whitespace_pattern,\n            n_vocab=vocab_size,\n            eos_token_ids=eos_token_ids,\n        )\n    elif name == \"none\":\n        if get_serving().enable_strict_thinking:\n            raise ValueError(\n                \"--enable-strict-thinking requires a grammar backend that supports \"\n                \"token filtering, but grammar_backend='none' was specified. Use \"\n                \"--grammar-backend xgrammar or another backend that supports token \"\n                \"filtering.\"\n            )\n        return None\n    else:\n        raise ValueError(f\"Invalid grammar backend: {name}\")\n\n    if get_serving().reasoning_parser and think_end_ids:\n        from sglang.srt.constrained.reasoner_grammar_backend import (\n            ReasonerGrammarBackend,\n        )\n\n        reasoning_parser = ReasoningParser(\n            model_type=get_serving().reasoning_parser,\n            stream_reasoning=False,\n            tokenizer=tokenizer,\n        )\n\n        grammar_backend = ReasonerGrammarBackend(\n            grammar_backend,\n            reasoning_parser,\n            tokenizer,\n            enable_strict_thinking=get_serving().enable_strict_thinking,\n        )","sourceCodeStart":407,"sourceCodeEnd":443,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/constrained/base_grammar_backend.py#L407-L443","documentation":"create_grammar_backend dispatches on the --grammar-backend name (e.g. 'xgrammar', 'llguidance', 'none'); any unrecognized name raises ValueError('Invalid grammar backend: {name}').","triggerScenarios":"Passing a misspelled or outdated backend name such as 'outlines', 'guidance', 'xgramar', or a backend removed in this version via --grammar-backend.","commonSituations":"Upgrading SGLang where a backend (e.g. outlines) was removed; typos in launch scripts; names from older documentation.","solutions":["Check the valid choices in base_grammar_backend.create_grammar_backend (currently 'xgrammar', 'llguidance', 'none') and correct the flag","Omit --grammar-backend to use the default (xgrammar)","If you passed a custom backend object, verify you are using the code path that accepts callable backends, not the string CLI path"],"exampleFix":"# before\n--grammar-backend outlines\n# after\n--grammar-backend xgrammar","handlingStrategy":"validation","validationCode":"VALID_BACKENDS = {'xgrammar', 'llguidance', 'none'}\nassert server_args.grammar_backend in VALID_BACKENDS","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use argparse choices= for --grammar-backend","Fail fast on unknown enum-like flags in config validation"],"tags":["grammar","configuration","startup"],"backgroundTag":"invalid-enum-value","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}