diff --git a/tokenizers/src/decoders/bpe.rs b/tokenizers/src/decoders/bpe.rs index 813dc70831..3f9cfe16c1 100644 --- a/tokenizers/src/decoders/bpe.rs +++ b/tokenizers/src/decoders/bpe.rs @@ -25,7 +25,7 @@ impl Default for BPEDecoder { impl Decoder for BPEDecoder { fn decode_chain(&self, tokens: Vec) -> Result> { - let n = tokens.len() - 1; + let n = tokens.len().saturating_sub(1); Ok(tokens .into_iter() .enumerate() diff --git a/tokenizers/src/decoders/strip.rs b/tokenizers/src/decoders/strip.rs index 9aeffec647..35aa02acac 100644 --- a/tokenizers/src/decoders/strip.rs +++ b/tokenizers/src/decoders/strip.rs @@ -42,7 +42,7 @@ impl Decoder for Strip { } let mut stop_cut = chars.len(); - for i in 0..self.stop { + for i in 0..self.stop.min(chars.len() - start_cut) { let index = chars.len() - i - 1; if chars[index] == self.content { stop_cut = index;