From 77835756a7e9511bb63ac74a5b5c11543f69344c Mon Sep 17 00:00:00 2001 From: ZhouGongZaiShi <993566077@qq.com> Date: Sat, 23 Mar 2024 03:19:11 +0800 Subject: [PATCH] Fix outlines-0.0.35 incompatibility (#291) Co-authored-by: ZX --- python/sglang/srt/constrained/fsm_cache.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) 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)