fix: adiciona fallback para endpoint v1 e modelo universal gemini-1.5-flash na API do Gemini
Build and Deploy (Gitea) / build-and-deploy (push) Successful in 2m5s Details

This commit is contained in:
Sidney 2026-07-17 21:57:15 -03:00
parent f04dea7e8a
commit 50eafc51bd
1 changed files with 41 additions and 2 deletions

View File

@ -1416,7 +1416,7 @@ Exemplo de formato esperado:
} else { } else {
// Provedor padrão: Google Gemini // Provedor padrão: Google Gemini
const geminiUrl = `https://generativelanguage.googleapis.com/v1beta/models/${modelName}:generateContent?key=${apiKey}`; let geminiUrl = `https://generativelanguage.googleapis.com/v1beta/models/${modelName}:generateContent?key=${apiKey}`;
const payload = { const payload = {
contents: [ contents: [
{ {
@ -1457,7 +1457,7 @@ Apenas retorne o JSON estruturado contendo a lista de questões no seguinte form
} }
}; };
const response = await fetch(geminiUrl, { let response = await fetch(geminiUrl, {
method: 'POST', method: 'POST',
headers: { headers: {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
@ -1465,6 +1465,45 @@ Apenas retorne o JSON estruturado contendo a lista de questões no seguinte form
body: JSON.stringify(payload) body: JSON.stringify(payload)
}); });
// Se der 404, tentar API v1 estável
if (!response.ok && response.status === 404) {
console.warn(`[Gemini] v1beta retornou 404 para o modelo ${modelName}. Tentando endpoint /v1/...`);
geminiUrl = `https://generativelanguage.googleapis.com/v1/models/${modelName}:generateContent?key=${apiKey}`;
response = await fetch(geminiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
}
// Se ainda assim der 404 e o modelo for diferente de gemini-1.5-flash, tentar com gemini-1.5-flash de fallback universal
if (!response.ok && response.status === 404 && modelName !== 'gemini-1.5-flash') {
console.warn(`[Gemini] Modelo ${modelName} não encontrado no AI Studio. Tentando com fallback universal gemini-1.5-flash no endpoint v1...`);
geminiUrl = `https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent?key=${apiKey}`;
response = await fetch(geminiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
if (!response.ok && response.status === 404) {
// Última tentativa: gemini-1.5-flash no endpoint v1beta
console.warn(`[Gemini] Tentando gemini-1.5-flash no endpoint v1beta...`);
geminiUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${apiKey}`;
response = await fetch(geminiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
}
}
if (!response.ok) { if (!response.ok) {
const errorText = await response.text(); const errorText = await response.text();
throw new Error(`Gemini API retornou erro: ${response.status} - ${errorText}`); throw new Error(`Gemini API retornou erro: ${response.status} - ${errorText}`);