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
Build and Deploy (Gitea) / build-and-deploy (push) Successful in 2m5s
Details
This commit is contained in:
parent
f04dea7e8a
commit
50eafc51bd
|
|
@ -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}`);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue