synaps_cli/runtime/openai/catalog/
generic.rs1use super::*;
2use serde::Deserialize;
3
4#[derive(Debug, Deserialize)]
5struct GenericModelsResponse {
6 data: Vec<GenericModelItem>,
7}
8
9#[derive(Debug, Deserialize)]
10struct GenericModelItem {
11 id: String,
12 #[serde(default)]
13 name: Option<String>,
14}
15
16pub fn parse_generic_catalog_models(
19 body: &str,
20 provider_key: &str,
21 provider_name: &str,
22) -> Result<Vec<CatalogModel>, serde_json::Error> {
23 let resp: GenericModelsResponse = serde_json::from_str(body)?;
24 Ok(resp
25 .data
26 .into_iter()
27 .filter_map(|item| {
28 let mut m = CatalogModel::new(provider_key, provider_name, item.id)?;
29 m.label = item.name.filter(|n| !n.trim().is_empty());
30 m.reasoning = ReasoningSupport::GenericOpenAi;
31 Some(m)
32 })
33 .collect())
34}