* docs: surface per-provider AI model override env vars
.env.example only showed AI_TEXT_PROVIDER/AI_IMAGE_PROVIDER/
AI_AUDIO_PROVIDER (which provider to use), never the per-provider
model overrides (OPENAI_IMAGE_MODEL, GEMINI_AUDIO_MODEL, etc.) that
config/ai.php already wires up for every provider capability. A
self-hoster reading only .env.example had no way to discover these
existed.
These aren't new: laravel/ai already resolves each capability's
model independently per provider (confirmed in vendor - e.g.
OpenAiProvider::defaultImageModel() falls back to a hardcoded image
model, never to the text model), so there was never actually a
text-model fallback bug to fix in code. The gap was purely that the
override knobs were invisible outside of reading config/ai.php's
source directly.
* docs: document AI provider keys, URLs and example model values
The override block landed with bare variable names and only covered the
five providers whose API keys were already in .env.example. Filled in
what a self-hoster still could not discover:
- Example values on every model override, taken from laravel/ai's
current per-capability defaults, so the ID format is visible (an
Ollama tag, an OpenRouter vendor/model path and a bare OpenAI ID
look nothing alike).
- The keys and URLs for the providers .env.example already advertises
as valid but never documented: XAI, GROQ, MISTRAL, DEEPSEEK,
OLLAMA_URL and the openai-compatible endpoint. Ollama was the
scenario in the original report and OLLAMA_URL matters more there
than OLLAMA_TEXT_MODEL does.
- GROQ/MISTRAL/DEEPSEEK text models, missing while their providers
were listed as options.
- openai-compatible has no built-in default model and throws without
OPENAI_COMPATIBLE_TEXT_MODEL, so that one is flagged as required.
- Corrected the audio provider list: gemini and openrouter implement
AudioProvider too. The image and audio lists are no longer written
as exhaustive.
- Mirrored all of it into docker/.env.docker.example, which carried the
same block untouched and is the file Docker self-hosters copy. Its
OLLAMA_URL points at the host instead of localhost.
---------
Co-authored-by: Paulo Castellano <paulo@castellanos.llc>