{"record":{"id":"2490320c2502e6dc","repo":"oobabooga/textgen","slug":"mirostat-has-to-be-a-an-integer-2-but-is-miros","errorCode":null,"errorMessage":"`mirostat` has to be a an integer 2, but is {mirostat_mode}","messagePattern":"`mirostat` has to be a an integer 2, but is (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"modules/sampler_hijack.py","lineNumber":427,"sourceCode":"\n                if next_token in match_lengths:\n                    match_lengths[next_token] = max(match_length, match_lengths[next_token])\n                else:\n                    match_lengths[next_token] = match_length\n\n            # Apply penalties.\n            for token, match_length in match_lengths.items():\n                if match_length >= self.allowed_length:\n                    penalty = self.multiplier * self.base ** (match_length - self.allowed_length)\n                    scores_row[token] -= penalty\n\n        return scores\n\n\nclass MirostatLogitsWarper(LogitsProcessor):\n    def __init__(self, mirostat_mode: int, mirostat_tau: float, mirostat_eta: float, filter_value: float = -float(\"Inf\"), min_tokens_to_keep: int = 1):\n        if mirostat_mode not in [2]:\n            raise ValueError(f\"`mirostat` has to be a an integer 2, but is {mirostat_mode}\")\n\n        self.mirostat_mode = mirostat_mode\n        self.mirostat_eta = mirostat_eta\n        self.mirostat_tau = mirostat_tau\n        self.filter_value = filter_value\n        self.min_tokens_to_keep = min_tokens_to_keep\n        self.mu = 2 * self.mirostat_tau\n        self.e = 0\n\n    def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor) -> torch.FloatTensor:\n        logits = scores[0]\n        sorted_logits, sorted_indices = torch.sort(logits, descending=True)\n        prob_original = torch.softmax(sorted_logits, dim=-1).tolist()  # candidates\n\n        # Truncate the words with surprise values greater than mu\n        for i, candidate in enumerate(prob_original):\n            if candidate > 0 and -math.log2(candidate) > self.mu:\n                if (i == 0):","sourceCodeStart":409,"sourceCodeEnd":445,"githubUrl":"https://github.com/oobabooga/textgen/blob/ed888c71f221df552750e1834b3654abab8ae345/modules/sampler_hijack.py#L409-L445","documentation":"Error \"`mirostat` has to be a an integer 2, but is {mirostat_mode}\" thrown in oobabooga/textgen.","triggerScenarios":"Raised during sampler validation when `mirostat` mode is not the integer 2. This build only supports mirostat mode 2; triggers when mirostat is set to 1, or a non-integer value is supplied.","commonSituations":"See trigger scenarios.","solutions":["Set mirostat mode to 0 (disabled), 1 (Mirostat 1.0), or 2 (Mirostat 2.0)."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"ed888c71f221df552750e1834b3654abab8ae345","analyzedAt":"2026-08-15T05:24:21.000Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}