Overview
Switch between OpenAI, Anthropic, Gemini, or Mistral without changing your call sites.
A provider is the transport that talks to one AI vendor. The Client resolves which one to use from johannschopplich.copilot.provider and forwards every request unchanged – your call sites never know the difference.
Built-in Implementations
OpenAIProvider
The base. Doubles as the transport for any OpenAI-compatible endpoint (Mistral, Gemini's /v1beta/openai, OpenRouter, Ollama).
All four classes are marked
@internal. Use them through Client for stable behavior. Direct instantiation works but constructor signatures may shift between minor versions.Retry Behavior
| Provider | Retry |
|---|---|
OpenAIProvider and subclasses | Built-in retry wrapper – see details. |
AnthropicProvider | Delegated to the official anthropic-ai/sdk. |
Every provider applies the per-provider timeout to its HTTP client, so a stalled connection fails rather than blocking. A failed request throws ProviderException with the upstream error attached as previous.