Skip to main content

chat_gemini/
client.rs

1use chat_core::transport::Transport;
2use chat_core::types::provider_meta::ProviderMeta;
3
4use crate::{
5    api::types::request::{GeminiEmbeddingsConfig, GeminiFunctionCallingConfig},
6    tools::GeminiNativeTool,
7};
8
9pub struct GeminiClient<T: Transport> {
10    pub(crate) model_name: String,
11    pub(crate) api_key: String,
12    pub(crate) scheme: String,
13    pub(crate) host: String,
14    pub(crate) base_path: String,
15    pub(crate) transport: T,
16    pub(crate) native_tools: Vec<Box<dyn GeminiNativeTool>>,
17    pub(crate) function_config: Option<GeminiFunctionCallingConfig>,
18    pub(crate) embeddings_config: Option<GeminiEmbeddingsConfig>,
19    pub(crate) include_thoughts: bool,
20    pub(crate) meta: ProviderMeta,
21}