1use crate::llm::Provider;
2use rust_embed::RustEmbed;
3use serde::Deserialize;
4
5#[derive(RustEmbed)]
6#[folder = "static/presets/"]
7struct PresetModels;
8
9#[derive(Debug, Deserialize, Clone)]
10pub struct ModelInfo {
11 pub id: String,
12 pub name: String,
13 pub description: String,
14}
15
16#[derive(Debug, Deserialize)]
17struct ModelList {
18 models: Vec<ModelInfo>,
19}
20
21pub fn load_presets(provider: &Provider) -> Vec<ModelInfo> {
23 let filename = format!("{}.toml", provider.as_str());
24
25 if let Some(content) = PresetModels::get(&filename)
26 && let Ok(data) = std::str::from_utf8(content.data.as_ref())
27 && let Ok(list) = toml::from_str::<ModelList>(data)
28 {
29 return list.models;
30 }
31
32 vec![]
33}