pub struct TokenTrackingLLM<L: BaseChatModel> { /* private fields */ }Expand description
带 Token 统计的 LLM 包装器
包装任意 BaseChatModel,自动累计 prompt / completion token 用量,
优先使用 LLM 返回的真实 usage,无则用 tiktoken 估算。
Implementations§
Source§impl<L: BaseChatModel> TokenTrackingLLM<L>
impl<L: BaseChatModel> TokenTrackingLLM<L>
pub fn new(llm: L, counter: Arc<dyn TokenCounter>) -> Self
Sourcepub fn for_openai(llm: L) -> Result<Self, String>
pub fn for_openai(llm: L) -> Result<Self, String>
用 Tiktoken(cl100k_base)计数器包装
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>
调用 LLM 并统计 token
Sourcepub async fn get_usage(&self) -> TrackerTokenUsage
pub async fn get_usage(&self) -> TrackerTokenUsage
获取累计用量
Sourcepub async fn estimate_cost(&self, pricing: &ModelPricing) -> f64
pub async fn estimate_cost(&self, pricing: &ModelPricing) -> f64
估算成本(美元)
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