Skip to main content

vtcode_llm/
factory_types.rs

1//! Core provider configuration type.
2//!
3//! `ProviderConfig` is defined here so that both vtcode-llm and vtcode-core
4//! can use it without circular dependencies. The `LLMFactory` and factory
5//! functions live in vtcode-core since they depend on the CGP registration system.
6
7pub use crate::provider_config_types::ProviderConfig;
8
9use crate::model_resolver::ModelResolver;
10use vtcode_config::models::Provider;
11
12/// Infer provider from model slug using model resolver.
13pub fn infer_provider_from_model(model: &str) -> Option<Provider> {
14    ModelResolver::resolve_provider(None, model, &[]).or_else(|| {
15        let family = vtcode_commons::model_family::find_family_for_model(model);
16        (family.family != "unknown").then_some(family.provider)
17    })
18}