Add AI model selection per provider

This commit is contained in:
Wojtek
2026-10-16 13:16:35 +02:00
parent 7d9efd64f4
commit 57065d4ca1
8 changed files with 100 additions and 12 deletions
@@ -9,6 +9,7 @@ use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Session\Session;
use Komponent\Component\Testquestions\Administrator\Service\AiService;
class AiController extends BaseController
{
@@ -29,6 +30,16 @@ class AiController extends BaseController
throw new \RuntimeException(Text::_('COM_TESTQUESTIONS_AI_PROVIDER_INVALID'));
}
$models = AiService::availableModels();
$selectedModels = [];
foreach (['openai', 'grok'] as $modelProvider) {
$model = $input->post->getCmd('ai_' . $modelProvider . '_model', '');
if (!isset($models[$modelProvider][$model])) {
throw new \RuntimeException(Text::_('COM_TESTQUESTIONS_AI_MODEL_INVALID'));
}
$selectedModels[$modelProvider] = $model;
}
$db = Factory::getContainer()->get('DatabaseDriver');
$row = $db->setQuery(
$db->getQuery(true)
@@ -47,6 +58,9 @@ class AiController extends BaseController
$legacyKey = trim((string) ($settings['ai_api_key'] ?? ''));
$settings['ai_provider'] = $provider;
foreach ($selectedModels as $modelProvider => $model) {
$settings['ai_' . $modelProvider . '_model'] = $model;
}
foreach (['openai', 'grok'] as $keyProvider) {
$fieldName = 'ai_' . $keyProvider . '_api_key';
$apiKey = trim((string) $input->post->get($fieldName, '', 'RAW'));