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
63 lines
2.4 KiB
PHP
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),
|
|
};
|
|
}
|
|
}
|