huggingface/transformers · error · ValueError

`sequence_bias` has to be a dict with tuples as keys, but is

Error message

`sequence_bias` has to be a dict with tuples as keys, but is {sequence_bias}.

What it means

Error "`sequence_bias` has to be a dict with tuples as keys, but is {sequence_bias}." thrown in huggingface/transformers.

Source

Thrown at src/transformers/generation/logits_process.py:1360

        for sequence_ids, bias in self.sequence_bias.items():
            if len(sequence_ids) == 1:
                single_token_ids.append(sequence_ids[0])
                single_token_biases.append(bias)

        if single_token_ids:  # Only if we have any single-token sequences
            self.length_1_bias[single_token_ids] = torch.tensor(single_token_biases, device=scores.device)
        self.prepared_bias_variables = True

    def _validate_arguments(self):
        sequence_bias = self.sequence_bias
        if not isinstance(sequence_bias, dict) and not isinstance(sequence_bias, list) or len(sequence_bias) == 0:
            raise ValueError(
                f"`sequence_bias` has to be a non-empty dictionary, or non-empty list of lists but is {sequence_bias}."
            )
        if isinstance(sequence_bias, dict) and any(
            not isinstance(sequence_ids, tuple) for sequence_ids in sequence_bias
        ):
            raise ValueError(f"`sequence_bias` has to be a dict with tuples as keys, but is {sequence_bias}.")
        if isinstance(sequence_bias, dict) and any(
            any((not isinstance(token_id, (int, np.integer)) or token_id < 0) for token_id in sequence_ids)
            or len(sequence_ids) == 0
            for sequence_ids in sequence_bias
        ):
            raise ValueError(
                f"Each key in `sequence_bias` has to be a non-empty tuple of positive integers, but is "
                f"{sequence_bias}."
            )

        def all_token_bias_pairs_are_valid(sequence):
            return (
                isinstance(sequence[0], list)
                and all(isinstance(token_id, (int, np.integer)) and token_id > 0 for token_id in sequence[0])
                and isinstance(sequence[1], float)
            )

        if isinstance(sequence_bias, list) and any(

View on GitHub (pinned to a597f97485)

Solutions

  1. Pass `sequence_bias` as a dict mapping token-id tuples to float biases, e.g. `{(token_id,): -10.0}`.
  2. Convert lists of token ids to tuples before building the dict.

When it happens

Trigger: Raised in SequenceBiasLogitsProcessor.__init__ when sequence_bias is passed as a non-dict type (e.g. a list or string) instead of a dict keyed by token-id tuples.

Common situations: Calling generate() with sequence_bias not shaped as {(token_id, ...): bias_float}; migrating from the older list-of-lists API without updating the argument type.


AI-assisted analysis of huggingface/transformers@a597f97485 (2026-08-14). Data as JSON: /api/errors/3baf6312314414ec. Report an issue: GitHub.