Skip to main content

inference_runtime_gemini/
cost.rs

1use std::collections::HashMap;
2
3use once_cell::sync::Lazy;
4
5#[derive(Debug, Clone, Copy)]
6pub struct ModelPrice {
7    pub input_per_mtok_usd: f64,
8    pub output_per_mtok_usd: f64,
9}
10
11pub struct GeminiPricing {
12    table: HashMap<&'static str, ModelPrice>,
13}
14
15impl GeminiPricing {
16    pub fn published() -> &'static Self {
17        &PRICING
18    }
19    pub fn get(&self, model: &str) -> Option<ModelPrice> {
20        self.table.get(model).copied()
21    }
22}
23
24static PRICING: Lazy<GeminiPricing> = Lazy::new(|| {
25    let mut t = HashMap::new();
26    t.insert(
27        "gemini-2.0-pro",
28        ModelPrice {
29            input_per_mtok_usd: 1.25,
30            output_per_mtok_usd: 5.0,
31        },
32    );
33    t.insert(
34        "gemini-1.5-pro",
35        ModelPrice {
36            input_per_mtok_usd: 1.25,
37            output_per_mtok_usd: 5.0,
38        },
39    );
40    t.insert(
41        "gemini-1.5-flash",
42        ModelPrice {
43            input_per_mtok_usd: 0.075,
44            output_per_mtok_usd: 0.30,
45        },
46    );
47    t.insert(
48        "gemini-2.0-flash",
49        ModelPrice {
50            input_per_mtok_usd: 0.075,
51            output_per_mtok_usd: 0.30,
52        },
53    );
54    GeminiPricing { table: t }
55});