gem_rs/api.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
/// This module contains constants and types related to the Gemini API.
///
/// Gem-rs is a Rust library that serves as a wrapper around the Gemini API,
/// providing support for streaming. This library is designed to facilitate
/// interaction with the Gemini API, making it easier to integrate its
/// functionalities into Rust projects.
use serde::{Deserialize, Serialize};
/// Base URL for generating content using the Gemini API.
pub const GENERATE_CONTENT: &str = "https://generativelanguage.googleapis.com/v1beta/models/";
/// Base URL for streaming content generation using the Gemini API.
pub const STREAM_GENERATE_CONTENT: &str =
"https://generativelanguage.googleapis.com/v1beta/models/";
/// Enum representing different Gemini API models.
///
/// This enum includes various versions of Gemini models, including experimental
/// and stable versions. The default model is set to `Gemini15Pro`.
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum Models {
/// Experimental Gemini 1.5 Pro model (version 0827)
#[serde(rename = "gemini-1.5-pro-exp-0827")]
Gemini15ProExp0827,
/// Experimental Gemini 1.5 Flash model (version 0827)
#[serde(rename = "gemini-1.5-flash-exp-0827")]
Gemini15FlashExp0827,
/// Experimental Gemini 1.5 Flash 8B model (version 0827)
#[serde(rename = "gemini-1.5-flash-8b-exp-0827")]
Gemini15Flash8bExp0827,
/// Gemini 1.5 Pro model
#[serde(rename = "gemini-1.5-pro")]
Gemini15Pro,
/// Default Gemini 2 Flash Experimental model
#[default]
#[serde(rename = "gemini-2.0-flash-exp")]
Gemini2FlashExp,
/// Gemini 2 Experimental model
#[serde(rename = "gemini-exp-1206")]
Gemini2Exp1206,
/// Gemini 1.5 Flash model
#[serde(rename = "gemini-1.5-flash")]
Gemini15Flash,
/// Gemini 1.0 Pro model
#[serde(rename = "gemini-1.0-pro")]
Gemini10Pro,
/// Gemma 2 2B IT model
#[serde(rename = "gemma-2-2b-it")]
Gemma2_2bIt,
/// Gemma 2 9B IT model
#[serde(rename = "gemma-2-9b-it")]
Gemma2_9bIt,
/// Gemma 2 27B IT model
#[serde(rename = "gemma-2-27b-it")]
Gemma2_27bIt,
/// Custom model
Custom(String),
}
impl ToString for Models {
fn to_string(&self) -> String {
match self {
Models::Custom(model) => model.to_string().replace("\"", ""),
_ => serde_json::to_string(self).unwrap().replace("\"", ""),
}
}
}