Files
gustavoo-me/wp-content/plugins/automatic-ai-posts/src/Modules/Ai/ProviderFactory.php
T
Gustavo 0ea3651fb5 Automatic AI Posts, setup automatizado e seeder de permalinks/avatar
Plugin automatic-ai-posts (v2.0.0)
- Pipeline completo: coleta de feeds RSS/Atom, filtro por IA, reescrita,
  categoria, imagem de capa e agendamento
- Página de configuração com teste real do provedor de IA
- Editor: botão para refazer imagem de capa e metadados, textos em PT-BR
- Ajuda com botão Pix (copia-e-cola + QR) e sem nota de avaliação
- Cache-busting por mtime nos assets do admin

Tema gustavoo-portfolio
- Marca do cabeçalho reduzida a "Gustavo"
- Suporte a título próprio da marca

Setup (docker/wp-init.sh, compose.yaml)
- Plugins de terceiros (Post Views Counter, Rank Math, Site Kit)
  instalados do WordPress.org em vez de versionados
- Falha explícita ao final se algum plugin obrigatório não instalar
- WPCLI_UID/WPCLI_GID configuráveis

Seeder do tema
- Links permanentes "Dia e nome" e avatar "Iniciais" aplicados
  apenas em instalação nova, com regravação do .htaccess
2026-11-02 13:33:30 -03:00

63 lines
2.4 KiB
PHP

<?php
namespace AAP\Modules\Ai;
use AAP\Core\Options;
use AAP\Modules\Ai\Providers\AnthropicProvider;
use AAP\Modules\Ai\Providers\CustomProvider;
use AAP\Modules\Ai\Providers\NvidiaProvider;
use AAP\Modules\Ai\Providers\OpenAiProvider;
use AAP\Modules\Ai\Providers\OpenRouterProvider;
use AAP\Modules\Ai\Providers\VertexProvider;
defined('ABSPATH') || exit;
/**
* Builds the provider selected in the settings.
*/
final class ProviderFactory {
public const LABELS = [
'nvidia' => 'NVIDIA Build',
'openai' => 'OpenAI',
'anthropic' => 'Anthropic',
'openrouter' => 'OpenRouter',
'vertex' => 'Google Vertex AI',
'custom' => 'Custom (OpenAI compatible)',
];
public const DEFAULT_MODELS = [
'nvidia' => 'nvidia/nemotron-3-ultra-550b-a55b',
'openai' => 'gpt-4o-mini',
'anthropic' => 'claude-3-5-sonnet-latest',
'openrouter' => 'openai/gpt-4o-mini',
'vertex' => 'gemini-2.0-flash',
'custom' => 'gpt-4o-mini',
];
public static function current_id(): string {
$id = (string) Options::get('aap_ai_provider', 'nvidia');
return isset(self::LABELS[$id]) ? $id : 'nvidia';
}
public static function make(?string $provider_id = null): ?Provider {
$id = $provider_id ?? self::current_id();
$timeout = max(10, Options::int('aap_ai_timeout'));
$model = trim((string) Options::get('aap_model', ''));
return match ($id) {
'openai' => new OpenAiProvider((string) Options::get('aap_openai_api_key', ''), $model, $timeout),
'anthropic' => new AnthropicProvider((string) Options::get('aap_anthropic_api_key', ''), $model, $timeout),
'openrouter' => new OpenRouterProvider((string) Options::get('aap_openrouter_api_key', ''), $model, $timeout),
'vertex' => new VertexProvider(
(string) Options::get('aap_vertex_project', ''),
(string) Options::get('aap_vertex_location', 'us-central1'),
(string) Options::get('aap_vertex_service_account', ''),
$model,
$timeout
),
'custom' => new CustomProvider((string) Options::get('aap_custom_api_key', ''), $model, $timeout),
default => new NvidiaProvider((string) Options::get('aap_nvidia_api_key', ''), $model, $timeout),
};
}
}