Expand description
AI Model Directory Router
Provider-aware AI model routing, filtering, exact cost calculation,
fallback selection, and context-window management. The default bundled
feature ships a dated models.dev provider catalog for offline use.
§Quick Start
use ai_model_directory_router::{route, RouteQuery, RouterStore};
let store = RouterStore::bundled().unwrap();
let query = RouteQuery {
provider: Some("openai".to_string()),
min_context: Some(128_000),
..RouteQuery::default()
};
let result = route(&store, &query);
for model in &result.models {
println!("{} (via {})", model.id, model.provider);
}§Modules
storeloads bundled, local, inline, or live provider catalogscostcalculates per-token costs using exact decimal arithmeticrouterfilters, sorts, and paginates models by provider, price, context, features, and modalitiesfallbackgenerates scored alternative model chainscontextchecks if prompts fit within context windowscompare()produces field-by-field model comparisons with winners
Re-exports§
pub use compare::compare;pub use compare::compare_models;pub use context::check_context_fit;pub use context::check_context_fit_for_provider;pub use context::find_best_context_model;pub use cost::calculate_cost_for_model;pub use cost::estimate_request_cost;pub use fallback::fallback_chain;pub use fallback::fallback_chain_for_provider;pub use overlay::apply_overlay;pub use overlay::load_models_dev_from_file;pub use overlay::parse_models_dev;pub use overlay::ModelsDevCost;pub use overlay::ModelsDevIndex;pub use overlay::ModelsDevLimit;pub use overlay::ModelsDevModalities;pub use overlay::ModelsDevModel;pub use overlay::ModelsDevProvider;pub use overlay::OverlayMode;pub use overlay::OverlayReport;pub use router::route;pub use store::MODELS_DEV_BODY_LIMIT;pub use store::RouterStore;pub use store::MODELS_DEV_API_URL;pub use store::BUNDLED_MODELS_DEV_BYTE_COUNT;pub use store::BUNDLED_MODELS_DEV_ETAG;pub use store::BUNDLED_MODELS_DEV_MODEL_COUNT;pub use store::BUNDLED_MODELS_DEV_PROVIDER_COUNT;pub use store::BUNDLED_MODELS_DEV_RETRIEVED_AT;pub use store::BUNDLED_MODELS_DEV_SHA256;pub use store::BUNDLED_MODELS_DEV_SOURCE_REVISION;pub use types::*;