Skip to main content

Module http_api

Module http_api 

Source
Expand description

HTTP API providers: Anthropic, Gemini, Cohere, Groq, OpenRouter, OpenAI-compatible

§HTTP API providers (feature http-api)

Providers that speak to a vendor’s HTTP API directly, each implementing LlmProvider:

ProviderTypename()Env (from_env)
Anthropic Messages APIAnthropicProvideranthropicANTHROPIC_API_KEY (pool: ANTHROPIC_API_KEY_2, _3, …), ANTHROPIC_DEFAULT_MODEL, ANTHROPIC_BASE_URL, ANTHROPIC_MAX_TOKENS, ANTHROPIC_EFFORT, ANTHROPIC_THINKING, ANTHROPIC_MAX_RETRIES, ANTHROPIC_INITIAL_RETRY_DELAY_MS, ANTHROPIC_MAX_RETRY_DELAY_MS
Google GeminiGeminiProvidergeminiGEMINI_API_KEY, GEMINI_DEFAULT_MODEL, GEMINI_MAX_RETRIES, GEMINI_INITIAL_RETRY_DELAY_MS, GEMINI_MAX_RETRY_DELAY_MS
CohereCohereProvidercohereCOHERE_API_KEY, COHERE_DEFAULT_MODEL, COHERE_MAX_RETRIES, COHERE_INITIAL_RETRY_DELAY_MS, COHERE_MAX_RETRY_DELAY_MS
GroqGroqProvidergroqGROQ_API_KEY, GROQ_DEFAULT_MODEL, GROQ_MAX_RETRIES, GROQ_INITIAL_RETRY_DELAY_MS, GROQ_MAX_RETRY_DELAY_MS
OpenRouterOpenRouterProvideropenrouterOPENROUTER_API_KEY, OPENROUTER_DEFAULT_MODEL, OPENROUTER_SITE_URL, OPENROUTER_APP_TITLE, OPENROUTER_MAX_RETRIES, OPENROUTER_INITIAL_RETRY_DELAY_MS, OPENROUTER_MAX_RETRY_DELAY_MS
OpenAI-compatible (Ollama, vLLM, LocalAI, …)OpenAiCompatibleProviderollama / vllm / localai / localLOCAL_LLM_BASE_URL, LOCAL_LLM_MODEL, LOCAL_LLM_API_KEY
The OpenAI API (or any endpoint serving it under /v1)OpenAiCompatibleProvider over OpenAiCompatibleConfig::openai_api_from_envopenai_apiOPENAI_API_BASE_URL, OPENAI_API_KEY, OPENAI_API_MODEL, OPENAI_API_TIMEOUT_SECS

What they share lives in client (HTTP client construction, the one status-to-RunnerError mapping, the retry policy), sse (the line-buffering Server-Sent Events parser) and, for Groq, OpenRouter and the OpenAI-compatible provider, one OpenAI chat-completions wire format (request body, response, usage, stream frames, error envelope). What they do not share — Anthropic’s content blocks, tool-result pairing, cache breakpoints and retry-after header, Gemini’s system_instruction hoisting and thinking-only retries, Cohere’s typed event envelope and its rule that a content-less message sinks the whole request, OpenRouter‘s ranking headers, Groq billing the plain token counts, the self-hosted endpoints’ “is the server running?” hints — stays in each provider’s own module.

Every provider accepts a caller-owned reqwest::Client through with_client, so a host with one connection pool can hand it to all of them. Tool calling rides on ChatRequest::tools and comes back on ChatResponse::tool_calls.

No request URL is ever written to a log by this module: Gemini’s API key travels in the query string, so a URL in a log line is a key in a log line.

Re-exports§

pub use anthropic::AnthropicConfig;
pub use anthropic::AnthropicEffort;
pub use anthropic::AnthropicProvider;
pub use anthropic::AnthropicThinking;
pub use cohere::CohereConfig;
pub use cohere::CohereProvider;
pub use gemini::GeminiConfig;
pub use gemini::GeminiProvider;
pub use groq::GroqConfig;
pub use groq::GroqProvider;
pub use openai_compatible::OpenAiCompatibleConfig;
pub use openai_compatible::OpenAiCompatibleProvider;
pub use openrouter::OpenRouterConfig;
pub use openrouter::OpenRouterProvider;

Modules§

anthropic
Anthropic Messages API provider (Claude Haiku, Sonnet, Opus).
client
HTTP client construction, status-code mapping and the retry policy. The transport half of the HTTP providers.
cohere
Cohere v2 chat provider.
gemini
Google Gemini provider.
groq
Groq provider (OpenAI-shaped API on LPU inference).
openai_compatible
Any OpenAI-compatible endpoint: the OpenAI API, Ollama, vLLM, LocalAI, and others.
openrouter
OpenRouter provider (one key, many upstream models).
sse
Line-buffering Server-Sent Events parser shared by every streaming provider.