litellm-rs 0.8.2

A high-performance AI Gateway written in Rust, providing OpenAI-compatible APIs with intelligent routing, load balancing, and enterprise features
Documentation
pub const GEMINI_10_PRO_CONTEXT_WINDOW: u32 = 32_000;
pub const GEMINI_15_FLASH_CONTEXT_WINDOW: u32 = 1_048_576;
pub const GEMINI_15_PRO_CONTEXT_WINDOW: u32 = 2_097_152;
pub const GEMINI_20_FLASH_CONTEXT_WINDOW: u32 = 1_000_000;
pub const GEMINI_20_FLASH_THINKING_CONTEXT_WINDOW: u32 = 32_000;
pub const GEMINI_25_CONTEXT_WINDOW: u32 = 1_048_576;
pub const GEMINI_30_CONTEXT_WINDOW: u32 = 1_000_000;
pub const GEMINI_30_IMAGE_CONTEXT_WINDOW: u32 = 65_536;
pub const GEMINI_31_CONTEXT_WINDOW: u32 = 1_048_576;

pub fn gemini_context_window(model_name: &str) -> Option<u32> {
    let model_lower = model_name.to_ascii_lowercase();
    let is_exact_current_flash = matches!(model_name, "gemini-3.7-flash" | "gemini-3.8-flash")
        || model_name.split_once('/').is_some_and(|(provider, model)| {
            matches!(model, "gemini-3.7-flash" | "gemini-3.8-flash")
                && ["gemini", "google", "vertex_ai"]
                    .iter()
                    .any(|approved| provider.eq_ignore_ascii_case(approved))
        });

    if is_exact_current_flash
        || model_lower.contains("gemini-3.6-flash")
        || model_lower.contains("gemini-3.5-flash-lite")
        || model_lower.contains("gemini-3.5-flash")
        || model_lower.contains("gemini-3.1-flash-lite")
        || model_lower.contains("gemini-3.1-flash")
        || model_lower.contains("gemini-3.1-pro")
    {
        Some(GEMINI_31_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-3") && model_lower.contains("deep-think") {
        Some(GEMINI_30_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-3") && model_lower.contains("image") {
        Some(GEMINI_30_IMAGE_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-3-flash") || model_lower.contains("gemini-3.0-flash") {
        Some(GEMINI_31_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-3-pro") || model_lower.contains("gemini-3.0-pro") {
        Some(GEMINI_30_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-2.5-flash-lite")
        || model_lower.contains("gemini-2.5-flash")
        || model_lower.contains("gemini-2.5-pro")
    {
        Some(GEMINI_25_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-2.0-flash-thinking") {
        Some(GEMINI_20_FLASH_THINKING_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-2.0-flash") || model_lower.contains("gemini-2-flash") {
        Some(GEMINI_20_FLASH_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-1.5-pro") || model_lower.contains("gemini-15-pro") {
        Some(GEMINI_15_PRO_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-1.5-flash-8b")
        || model_lower.contains("gemini-1.5-flash")
        || model_lower.contains("gemini-15-flash")
    {
        Some(GEMINI_15_FLASH_CONTEXT_WINDOW)
    } else if model_lower.contains("gemini-1.0-pro")
        || model_lower.contains("gemini-pro")
        || model_lower.contains("gemini-1.0-pro-vision")
    {
        Some(GEMINI_10_PRO_CONTEXT_WINDOW)
    } else {
        None
    }
}