pub mod adapter;
pub mod config;
#[cfg(feature = "provider-mistral")]
pub use config::MistralModel;
#[cfg(feature = "provider-nvidia")]
pub use config::NvidiaModel;
#[cfg(feature = "provider-openai")]
pub use config::OpenAiModel;
use crate::providers::http::adapter::HttpAgentProvider;
use self::adapter::OpenAiCompatAdapter;
#[cfg(feature = "provider-openai")]
pub type OpenAiProvider = HttpAgentProvider<OpenAiCompatAdapter<config::OpenAiConfig>>;
#[cfg(feature = "provider-openai")]
impl OpenAiProvider {
pub fn from_env() -> Self {
HttpAgentProvider::new(OpenAiCompatAdapter::new(config::OpenAiConfig::from_env()))
}
pub fn with_credentials(api_key: String, base_url: String) -> Self {
HttpAgentProvider::new(OpenAiCompatAdapter::new(config::OpenAiConfig::new(
api_key, base_url,
)))
}
}
#[cfg(feature = "provider-mistral")]
pub type MistralProvider = HttpAgentProvider<OpenAiCompatAdapter<config::MistralConfig>>;
#[cfg(feature = "provider-mistral")]
impl MistralProvider {
pub fn from_env() -> Self {
HttpAgentProvider::new(OpenAiCompatAdapter::new(config::MistralConfig::from_env()))
}
pub fn with_api_key(api_key: String) -> Self {
HttpAgentProvider::new(OpenAiCompatAdapter::new(config::MistralConfig::new(
api_key,
)))
}
}
#[cfg(feature = "provider-nvidia")]
pub type NvidiaProvider = HttpAgentProvider<OpenAiCompatAdapter<config::NvidiaConfig>>;
#[cfg(feature = "provider-nvidia")]
impl NvidiaProvider {
pub fn from_env() -> Self {
HttpAgentProvider::new(OpenAiCompatAdapter::new(config::NvidiaConfig::from_env()))
}
pub fn with_api_key(api_key: String) -> Self {
HttpAgentProvider::new(OpenAiCompatAdapter::new(config::NvidiaConfig::new(api_key)))
}
}