diff --git a/python/sglang/srt/constrained/fsm_cache.py b/python/sglang/srt/constrained/fsm_cache.py index 730ffbf02..1d8fbfc67 100644 --- a/python/sglang/srt/constrained/fsm_cache.py +++ b/python/sglang/srt/constrained/fsm_cache.py @@ -5,9 +5,20 @@ from sglang.srt.constrained.base_cache import BaseCache class FSMCache(BaseCache): def __init__(self, tokenizer_path, tokenizer_args_dict, enable=True): super().__init__(enable=enable) - self.outlines_tokenizer = TransformerTokenizer( - tokenizer_path, **tokenizer_args_dict - ) + + from importlib.metadata import version + if version("outlines") >= "0.0.35": + from transformers import AutoTokenizer + + tokenizer_args_dict.setdefault("padding_side", "left") + tokenizer = AutoTokenizer.from_pretrained( + tokenizer_path, **tokenizer_args_dict + ) + self.outlines_tokenizer = TransformerTokenizer(tokenizer) + else: + self.outlines_tokenizer = TransformerTokenizer( + tokenizer_path, **tokenizer_args_dict + ) def init_value(self, regex): return RegexFSM(regex, self.outlines_tokenizer)