Skip to main content

Usage

Struct Usage 

Source
pub struct Usage {
    pub input_tokens: u32,
    pub output_tokens: u32,
    pub cache_read_tokens: u32,
    pub cache_write_tokens: u32,
    pub reasoning_tokens: Option<u32>,
    pub total_tokens: u32,
    pub cost: Option<Cost>,
}
Expand description

LLM 请求的 token 用量统计。

字段语义遵循“包含式总量 + 非重叠分解“惯例 (与 OpenAI / Anthropic / AI SDK 对齐):

  • input_tokens — 总输入 token,包含缓存读/写
  • output_tokens — 总输出 token,包含推理 token
  • total_tokens — provider 报告的总量,或 input + output

非重叠分解:

  • cache_read_tokens + cache_write_tokens + 非缓存部分 = input_tokens
  • reasoning_tokensoutput_tokens

部分 provider 不报告细分字段,此时为 0 或由上层推断。

Fields§

§input_tokens: u32

总输入 token(含缓存读/写)

§output_tokens: u32

总输出 token(含推理)

§cache_read_tokens: u32

从缓存读取的输入 token

§cache_write_tokens: u32

写入缓存的输入 token

§reasoning_tokens: Option<u32>

推理/思考 token(output 的子集),None 表示 provider 未报告

§total_tokens: u32

总 token(provider 报告值或 input + output)

§cost: Option<Cost>

费用明细,仅在上层持有定价表时可计算

Implementations§

Source§

impl Usage

Source

pub fn visible_output_tokens(&self) -> u32

可见输出 token = output - reasoning,至少为 0。

Source

pub fn non_cached_input_tokens(&self) -> u32

非缓存输入 token = input - cache_read - cache_write,至少为 0。

Trait Implementations§

Source§

impl Clone for Usage

Source§

fn clone(&self) -> Usage

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Usage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Usage

Source§

fn default() -> Usage

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Usage

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Usage

Source§

fn eq(&self, other: &Usage) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Usage

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Usage

Auto Trait Implementations§

§

impl Freeze for Usage

§

impl RefUnwindSafe for Usage

§

impl Send for Usage

§

impl Sync for Usage

§

impl Unpin for Usage

§

impl UnsafeUnpin for Usage

§

impl UnwindSafe for Usage

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,