pub mod gemini_2_5_pro {
pub const GEMINI_2_5_PRO: &str = "gemini-2.5-pro";
pub const ALL: &[&str] = &[GEMINI_2_5_PRO];
}
pub mod gemini_2_5_flash {
pub const GEMINI_2_5_FLASH: &str = "gemini-2.5-flash";
pub const GEMINI_2_5_FLASH_PREVIEW_05_20: &str = "gemini-2.5-flash-preview-05-20";
pub const ALL: &[&str] = &[GEMINI_2_5_FLASH, GEMINI_2_5_FLASH_PREVIEW_05_20];
}
pub mod gemini_2_5_flash_lite {
pub const GEMINI_2_5_FLASH_LITE: &str = "gemini-2.5-flash-lite";
pub const GEMINI_2_5_FLASH_LITE_06_17: &str = "gemini-2.5-flash-lite-06-17";
pub const ALL: &[&str] = &[GEMINI_2_5_FLASH_LITE, GEMINI_2_5_FLASH_LITE_06_17];
}
pub mod gemini_2_5_flash_live {
pub const GEMINI_LIVE_2_5_FLASH_PREVIEW: &str = "gemini-live-2.5-flash-preview";
pub const ALL: &[&str] = &[GEMINI_LIVE_2_5_FLASH_PREVIEW];
}
pub mod gemini_2_5_flash_native_audio {
pub const GEMINI_2_5_FLASH_PREVIEW_NATIVE_AUDIO_DIALOG: &str =
"gemini-2.5-flash-preview-native-audio-dialog";
pub const GEMINI_2_5_FLASH_EXP_NATIVE_AUDIO_THINKING_DIALOG: &str =
"gemini-2.5-flash-exp-native-audio-thinking-dialog";
pub const ALL: &[&str] = &[
GEMINI_2_5_FLASH_PREVIEW_NATIVE_AUDIO_DIALOG,
GEMINI_2_5_FLASH_EXP_NATIVE_AUDIO_THINKING_DIALOG,
];
}
pub mod gemini_2_5_tts {
pub const GEMINI_2_5_FLASH_PREVIEW_TTS: &str = "gemini-2.5-flash-preview-tts";
pub const GEMINI_2_5_PRO_PREVIEW_TTS: &str = "gemini-2.5-pro-preview-tts";
pub const ALL: &[&str] = &[GEMINI_2_5_FLASH_PREVIEW_TTS, GEMINI_2_5_PRO_PREVIEW_TTS];
}
pub mod gemini_2_0_flash {
pub const GEMINI_2_0_FLASH: &str = "gemini-2.0-flash";
pub const GEMINI_2_0_FLASH_001: &str = "gemini-2.0-flash-001";
pub const GEMINI_2_0_FLASH_EXP: &str = "gemini-2.0-flash-exp";
pub const ALL: &[&str] = &[GEMINI_2_0_FLASH, GEMINI_2_0_FLASH_001, GEMINI_2_0_FLASH_EXP];
}
pub mod gemini_2_0_flash_image_gen {
pub const GEMINI_2_0_FLASH_PREVIEW_IMAGE_GENERATION: &str =
"gemini-2.0-flash-preview-image-generation";
pub const ALL: &[&str] = &[GEMINI_2_0_FLASH_PREVIEW_IMAGE_GENERATION];
}
pub mod gemini_2_0_flash_lite {
pub const GEMINI_2_0_FLASH_LITE: &str = "gemini-2.0-flash-lite";
pub const GEMINI_2_0_FLASH_LITE_001: &str = "gemini-2.0-flash-lite-001";
pub const ALL: &[&str] = &[GEMINI_2_0_FLASH_LITE, GEMINI_2_0_FLASH_LITE_001];
}
pub mod gemini_2_0_flash_live {
pub const GEMINI_2_0_FLASH_LIVE_001: &str = "gemini-2.0-flash-live-001";
pub const ALL: &[&str] = &[GEMINI_2_0_FLASH_LIVE_001];
}
pub mod gemini_1_5_flash {
pub const GEMINI_1_5_FLASH: &str = "gemini-1.5-flash";
pub const GEMINI_1_5_FLASH_LATEST: &str = "gemini-1.5-flash-latest";
pub const GEMINI_1_5_FLASH_001: &str = "gemini-1.5-flash-001";
pub const GEMINI_1_5_FLASH_002: &str = "gemini-1.5-flash-002";
pub const ALL: &[&str] = &[
GEMINI_1_5_FLASH,
GEMINI_1_5_FLASH_LATEST,
GEMINI_1_5_FLASH_001,
GEMINI_1_5_FLASH_002,
];
}
pub mod gemini_1_5_flash_8b {
pub const GEMINI_1_5_FLASH_8B: &str = "gemini-1.5-flash-8b";
pub const GEMINI_1_5_FLASH_8B_LATEST: &str = "gemini-1.5-flash-8b-latest";
pub const GEMINI_1_5_FLASH_8B_001: &str = "gemini-1.5-flash-8b-001";
pub const ALL: &[&str] = &[
GEMINI_1_5_FLASH_8B,
GEMINI_1_5_FLASH_8B_LATEST,
GEMINI_1_5_FLASH_8B_001,
];
}
pub mod gemini_1_5_pro {
pub const GEMINI_1_5_PRO: &str = "gemini-1.5-pro";
pub const GEMINI_1_5_PRO_LATEST: &str = "gemini-1.5-pro-latest";
pub const GEMINI_1_5_PRO_001: &str = "gemini-1.5-pro-001";
pub const GEMINI_1_5_PRO_002: &str = "gemini-1.5-pro-002";
pub const ALL: &[&str] = &[
GEMINI_1_5_PRO,
GEMINI_1_5_PRO_LATEST,
GEMINI_1_5_PRO_001,
GEMINI_1_5_PRO_002,
];
}
pub mod popular {
use super::*;
pub const FLAGSHIP: &str = gemini_2_5_pro::GEMINI_2_5_PRO;
pub const BALANCED: &str = gemini_2_5_flash::GEMINI_2_5_FLASH;
pub const ECONOMICAL: &str = gemini_2_5_flash_lite::GEMINI_2_5_FLASH_LITE;
pub const REALTIME: &str = gemini_2_5_flash_live::GEMINI_LIVE_2_5_FLASH_PREVIEW;
pub const LATEST: &str = gemini_2_5_pro::GEMINI_2_5_PRO;
}
pub mod capabilities {
pub const THINKING_MODELS: &[&str] = &[
super::gemini_2_5_pro::GEMINI_2_5_PRO,
super::gemini_2_5_flash::GEMINI_2_5_FLASH,
super::gemini_2_5_flash_lite::GEMINI_2_5_FLASH_LITE,
];
pub const IMAGE_GENERATION_MODELS: &[&str] =
&[super::gemini_2_0_flash_image_gen::GEMINI_2_0_FLASH_PREVIEW_IMAGE_GENERATION];
pub const AUDIO_GENERATION_MODELS: &[&str] = &[
super::gemini_2_5_tts::GEMINI_2_5_FLASH_PREVIEW_TTS,
super::gemini_2_5_tts::GEMINI_2_5_PRO_PREVIEW_TTS,
super::gemini_2_5_flash_live::GEMINI_LIVE_2_5_FLASH_PREVIEW,
super::gemini_2_0_flash_live::GEMINI_2_0_FLASH_LIVE_001,
];
pub const LIVE_API_MODELS: &[&str] = &[
super::gemini_2_5_flash_live::GEMINI_LIVE_2_5_FLASH_PREVIEW,
super::gemini_2_0_flash_live::GEMINI_2_0_FLASH_LIVE_001,
];
}
pub fn all_chat_models() -> Vec<&'static str> {
let mut models = Vec::new();
models.extend_from_slice(gemini_2_5_pro::ALL);
models.extend_from_slice(gemini_2_5_flash::ALL);
models.extend_from_slice(gemini_2_5_flash_lite::ALL);
models.extend_from_slice(gemini_2_0_flash::ALL);
models.extend_from_slice(gemini_2_0_flash_lite::ALL);
models.extend_from_slice(gemini_1_5_flash::ALL);
models.extend_from_slice(gemini_1_5_flash_8b::ALL);
models.extend_from_slice(gemini_1_5_pro::ALL);
models
}
pub fn all_thinking_models() -> Vec<&'static str> {
capabilities::THINKING_MODELS.to_vec()
}
pub fn all_image_generation_models() -> Vec<&'static str> {
capabilities::IMAGE_GENERATION_MODELS.to_vec()
}
pub fn all_audio_generation_models() -> Vec<&'static str> {
capabilities::AUDIO_GENERATION_MODELS.to_vec()
}
pub fn all_live_api_models() -> Vec<&'static str> {
capabilities::LIVE_API_MODELS.to_vec()
}