pub struct HfTokenCounter { /* private fields */ }Available on crate feature
tokenizer-hf only.Expand description
TokenCounter backed by a HuggingFace Tokenizer.
Cloning is cheap — the tokenizer sits behind an Arc so every
clone shares one parsed instance. Construct once at app boot,
share across ChatModelConfig and ingestion pipelines.
Implementations§
Source§impl HfTokenCounter
impl HfTokenCounter
Sourcepub fn from_bytes(
bytes: &[u8],
encoding_name: impl Into<String>,
) -> Result<HfTokenCounter, HfTokenizerError>
pub fn from_bytes( bytes: &[u8], encoding_name: impl Into<String>, ) -> Result<HfTokenCounter, HfTokenizerError>
Construct a counter from a tokenizer.json byte payload.
The supplied encoding_name surfaces on
TokenCounter::encoding_name and the OTel
gen_ai.tokenizer.name attribute — pick a stable identifier
for the model whose tokenizer the bytes encode ("llama-3",
"qwen-2.5", "mistral", …).
The encoding name is leaked once into a &'static str —
see the crate-level docs for the
rationale.
Trait Implementations§
Source§impl Clone for HfTokenCounter
impl Clone for HfTokenCounter
Source§fn clone(&self) -> HfTokenCounter
fn clone(&self) -> HfTokenCounter
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for HfTokenCounter
impl Debug for HfTokenCounter
Source§impl TokenCounter for HfTokenCounter
impl TokenCounter for HfTokenCounter
Source§fn encoding_name(&self) -> &'static str
fn encoding_name(&self) -> &'static str
Vendor-published encoding name (
"cl100k_base",
"o200k_base", "claude", "gemini-tokenizer", …) — surfaced
on OTel gen_ai.tokenizer.name and operator diagnostics.Source§fn count_messages(&self, msgs: &[Message]) -> u64
fn count_messages(&self, msgs: &[Message]) -> u64
Sum the token count across every text-bearing content part
of a message slice. The default impl walks
crate::ir::ContentPart::Text parts; non-text parts (image,
tool-use, tool-result blocks) are vendor-specific in their
token cost — counters that need an exact tally for those
shapes override this method.Auto Trait Implementations§
impl Freeze for HfTokenCounter
impl RefUnwindSafe for HfTokenCounter
impl Send for HfTokenCounter
impl Sync for HfTokenCounter
impl Unpin for HfTokenCounter
impl UnsafeUnpin for HfTokenCounter
impl UnwindSafe for HfTokenCounter
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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>
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 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>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestCreates a shared type from an unshared type.