Source path: config/ai.php
Extracted from supplied specification. Review before copying into application.

<?php
return [
    'cost' => ['image' => 1, 'video' => 5],

    // order tried when the org has no own keys (and as fallback after them). Free first.
    'default_chain' => [
        'image' => ['pollinations', 'cloudflare', 'huggingface', 'together', 'gemini', 'openai'],
        'video' => ['fal', 'replicate'],
        'text'  => ['groq', 'gemini', 'openrouter', 'openai'],
    ],

    'drivers' => [
        'image' => [
            'pollinations' => \App\Services\Ai\Image\PollinationsImage::class,
            'cloudflare'   => \App\Services\Ai\Image\CloudflareImage::class,
            'huggingface'  => \App\Services\Ai\Image\HuggingFaceImage::class,
            'together'     => \App\Services\Ai\Image\TogetherImage::class,
            'gemini'       => \App\Services\Ai\Image\GeminiImage::class,
            'openai'       => \App\Services\Ai\Image\OpenAiImage::class,
        ],
        'video' => [
            'fal'       => \App\Services\Ai\Video\FalVideo::class,
            'replicate' => \App\Services\Ai\Video\ReplicateVideo::class,
        ],
        'text' => [
            'groq' => \App\Services\Ai\Text\OpenAiCompatText::class,
            'gemini' => \App\Services\Ai\Text\OpenAiCompatText::class,
            'openrouter' => \App\Services\Ai\Text\OpenAiCompatText::class,
            'openai' => \App\Services\Ai\Text\OpenAiCompatText::class,
        ],
    ],

    // Provider credentials are organization-scoped and saved encrypted in org_ai_providers.
    // Do not load customer API keys from .env or use a global customer's key as fallback.
    // Keep only non-secret defaults here.
    'providers' => [
        'pollinations' => ['always' => true],
        'cloudflare'   => ['model' => '@cf/black-forest-labs/flux-1-schnell'],
        'huggingface'  => ['model' => 'black-forest-labs/FLUX.1-schnell'],
        'together'     => [],
        'gemini'       => [],
        'openai'       => ['model' => 'gpt-image-1'],
        'fal'          => [],
        'replicate'    => [],
        'groq'         => [],
        'openrouter'   => [],
    ],
];
