inference_runtime_gemini/
cost.rs1use 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});