AI providers
The assistant is model-agnostic. Pick the provider whose key you already hold, paste it, and you are done. You pay the model provider directly with your own key, and the plugin never proxies that key through anyone else.
One assistant, thirteen providers
The plugin ships with 13 built-in providers and an extensibility seam for more. Whichever you choose, the assistant answers from your real store data through tools, so the behaviour is consistent across models. You select the provider, paste its key, and optionally pick a model in WooCommerce → Fahad AI.
- Anthropic Claude (Haiku, Sonnet, Opus)
- Moonshot AI (Kimi K2 and Moonshot V1 models)
- OpenAI (GPT-4o, GPT-4o mini, o4-mini)
- Google Gemini (2.0 Flash, 1.5 Pro, 1.5 Flash)
- Groq, Mistral, DeepSeek, xAI (Grok)
- Together AI, OpenRouter, Perplexity
- Ollama for a local, self-hosted model on your own machine
- Custom: any OpenAI-compatible endpoint you point it at
Two transport paths
Under the hood every provider resolves to one of two transports, and that is the only difference you need to understand.
- Anthropic native path. Claude uses the Anthropic Messages API directly. This path is non-streaming: the reply is composed in one request and response, then delivered to the chat widget as soon as it is ready.
- OpenAI-compatible path. The other twelve providers speak the OpenAI chat format and stream their replies token by token over Server-Sent Events (SSE), so text appears in the bubble as it is generated.
Either way the shopper sees a normal reply. Streaming is a delivery detail, not a feature you have to configure.
Bring your own key
Every provider is opt-in. Nothing is sent to any model until you select a provider and save its key, and each provider stores its own key and model setting independently. Billing is between you and the provider you chose; the plugin is only the client that talks to their API.
POST https://api.anthropic.com/v1/messages
Authorization: Bearer <your Anthropic key> # native, non-streaming
POST https://api.openai.com/v1/chat/completions
Authorization: Bearer <your OpenAI key> # OpenAI-compatible, streams via SSE
For a self-hosted setup, point the Custom provider at any OpenAI-compatible base URL, or run Ollama locally so no conversation data leaves your server at all.
Moonshot regions
Moonshot AI runs two independent platforms with separate keys and model catalogues, and a key issued on one is rejected by the other. The plugin exposes a Moonshot Region setting so a key from either platform works without editing code:
- Global uses
api.moonshot.ai - China uses
api.moonshot.cn
There is also a Moonshot model setting, with kimi-k2.6 as the default alongside the other Kimi K2 and Moonshot V1 options. Pick the region that matches where your key was issued, then choose a model.
When a key is wrong
An invalid or missing key fails gracefully rather than dumping a raw error at the shopper. If the configured provider cannot be reached, the assistant first tries another provider you have keyed, then falls back to a branded, on-brand message that keeps the customer moving:
- The shopper sees a friendly note, not a stack trace or a 401.
- The message invites them to keep searching the store.
- It points them to human support, so there is never a dead end.
That means a typo in a key degrades to a calm handoff, not a broken widget. Fix the key in settings and the assistant is back online on the next message.
Switching providers
You can change provider at any time. Because every reply is grounded in your store data through tools, swapping models does not change what the assistant knows about your catalogue, only how it phrases things and how quickly it streams. Save a different provider in settings and the next conversation uses it.