Skip to main content

aster/providers/canonical/
mod.rs

1mod model;
2mod name_builder;
3mod registry;
4
5pub use model::{CanonicalModel, Pricing};
6pub use name_builder::{canonical_name, map_to_canonical_model, strip_version_suffix};
7pub use registry::CanonicalModelRegistry;
8
9#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
10pub struct ModelMapping {
11    pub provider_model: String,
12    pub canonical_model: String,
13}
14
15impl ModelMapping {
16    pub fn new(provider_model: impl Into<String>, canonical_model: impl Into<String>) -> Self {
17        Self {
18            provider_model: provider_model.into(),
19            canonical_model: canonical_model.into(),
20        }
21    }
22}
23
24pub fn maybe_get_canonical_model(provider: &str, model: &str) -> Option<CanonicalModel> {
25    let registry = CanonicalModelRegistry::bundled().ok()?;
26    let canonical_id = map_to_canonical_model(provider, model, registry)?;
27    registry.get(&canonical_id).cloned()
28}