chat-completions 0.3.1

Generic OpenAI-compatible Chat Completions client for chat-rs. Bring your own server (Ollama, vLLM, llama.cpp, LiteLLM, etc.).
Documentation
use chat_core::transport::Transport;
use chat_core::types::provider_meta::ProviderMeta;

pub struct CompletionsClient<T: Transport> {
    pub(crate) model_name: String,
    pub(crate) api_key: Option<String>,
    pub(crate) scheme: String,
    pub(crate) host: String,
    pub(crate) base_path: String,
    pub(crate) extra_headers: Vec<(String, String)>,
    pub(crate) transport: T,
    pub(crate) meta: ProviderMeta,
}

impl<T: Transport> CompletionsClient<T> {
    pub(crate) fn build_headers(&self) -> Vec<(String, String)> {
        let mut headers = vec![("Content-Type".into(), "application/json".into())];
        if let Some(key) = &self.api_key {
            headers.push(("Authorization".into(), format!("Bearer {key}")));
        }
        headers.extend(self.extra_headers.iter().cloned());
        headers
    }
}