pub struct TokenTrackingLLM<L: BaseChatModel> { /* private fields */ }Expand description
LLM wrapper with token statistics
Wraps any BaseChatModel, accumulating prompt / completion token usage automatically,
preferring the real usage returned by the LLM, falling back to tiktoken estimates.
Implementations§
Source§impl<L: BaseChatModel> TokenTrackingLLM<L>
impl<L: BaseChatModel> TokenTrackingLLM<L>
Sourcepub fn new(llm: L, counter: Arc<dyn TokenCounter>) -> Self
pub fn new(llm: L, counter: Arc<dyn TokenCounter>) -> Self
Wraps an LLM with a custom counter.
Sourcepub fn for_openai(llm: L) -> Result<Self, TokenCounterError>
pub fn for_openai(llm: L) -> Result<Self, TokenCounterError>
Wraps with a Tiktoken (cl100k_base) counter
Sourcepub async fn chat(
&self,
messages: Vec<Message>,
config: Option<RunnableConfig>,
) -> Result<LLMResult, L::Error>
pub async fn chat( &self, messages: Vec<Message>, config: Option<RunnableConfig>, ) -> Result<LLMResult, L::Error>
Calls the LLM and counts tokens
Sourcepub async fn get_usage(&self) -> TrackerTokenUsage
pub async fn get_usage(&self) -> TrackerTokenUsage
Returns the cumulative usage
Sourcepub async fn estimate_cost(&self, pricing: &ModelPricing) -> f64
pub async fn estimate_cost(&self, pricing: &ModelPricing) -> f64
Estimates the cost (USD)
Auto Trait Implementations§
impl<L> !RefUnwindSafe for TokenTrackingLLM<L>
impl<L> !UnwindSafe for TokenTrackingLLM<L>
impl<L> Freeze for TokenTrackingLLM<L>where
L: Freeze,
impl<L> Send for TokenTrackingLLM<L>
impl<L> Sync for TokenTrackingLLM<L>
impl<L> Unpin for TokenTrackingLLM<L>where
L: Unpin,
impl<L> UnsafeUnpin for TokenTrackingLLM<L>where
L: UnsafeUnpin,
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