Skip to main content

ByteLevelStreamingDecoder

Struct ByteLevelStreamingDecoder 

Source
pub struct ByteLevelStreamingDecoder<'a> { /* private fields */ }
Expand description

A streaming decoder for ByteLevel-encoded tokenizers (GPT-2, Llama, DeepSeek V3).

This decoder handles the ByteLevel encoding used by some tokenizers where raw bytes are mapped to printable Unicode characters. It first decodes the ByteLevel representation back to raw bytes, then assembles them into valid UTF-8 strings.

§Example

use splintr::{from_pretrained, Backend, ByteLevelStreamingDecoder};

let any = from_pretrained("deepseek_v3")?;
let Backend::Bpe(tokenizer) = any.into_backend() else {
    unreachable!("deepseek_v3 loads as a BPE backend");
};
let mut decoder = ByteLevelStreamingDecoder::new(&tokenizer);

for token_id in tokenizer.encode("Hello, world!") {
    if let Some(text) = decoder.add_token(token_id) {
        print!("{}", text);
    }
}
// Flush any remaining buffered bytes
print!("{}", decoder.flush());

Implementations§

Source§

impl<'a> ByteLevelStreamingDecoder<'a>

Source

pub fn new(tokenizer: &'a Tokenizer) -> Self

Create a new ByteLevel streaming decoder for the given tokenizer.

Source

pub fn add_token(&mut self, token_id: u32) -> Option<String>

Add a token and return any complete UTF-8 characters.

The token’s ByteLevel-encoded bytes are first decoded to raw bytes, then assembled into valid UTF-8 strings.

Returns Some(string) if there are complete characters to emit, or None if the current bytes are still incomplete.

Source

pub fn add_tokens(&mut self, token_ids: &[u32]) -> Option<String>

Add multiple tokens at once and return complete UTF-8 characters.

Source

pub fn flush(&mut self) -> String

Flush any remaining buffered bytes.

If there are incomplete UTF-8 sequences in the buffer, they will be replaced with the Unicode replacement character (U+FFFD).

Source

pub fn reset(&mut self)

Reset the decoder state, discarding any buffered bytes.

Source

pub fn has_pending(&self) -> bool

Check if there are buffered bytes waiting for completion.

Source

pub fn pending_bytes(&self) -> usize

Get the number of pending bytes in the buffer.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.