#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
pub struct Usage {
pub input_tokens: u64,
pub output_tokens: u64,
pub cache_creation_input_tokens: u64,
pub cache_read_input_tokens: u64,
}
impl Usage {
pub fn cache_hit(&self) -> bool {
self.cache_read_input_tokens > 0
}
pub fn total_tokens(&self) -> u64 {
self.input_tokens
+ self.output_tokens
+ self.cache_creation_input_tokens
+ self.cache_read_input_tokens
}
pub fn from_bedrock_converse(
input_tokens: u64,
output_tokens: u64,
cache_read_input_tokens: u64,
cache_write_input_tokens: u64,
) -> Self {
Self {
input_tokens,
output_tokens,
cache_creation_input_tokens: cache_write_input_tokens,
cache_read_input_tokens,
}
}
}