use crate::client::macros::http_client;
use crate::driver::Model;
use crate::providers::voyageai::wire::{Embeddings, Rerank, VoyageAiConfig};
http_client!(
VoyageAi,
VoyageAiConfig
);
impl VoyageAi {
#[cfg(feature = "reqwest")]
#[cfg_attr(docsrs, doc(cfg(feature = "reqwest")))]
pub fn new(api_key: impl Into<crate::wire::Secret>) -> Self {
VoyageAiConfig::new(api_key).client()
}
#[cfg(feature = "reqwest")]
#[cfg_attr(docsrs, doc(cfg(feature = "reqwest")))]
pub fn from_env() -> Result<Self, crate::client::env::EnvError> {
Ok(VoyageAiConfig::from_env()?.client())
}
pub fn embedding(&self, model: impl Into<String>, ndims: Option<usize>) -> Model<Embeddings> {
self.model(self.config.embedding(model, ndims))
}
pub fn rerank(&self, model: impl Into<String>) -> Model<Rerank> {
self.model(self.config.rerank(model))
}
}