use serde::{Deserialize, Serialize};
use crate::{HttpModelConfig, ModelProfile, ModelSettings, ProtocolFamily, ProviderAlias};
#[allow(clippy::struct_excessive_bools)]
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ModelConfigPresetData {
pub name: String,
pub protocol: ProtocolFamily,
pub context_window: u32,
pub max_images: u32,
pub max_videos: u32,
pub supports_gif: bool,
pub split_large_images: bool,
pub image_split_max_height: u32,
pub image_split_overlap: u32,
pub profile: ModelProfile,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
pub struct ModelRuntimePreset {
pub name: String,
pub model_id: String,
pub provider_name: String,
pub model_name: String,
pub protocol: ProtocolFamily,
pub settings: ModelSettings,
pub config: ModelConfigPresetData,
}
impl ModelRuntimePreset {
#[must_use]
pub fn provider_alias(&self, http: HttpModelConfig) -> ProviderAlias {
ProviderAlias::new(
self.model_id.clone(),
self.provider_name.clone(),
self.model_name.clone(),
self.protocol,
http,
)
.with_profile(self.config.profile.clone())
.with_default_settings(self.settings.clone())
}
}