use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TokenUsage {
pub prompt_tokens: u32,
pub completion_tokens: u32,
pub total_tokens: u32,
}
impl TokenUsage {
pub fn combine(&self, other: &TokenUsage) -> TokenUsage {
TokenUsage {
prompt_tokens: self.prompt_tokens + other.prompt_tokens,
completion_tokens: self.completion_tokens + other.completion_tokens,
total_tokens: self.total_tokens + other.total_tokens,
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GenerateResult {
pub generation: String,
pub tokens: Option<TokenUsage>,
}
impl GenerateResult {
pub fn from_text(text: impl Into<String>) -> Self {
Self {
generation: text.into(),
tokens: None,
}
}
}