⚡ feat: adicionado fallback MiniMax-M2.7 no Smart Router e formatador de relatórios
This commit is contained in:
@@ -401,8 +401,37 @@ Retorne APENAS o JSON válido:`;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fallback para MiniMax se OpenRouter, Groq e Google Gemini falharem
|
||||||
|
if (!rawContent && process.env.MINIMAX_API_KEY) {
|
||||||
|
try {
|
||||||
|
console.log('[Smart Report] Usando MiniMax-M2.7 como fallback para gerar relatório...');
|
||||||
|
const reportRes = await fetch('https://api.minimaxi.chat/v1/chat/completions', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${process.env.MINIMAX_API_KEY}`,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
model: 'MiniMax-M2.7',
|
||||||
|
messages: [{ role: 'user', content: reportPrompt }],
|
||||||
|
temperature: 0.5,
|
||||||
|
max_tokens: 1500
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
if (reportRes.ok) {
|
||||||
|
const reportData = await reportRes.json();
|
||||||
|
rawContent = reportData.choices?.[0]?.message?.content || '';
|
||||||
|
} else {
|
||||||
|
console.warn('[Smart Report] Falha no MiniMax:', await reportRes.text());
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.error('[Smart Report] Erro de conexão com MiniMax:', err.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!rawContent) {
|
if (!rawContent) {
|
||||||
throw new Error('Falha ao processar o relatório pedagógico em todos os provedores de IA (OpenRouter, Groq e Google Gemini).');
|
throw new Error('Falha ao processar o relatório pedagógico em todos os provedores de IA (OpenRouter, Groq, Google Gemini e MiniMax-M2.7).');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse JSON da resposta
|
// Parse JSON da resposta
|
||||||
@@ -1643,6 +1672,29 @@ app.post('/api/chat', requireAuth, async (req, res) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Se o OpenRouter, Groq e Google Gemini falharem ou retornarem erro, caímos no fallback do MiniMax M2.7
|
||||||
|
if ((!chatResponse || !chatResponse.ok) && process.env.MINIMAX_API_KEY) {
|
||||||
|
console.log('[Smart Router] Usando MiniMax-M2.7 como fallback de streaming de texto...');
|
||||||
|
providerUsed = 'MiniMax M2.7';
|
||||||
|
try {
|
||||||
|
chatResponse = await fetch('https://api.minimaxi.chat/v1/chat/completions', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${process.env.MINIMAX_API_KEY}`,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
model: 'MiniMax-M2.7',
|
||||||
|
messages: enrichedMessages,
|
||||||
|
stream: true,
|
||||||
|
temperature
|
||||||
|
})
|
||||||
|
});
|
||||||
|
} catch (minimaxErr) {
|
||||||
|
console.error('[Smart Router] Erro crítico: Falha no fallback do MiniMax M2.7 também:', minimaxErr.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!chatResponse || !chatResponse.ok) {
|
if (!chatResponse || !chatResponse.ok) {
|
||||||
const errorText = chatResponse ? await chatResponse.text() : 'Sem conexão com os servidores de IA';
|
const errorText = chatResponse ? await chatResponse.text() : 'Sem conexão com os servidores de IA';
|
||||||
console.error(`Erro na API de IA (${providerUsed}):`, errorText);
|
console.error(`Erro na API de IA (${providerUsed}):`, errorText);
|
||||||
|
|||||||
Reference in New Issue
Block a user