use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ContextPricingTier {
pub label: String,
pub input_cost_per_million: f64,
pub output_cost_per_million: f64,
pub upper_bound: Option<u64>, }
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ModelContextInfo {
pub max_tokens: u64,
pub pricing_tiers: Vec<ContextPricingTier>,
pub approach_warning_threshold: f64, }
impl Default for ModelContextInfo {
fn default() -> Self {
Self {
max_tokens: 128_000,
pricing_tiers: vec![],
approach_warning_threshold: 0.8,
}
}
}
pub trait ContextAware {
fn context_info(&self) -> ModelContextInfo;
fn model_name(&self) -> String;
}