pub struct DecodeStream { /* private fields */ }Expand description
DecodeStream will keep the state necessary to produce individual chunks of strings given an input stream of token_ids.
This is necessary because decoding in general cannot achieve that since strings depend on surrounding ids to provide a valid string. Typically stripping extra spaces.
Implementations§
Source§impl DecodeStream
impl DecodeStream
pub fn new( tokenizer: Arc<dyn Tokenizer>, prompt_token_ids: &[TokenIdType], skip_special_tokens: bool, ) -> Self
Sourcepub fn step(&mut self, id: u32) -> Result<Option<String>>
pub fn step(&mut self, id: u32) -> Result<Option<String>>
Step appends a token_id to the internal state and tries to produce a text chunk.
Implementation directly copied from Huggingface’s TGI: https://github.com/huggingface/text-generation-inference/blob/24c2bff65924801ddf90fa24fcc72752d4f45538/server/text_generation_server/models/model.py#L144
Returning None means the given id is not enough to produce a chunk.
This typically happens with byte_fallback options where some tokens do not
represent valid UTF-8, and only follow-up token_ids will help produce
a valid chunk.
Auto Trait Implementations§
impl Freeze for DecodeStream
impl !RefUnwindSafe for DecodeStream
impl Send for DecodeStream
impl Sync for DecodeStream
impl Unpin for DecodeStream
impl UnsafeUnpin for DecodeStream
impl !UnwindSafe for DecodeStream
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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