doum_cli/llm/
presets.rs

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