Configure separate OpenAI and Grok keys
This commit is contained in:
@@ -44,12 +44,22 @@ class AiController extends BaseController
|
||||
|
||||
$settings = json_decode((string) $row->params, true);
|
||||
$settings = is_array($settings) ? $settings : [];
|
||||
$apiKey = trim((string) $input->post->get('ai_api_key', '', 'RAW'));
|
||||
$legacyKey = trim((string) ($settings['ai_api_key'] ?? ''));
|
||||
|
||||
$settings['ai_provider'] = $provider;
|
||||
if ($apiKey !== '') {
|
||||
$settings['ai_api_key'] = $apiKey;
|
||||
foreach (['openai', 'grok'] as $keyProvider) {
|
||||
$fieldName = 'ai_' . $keyProvider . '_api_key';
|
||||
$apiKey = trim((string) $input->post->get($fieldName, '', 'RAW'));
|
||||
|
||||
if ($apiKey !== '') {
|
||||
$settings[$fieldName] = $apiKey;
|
||||
}
|
||||
|
||||
if ($keyProvider === $provider && empty($settings[$fieldName]) && $legacyKey !== '') {
|
||||
$settings[$fieldName] = $legacyKey;
|
||||
}
|
||||
}
|
||||
unset($settings['ai_api_key']);
|
||||
|
||||
$extension = (object) [
|
||||
'extension_id' => (int) $row->extension_id,
|
||||
|
||||
@@ -92,7 +92,9 @@ class ResultModel extends BaseDatabaseModel
|
||||
|
||||
$params = ComponentHelper::getParams('com_testquestions');
|
||||
$provider = trim((string) $params->get('ai_provider', 'openai'));
|
||||
$apiKey = trim((string) $params->get('ai_api_key', ''));
|
||||
$provider = strtolower(preg_replace('/[^a-z]/', '', $provider));
|
||||
$keyName = 'ai_' . $provider . '_api_key';
|
||||
$apiKey = trim((string) $params->get($keyName, $params->get('ai_api_key', '')));
|
||||
$componentKeyLength = mb_strlen($apiKey);
|
||||
|
||||
// Odczytaj zapisane parametry bezpośrednio z bazy. Dzięki temu nie użyjemy
|
||||
@@ -115,14 +117,21 @@ class ResultModel extends BaseDatabaseModel
|
||||
if ($storedProvider !== '') {
|
||||
$provider = $storedProvider;
|
||||
}
|
||||
}
|
||||
|
||||
if ($storedApiKey !== '' && !preg_match('/^\*+$/', $storedApiKey)) {
|
||||
$apiKey = $storedApiKey;
|
||||
}
|
||||
$provider = strtolower(preg_replace('/[^a-z]/', '', $provider));
|
||||
$keyName = 'ai_' . $provider . '_api_key';
|
||||
$apiKey = trim((string) $params->get($keyName, $params->get('ai_api_key', '')));
|
||||
$componentKeyLength = mb_strlen($apiKey);
|
||||
$storedApiKey = is_array($storedParams)
|
||||
? trim((string) ($storedParams[$keyName] ?? $storedParams['ai_api_key'] ?? ''))
|
||||
: '';
|
||||
if ($storedApiKey !== '' && !preg_match('/^\*+$/', $storedApiKey)) {
|
||||
$apiKey = $storedApiKey;
|
||||
}
|
||||
|
||||
if (trim($apiKey) === '') {
|
||||
$databaseKey = is_array($storedParams) ? trim((string) ($storedParams['ai_api_key'] ?? '')) : '';
|
||||
$databaseKey = $storedApiKey;
|
||||
$databaseKeyLength = preg_match('/^\*+$/', $databaseKey) ? 0 : mb_strlen($databaseKey);
|
||||
throw new \RuntimeException(
|
||||
'AI_KEY_EMPTY|provider=' . ($provider !== '' ? $provider : '(pusty)')
|
||||
|
||||
Reference in New Issue
Block a user