use crate::Result;
use genai::chat::ChatOptions;
use genai::resolver::AuthData;
use genai::{Client, ModelIden};
pub fn new_genai_client() -> Result<genai::Client> {
let options = ChatOptions::default().with_normalize_reasoning_content(true);
let client = Client::builder()
.with_chat_options(options)
.with_auth_resolver_fn(|model: ModelIden| {
let Some(key_name) = model.adapter_kind.default_key_env_name() else {
return Ok(None);
};
let key_from_env = std::env::var(key_name).ok();
if let Some(key) = key_from_env {
Ok(Some(AuthData::from_single(key)))
}
else {
{
Err(genai::resolver::Error::ApiKeyEnvNotFound {
env_name: key_name.to_string(),
})
}
}
})
.build();
Ok(client)
}