Providers¶
Each generator calls one or more AI operations:
| Operation | Used by |
|---|---|
Text to image (text_to_image) |
Image, Video (the first frame) |
Image to video (image_to_video) |
Video (experimental, off by default) |
Chat (chat) |
SVG; "Ask AI" for SVG names |
Chat with image vision (chat_with_image_vision) |
"Ask AI" for image names, alternative text and titles |
AI Media always uses the AI module's default provider and model for each
operation, set on the AI settings (/admin/config/ai/settings, key
default_providers.<operation> of ai.settings). It has no provider setting
of its own. Editors may pick another model per generation only when the
Editor options tab of the settings allows it.
A generator whose operations have no default is not set up. Editors do not see its tab; users with Administer AI see it with a message and a link to the AI settings.
The description is sent to the provider, and the form says which one. Options such as quality or output format are passed only when the chosen model has them.
Earlier versions had a Providers tab, stored as providers.<operation>.
That value is now ignored, and saving the AI Media settings removes it. Set
the same provider and model as the AI module default instead.
Tags and the AI module's systems¶
Every call goes through the AI module, so its guardrails, moderation, logging, observability and AI Context see AI Media's requests. AI Media adds no rules of its own; it says who it is, so a site can target its calls:
| Tag | On |
|---|---|
ai_media |
every call |
ai_media:<plugin id> |
every call, by generator, e.g. ai_media:image or ai_media:svg, when AI Logging or AI Observability is enabled |
ai_media_step:<step> |
every call, by step: generate (the media itself), or name, alt or title ("Ask AI"), when AI Logging or AI Observability is enabled |
ai_media_generator:<plugin id> |
every call, e.g. ai_media_generator:image |
ai_media_media_type:<bundle> |
every call made from the Media Library |
ai_media_metadata |
"Ask AI" calls for a name, alt or title |
ai_media_metadata:<name\|alt\|title> |
the same, per target |
The AI module also tags each call with its operation type, such as
text_to_image or chat. The tags are passed with the call, and the AI
module sets them on the provider (setTag()), so every event, log entry and
span of the call carries them.
All calls of one Generate press (a video frame and its video, the name and
the alt text) share one request parent ID, so AI Logging and AI Observability
can group them. Each input also carries debug data under ai_media
(generator, media type, opener and host entity type and bundle; never the
description) and, from the Media Library, the entity_context request
metadata AI Context matches on.
Filtering AI Logging and AI Observability¶
- AI Logging (
/admin/config/ai/logging/settings): Restrict automated logging by request tags withai_medialogs only AI Media's calls, andai_media:imageonly image generation. Exclude automated logging by request tags with, for example,ai_media_step:nameleaves the "Ask AI" name calls out. The AI Logs list (/admin/config/ai/logging/collection) shows the tags of each entry. - AI Observability (
/admin/config/ai/observability): the log tags setting takes the same tags, and each OpenTelemetry span carries them in itstagsattribute, so a dashboard can group usage by generator or step.
AI Media adds no events of its own: subscribe to the AI module's
ai.pre_generate_response and ai.post_generate_response events and filter
on the ai_media tag. A subscriber may rewrite the prompt, which is why the
form says the description is sent to the provider, not that it is sent as
typed.
Guardrails¶
Global guardrail sets (/admin/config/ai/guardrails/global) apply to AI
Media's calls like any other. When a guardrail stops a request, the AI module
answers with the stop message instead of a result; AI Media detects that and
shows "This site's AI rules stopped this request" with the site's own message,
and makes no file, name or alt text. Users with Administer AI also see the
guardrail set. The AI module's built-in guardrails check chat requests only,
so they cover SVG and "Ask AI" requests, not image or video ones.
Video¶
The Video generator (experimental, off by default) needs a
provider for image_to_video. No provider in the AI module family
(OpenAI, Anthropic, amazee.io, Azure, AWS Bedrock, Google Vertex, Gemini,
Hugging Face, Mistral, LiteLLM, Ollama and others) offers it as of October
2026; the Grok provider offers image_to_video, untested with AI Media. The
operation takes one image and nothing else, so the editor's words cannot
describe the motion until #3586540
adds a prompt, and the call runs within one request, so a slow model can hit
the AI module's request timeout. Without a provider, administrators read
"No installed provider offers image_to_video" on the tab; editors do not see
the tab.