aster/providers/canonical/
mod.rs1mod 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}