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:
| Provider | Type | name() | Env (from_env) |
|---|---|---|---|
| Anthropic Messages API | AnthropicProvider | anthropic | ANTHROPIC_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 Gemini | GeminiProvider | gemini | GEMINI_API_KEY, GEMINI_DEFAULT_MODEL, GEMINI_MAX_RETRIES, GEMINI_INITIAL_RETRY_DELAY_MS, GEMINI_MAX_RETRY_DELAY_MS |
| Cohere | CohereProvider | cohere | COHERE_API_KEY, COHERE_DEFAULT_MODEL, COHERE_MAX_RETRIES, COHERE_INITIAL_RETRY_DELAY_MS, COHERE_MAX_RETRY_DELAY_MS |
| Groq | GroqProvider | groq | GROQ_API_KEY, GROQ_DEFAULT_MODEL, GROQ_MAX_RETRIES, GROQ_INITIAL_RETRY_DELAY_MS, GROQ_MAX_RETRY_DELAY_MS |
OpenRouter | OpenRouterProvider | openrouter | OPENROUTER_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, …) | OpenAiCompatibleProvider | ollama / vllm / localai / local | LOCAL_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_env | openai_api | OPENAI_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
OpenAIAPI, Ollama, vLLM,LocalAI, and others. - openrouter
OpenRouterprovider (one key, many upstream models).- sse
- Line-buffering Server-Sent Events parser shared by every streaming provider.