AI fix
This commit is contained in:
+26
-13
@@ -142,32 +142,35 @@ function fociz_ai_chat_gemini(array $messages, array $options, array $aiSettings
|
||||
|
||||
// Bepaal fallback volgorde van endpoints/versies voor maximale compatibiliteit met alle Google AI Studio accounts
|
||||
$candidateUrls = [];
|
||||
if (str_contains($cleanModel, '1.5-flash')) {
|
||||
if (str_contains($cleanModel, '3.6-flash')) {
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.6-flash:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1/models/gemini-3.6-flash:generateContent";
|
||||
} elseif (str_contains($cleanModel, '2.0-flash')) {
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.6-flash:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent";
|
||||
} elseif (str_contains($cleanModel, '1.5-flash')) {
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.6-flash:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-001:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-002:generateContent";
|
||||
} elseif (str_contains($cleanModel, '1.5-pro')) {
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1/models/gemini-1.5-pro:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-001:generateContent";
|
||||
} elseif (str_contains($cleanModel, '2.0-flash')) {
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1/models/gemini-2.0-flash:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.6-flash:generateContent";
|
||||
} else {
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/{$cleanModel}:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.6-flash:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1/models/{$cleanModel}:generateContent";
|
||||
$candidateUrls[] = "https://generativelanguage.googleapis.com/v1beta/models/{$cleanModel}-latest:generateContent";
|
||||
}
|
||||
|
||||
$response = null;
|
||||
$lastError = null;
|
||||
$successfulModel = $cleanModel;
|
||||
|
||||
foreach ($candidateUrls as $baseUrl) {
|
||||
for ($i = 0; $i < count($candidateUrls); $i++) {
|
||||
$baseUrl = $candidateUrls[$i];
|
||||
$endpoint = $baseUrl . '?key=' . urlencode($apiKey);
|
||||
$res = fociz_http_request($endpoint, [
|
||||
'method' => 'POST',
|
||||
@@ -187,14 +190,24 @@ function fociz_ai_chat_gemini(array $messages, array $options, array $aiSettings
|
||||
break;
|
||||
}
|
||||
|
||||
// Als het een model-not-found 404 fout is, probeer de volgende kandidaat
|
||||
$msg = $res['json']['error']['message'] ?? ($res['error'] ?? '');
|
||||
$lastError = $msg;
|
||||
if ($res['status'] === 404 || str_contains($msg, 'not found') || str_contains($msg, 'not supported')) {
|
||||
|
||||
// Als Google in de foutmelding direct een nieuwer model aanbeveelt (bv. "use models/gemini-3.6-flash")
|
||||
if (preg_match('#use (?:models/)?(gemini-[a-zA-Z0-9\.\-_]+)#i', $msg, $recMatch)) {
|
||||
$recModel = $recMatch[1];
|
||||
$recUrl = "https://generativelanguage.googleapis.com/v1beta/models/{$recModel}:generateContent";
|
||||
if (!in_array($recUrl, $candidateUrls, true)) {
|
||||
$candidateUrls[] = $recUrl;
|
||||
}
|
||||
}
|
||||
|
||||
// Als het model niet gevonden is, niet meer beschikbaar is of deprecated is, probeer de volgende kandidaat
|
||||
if ($res['status'] === 404 || str_contains($msg, 'not found') || str_contains($msg, 'not supported') || str_contains($msg, 'no longer available') || str_contains($msg, 'deprecated')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Bij andere fouten (zoals ongeldige sleutel 400/403) direct stoppen
|
||||
// Bij autorisatiefouten (zoals ongeldige API key 400/403) direct stoppen
|
||||
$response = $res;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user