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: Usage)
fn add_assign(&mut self, other: Usage)
+= 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<Usage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Usage, <__D as Deserializer<'de>>::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) -> Usage
fn from(response: &CopilotStreamingResponse) -> 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) -> Usage
fn from(usage: &ResponsesUsage) -> 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(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) -> Usage
fn from(response: &StreamingCompletionResponse) -> Usage
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) -> Usage
fn from(usage: ResponsesUsage) -> 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<UsageMetadata> for Usage
impl From<UsageMetadata> for Usage
Source§fn from(value: UsageMetadata) -> Usage
fn from(value: UsageMetadata) -> Usage
Source§impl Serialize for Usage
impl Serialize for Usage
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
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> CloneDebuggableStorage for Twhere
T: DebuggableStorage + Clone,
impl<T> CloneDebuggableStorage for Twhere
T: DebuggableStorage + Clone,
fn clone_storage(&self) -> Box<dyn CloneDebuggableStorage>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> CloneableStorage for T
impl<T> CloneableStorage for T
fn clone_storage(&self) -> Box<dyn CloneableStorage>
impl<T> DebuggableStorage for T
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§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.