#[allow(dead_code)]
use lellm_provider::providers::anthropic::AnthropicAdapter;
use lellm_provider::providers::base::{GenericProvider, ProviderConfig};
use lellm_provider::providers::openai_compat::OpenAICompatAdapter;
const OPENAI_MODEL_DEFAULT: &str = "gpt-5.4";
const ANTHROPIC_MODEL_DEFAULT: &str = "claude-opus-4.6";
pub fn create_openai_provider() -> GenericProvider<OpenAICompatAdapter> {
let base_url = format!("{}/v1", std::env::var("OPENAI_BASE_URL").unwrap());
GenericProvider::new(
OpenAICompatAdapter::openai(),
ProviderConfig {
base_url,
api_key: std::env::var("OPENAI_API_KEY").unwrap_or_default(),
model: std::env::var("OPENAI_MODEL")
.unwrap_or_else(|_| OPENAI_MODEL_DEFAULT.to_string()),
timeout_secs: std::env::var("OPENAI_TIMEOUT")
.ok()
.and_then(|s| s.parse().ok())
.unwrap_or(120),
},
)
}
pub fn create_anthropic_provider() -> GenericProvider<AnthropicAdapter> {
GenericProvider::new(
AnthropicAdapter,
ProviderConfig {
base_url: std::env::var("ANTHROPIC_BASE_URL")
.unwrap_or_else(|_| "https://api.anthropic.com".into()),
api_key: std::env::var("ANTHROPIC_API_KEY").unwrap_or_default(),
model: std::env::var("ANTHROPIC_MODEL")
.unwrap_or_else(|_| ANTHROPIC_MODEL_DEFAULT.into()),
timeout_secs: std::env::var("ANTHROPIC_TIMEOUT")
.ok()
.and_then(|s| s.parse().ok())
.unwrap_or(120),
},
)
}