doum_cli/llm/
presets.rs

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
21/// Load model presets for a provider
22pub 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}