From 924743af083c151296cc16f925aeab113b6484e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Sepp=C3=A4nen?= <40791699+kijai@users.noreply.github.com> Date: Sun, 23 Aug 2026 01:03:29 +0300 Subject: [PATCH] Minimax-H3: Add missing special tokens (#15808) --- comfy/text_encoders/minimax.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/comfy/text_encoders/minimax.py b/comfy/text_encoders/minimax.py index d79ccf0ea..b248e70c7 100644 --- a/comfy/text_encoders/minimax.py +++ b/comfy/text_encoders/minimax.py @@ -28,6 +28,10 @@ from .qwen3vl import Qwen3VL, Qwen3VLSDTokenizer VISION_START = 151652 VISION_END = 151653 +# FL2VA/Ref2VA tokenizer_config extends Qwen with these, ids fixed by the released tokenizer +MINIMAX_EXTRA_TOKENS = {"": 151669, "": 151670, "<|cutoff|>": 151671, + "<|lyrics_start|>": 151672, "<|lyrics_end|>": 151673, + "<|caption_start|>": 151674, "<|caption_end|>": 151675} QWEN_IMAGE_MEAN = [0.5, 0.5, 0.5] QWEN_IMAGE_STD = [0.5, 0.5, 0.5] @@ -122,9 +126,16 @@ class MiniMaxH3TEModel(comfy.sd1_clip.SD1ClipModel): clip_model=MiniMaxH3ClipModel, model_options=model_options) +class MiniMaxQwenSDTokenizer(Qwen3VLSDTokenizer): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.tokenizer.add_special_tokens({"additional_special_tokens": list(MINIMAX_EXTRA_TOKENS)}) + self.inv_vocab = {v: k for k, v in self.tokenizer.get_vocab().items()} + + class MiniMaxH3Tokenizer(comfy.sd1_clip.SD1Tokenizer): def __init__(self, embedding_directory=None, tokenizer_data={}): - tokenizer = lambda *a, **kw: Qwen3VLSDTokenizer(*a, **kw, embedding_size=5120, embedding_key="qwen3vl_32b") + tokenizer = lambda *a, **kw: MiniMaxQwenSDTokenizer(*a, **kw, embedding_size=5120, embedding_key="qwen3vl_32b") super().__init__(embedding_directory=embedding_directory, tokenizer_data=tokenizer_data, name="qwen3vl_32b", tokenizer=tokenizer) @staticmethod