use crate::{AuthConfig, HttpModelConfig};
#[must_use]
pub fn anthropic_http_config(api_key: impl Into<String>) -> HttpModelConfig {
let mut config =
HttpModelConfig::provider_endpoint("https://api.anthropic.com/v1", "v1", "messages");
config.auth = Some(AuthConfig::Header {
name: "x-api-key".to_string(),
value: api_key.into(),
});
config
.headers
.insert("anthropic-version".to_string(), "2023-06-01".to_string());
config
}
#[must_use]
pub fn openai_chat_http_config(api_key: impl Into<String>) -> HttpModelConfig {
let mut config =
HttpModelConfig::provider_endpoint("https://api.openai.com/v1", "v1", "chat/completions");
config.auth = Some(AuthConfig::Bearer {
token: api_key.into(),
});
config
}
#[must_use]
pub fn openai_responses_http_config(api_key: impl Into<String>) -> HttpModelConfig {
let mut config =
HttpModelConfig::provider_endpoint("https://api.openai.com/v1", "v1", "responses");
config.auth = Some(AuthConfig::Bearer {
token: api_key.into(),
});
config
}
#[must_use]
pub fn gemini_http_config(
api_key: impl Into<String>,
model_name: impl Into<String>,
) -> HttpModelConfig {
let model_name = model_name.into();
HttpModelConfig::provider_endpoint(
"https://generativelanguage.googleapis.com/v1beta",
"v1beta",
format!("models/{model_name}:generateContent?key={}", api_key.into()),
)
}