pub struct Usage {
pub input_tokens: u64,
pub output_tokens: u64,
pub total_tokens: u64,
pub cached_input_tokens: u64,
pub cache_creation_input_tokens: u64,
pub tool_use_prompt_tokens: u64,
pub reasoning_tokens: u64,
}Expand description
Struct representing the token usage for a completion request.
If tokens used are 0, then the provider failed to supply token usage metrics.
Fields§
§input_tokens: u64The number of input (“prompt”) tokens used in a given request.
output_tokens: u64The number of output (“completion”) tokens used in a given request.
total_tokens: u64We store this separately as some providers may only report one number
cached_input_tokens: u64The number of input tokens read from a provider-managed cache
cache_creation_input_tokens: u64The number of input tokens written to a provider-managed cache
tool_use_prompt_tokens: u64The number of tool-use prompt tokens used in a given request.
reasoning_tokens: u64The number of tokens spent on internal reasoning / “thoughts” by reasoning-capable models (e.g. Gemini thinking, Anthropic extended thinking, OpenAI o-series).
Implementations§
Trait Implementations§
Source§impl AddAssign for Usage
impl AddAssign for Usage
Source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+= operation. Read moreimpl Copy for Usage
Source§impl<'de> Deserialize<'de> for Usage
impl<'de> Deserialize<'de> for Usage
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Usage
Source§impl From<&CompletionResponse> for Usage
impl From<&CompletionResponse> for Usage
Source§fn from(response: &CompletionResponse) -> Usage
fn from(response: &CompletionResponse) -> Usage
Source§impl From<&CopilotStreamingResponse> for Usage
impl From<&CopilotStreamingResponse> for Usage
Source§fn from(response: &CopilotStreamingResponse) -> Self
fn from(response: &CopilotStreamingResponse) -> Self
Source§impl From<&Interaction> for Usage
impl From<&Interaction> for Usage
Source§fn from(value: &Interaction) -> Usage
fn from(value: &Interaction) -> Usage
Source§impl From<&InteractionUsage> for Usage
impl From<&InteractionUsage> for Usage
Source§fn from(value: &InteractionUsage) -> Usage
fn from(value: &InteractionUsage) -> Usage
Source§impl From<&PartialUsage> for Usage
impl From<&PartialUsage> for Usage
Source§fn from(value: &PartialUsage) -> Usage
fn from(value: &PartialUsage) -> Usage
Source§impl From<&ResponsesUsage> for Usage
impl From<&ResponsesUsage> for Usage
Source§fn from(usage: &ResponsesUsage) -> Self
fn from(usage: &ResponsesUsage) -> Self
Source§impl From<&StreamingCompletionResponse> for Usage
impl From<&StreamingCompletionResponse> for Usage
Source§fn from(response: &StreamingCompletionResponse) -> Usage
fn from(response: &StreamingCompletionResponse) -> Usage
Source§impl From<&StreamingCompletionResponse> for Usage
impl From<&StreamingCompletionResponse> for Usage
Source§fn from(value: &StreamingCompletionResponse) -> Usage
fn from(value: &StreamingCompletionResponse) -> Usage
Source§impl From<&StreamingCompletionResponse> for Usage
impl From<&StreamingCompletionResponse> for Usage
Source§fn from(value: &StreamingCompletionResponse) -> Usage
fn from(value: &StreamingCompletionResponse) -> Usage
Source§impl From<&StreamingCompletionResponse> for Usage
impl From<&StreamingCompletionResponse> for Usage
Source§fn from(response: &StreamingCompletionResponse) -> Usage
fn from(response: &StreamingCompletionResponse) -> Usage
Source§impl From<&StreamingCompletionResponse> for Usage
impl From<&StreamingCompletionResponse> for Usage
Source§fn from(response: &StreamingCompletionResponse) -> Self
fn from(response: &StreamingCompletionResponse) -> Self
Source§impl From<&Usage> for Usage
tokens is the total-usage counter; billed_units excludes cached input
and system overhead, silently undercounting.
impl From<&Usage> for Usage
tokens is the total-usage counter; billed_units excludes cached input
and system overhead, silently undercounting.
Source§impl From<&UsageMetadata> for Usage
impl From<&UsageMetadata> for Usage
Source§fn from(value: &UsageMetadata) -> Usage
fn from(value: &UsageMetadata) -> Usage
Source§impl From<Interaction> for Usage
impl From<Interaction> for Usage
Source§fn from(value: Interaction) -> Usage
fn from(value: Interaction) -> Usage
Source§impl From<InteractionUsage> for Usage
impl From<InteractionUsage> for Usage
Source§fn from(value: InteractionUsage) -> Usage
fn from(value: InteractionUsage) -> Usage
Source§impl From<PartialUsage> for Usage
impl From<PartialUsage> for Usage
Source§fn from(value: PartialUsage) -> Usage
fn from(value: PartialUsage) -> Usage
Source§impl From<ResponsesUsage> for Usage
impl From<ResponsesUsage> for Usage
Source§fn from(usage: ResponsesUsage) -> Self
fn from(usage: ResponsesUsage) -> Self
Source§impl From<StreamingCompletionResponse> for Usage
impl From<StreamingCompletionResponse> for Usage
Source§fn from(value: StreamingCompletionResponse) -> Usage
fn from(value: StreamingCompletionResponse) -> Usage
Source§impl From<StreamingCompletionResponse> for Usage
impl From<StreamingCompletionResponse> for Usage
Source§fn from(value: StreamingCompletionResponse) -> Usage
fn from(value: StreamingCompletionResponse) -> Usage
Source§impl From<UsageMetadata> for Usage
impl From<UsageMetadata> for Usage
Source§fn from(value: UsageMetadata) -> Usage
fn from(value: UsageMetadata) -> Usage
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> 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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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> 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