use crate::config::LlmConfig;
pub fn openai(api_key: &str) -> LlmConfig {
LlmConfig::new("https://api.openai.com/v1", "gpt-5.4", api_key)
}
pub fn openai_mini(api_key: &str) -> LlmConfig {
LlmConfig::new("https://api.openai.com/v1", "gpt-5.4-mini", api_key)
}
pub fn anthropic(api_key: &str) -> LlmConfig {
LlmConfig::new(
"https://api.anthropic.com/v1",
"claude-opus-4-6",
api_key,
)
.with_header("x-api-key", api_key)
.with_header("anthropic-version", "2023-06-01")
}
pub fn anthropic_sonnet(api_key: &str) -> LlmConfig {
LlmConfig::new(
"https://api.anthropic.com/v1",
"claude-sonnet-4-6",
api_key,
)
.with_header("x-api-key", api_key)
.with_header("anthropic-version", "2023-06-01")
}
pub fn gemini(api_key: &str) -> LlmConfig {
LlmConfig::new(
"https://generativelanguage.googleapis.com/v1beta",
"gemini-3.1-pro-preview",
api_key,
)
}
pub fn gemini_flash(api_key: &str) -> LlmConfig {
LlmConfig::new(
"https://generativelanguage.googleapis.com/v1beta",
"gemini-3-flash-preview",
api_key,
)
}
pub fn deepseek(api_key: &str) -> LlmConfig {
LlmConfig::new("https://api.deepseek.com/v1", "deepseek-chat", api_key)
}
pub fn deepseek_reasoner(api_key: &str) -> LlmConfig {
LlmConfig::new("https://api.deepseek.com/v1", "deepseek-reasoner", api_key)
}
pub fn glm(api_key: &str) -> LlmConfig {
LlmConfig::new("https://open.bigmodel.cn/api/paas/v4", "glm-5", api_key)
}
pub fn glm_lite(api_key: &str) -> LlmConfig {
LlmConfig::new("https://open.bigmodel.cn/api/paas/v4", "glm-4.5v", api_key)
}
pub fn moonshot(api_key: &str) -> LlmConfig {
LlmConfig::new("https://api.moonshot.cn/v1", "kimi-k2.5", api_key)
}
pub fn xai(api_key: &str) -> LlmConfig {
LlmConfig::new("https://api.x.ai/v1", "grok-3", api_key)
}
pub fn xai_mini(api_key: &str) -> LlmConfig {
LlmConfig::new("https://api.x.ai/v1", "grok-3-mini", api_key)
}
pub fn openai_oauth(token: &str) -> LlmConfig {
LlmConfig::new("https://chatgpt.com/backend-api", "gpt-5.4", token)
.with_responses_api()
}
pub fn gemini_oauth(token: &str) -> LlmConfig {
LlmConfig::new("https://cloudcode-pa.googleapis.com", "gemini-3-flash-preview", token)
.with_gemini_native_api()
.with_header("user-agent", "GeminiCLI/v22.12.0 (windows; x86_64)")
}
pub fn ollama(model: &str) -> LlmConfig {
LlmConfig::new("http://localhost:11434/v1", model, "ollama")
}