Fix: Atualizar modelo do Groq e validar todas as chaves de API
This commit is contained in:
@@ -6,7 +6,7 @@ SESSION_SECRET=pedagog-secret-key-321123
|
|||||||
MINIMAX_API_KEY=sk-cp-siEwoNh9WA3Prxe6frpJ2HsXPje-gjt5jObhHloqqoO0FX0i9yP54N3zhY492GKu18l9XiANDiCoECU3t0uMtRODvkzzi93A2Rmtco6MjATrKNOEDR_bxa4
|
MINIMAX_API_KEY=sk-cp-siEwoNh9WA3Prxe6frpJ2HsXPje-gjt5jObhHloqqoO0FX0i9yP54N3zhY492GKu18l9XiANDiCoECU3t0uMtRODvkzzi93A2Rmtco6MjATrKNOEDR_bxa4
|
||||||
MINIMAX_API_BASE=https://api.minimax.io/v1
|
MINIMAX_API_BASE=https://api.minimax.io/v1
|
||||||
GROQ_API_KEY=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
|
GROQ_API_KEY=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
|
||||||
GROQ_MODEL=llama-3.3-70b-versatile
|
GROQ_MODEL=openai/gpt-oss-120b
|
||||||
|
|
||||||
GOOGLE_AI_API_KEY=AIzaSyACelmI6-Bxc7TZ0sAzzgLd_F8VBexOjcQ
|
GOOGLE_AI_API_KEY=AIzaSyACelmI6-Bxc7TZ0sAzzgLd_F8VBexOjcQ
|
||||||
GOOGLE_AI_MODEL=gemini-2.5-flash
|
GOOGLE_AI_MODEL=gemini-2.5-flash
|
||||||
|
|||||||
@@ -0,0 +1,183 @@
|
|||||||
|
require('dotenv').config({ path: '/root/Apps/Camila/.env' });
|
||||||
|
const { Pool } = require('pg');
|
||||||
|
|
||||||
|
async function testAll() {
|
||||||
|
const results = [];
|
||||||
|
|
||||||
|
// 1. Test PostgreSQL Database
|
||||||
|
try {
|
||||||
|
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
||||||
|
const res = await pool.query('SELECT NOW() as now, current_database() as db;');
|
||||||
|
await pool.end();
|
||||||
|
results.push({
|
||||||
|
service: 'PostgreSQL (Supabase DB)',
|
||||||
|
status: '✅ OK',
|
||||||
|
details: `Conectado ao banco "${res.rows[0].db}" em ${res.rows[0].now}`
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
results.push({
|
||||||
|
service: 'PostgreSQL (Supabase DB)',
|
||||||
|
status: '❌ ERRO',
|
||||||
|
details: err.message
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Test MiniMax
|
||||||
|
try {
|
||||||
|
const minmBase = (process.env.MINIMAX_API_BASE || 'https://api.minimax.io/v1').replace(/\/v1\/?$/, '');
|
||||||
|
const model = process.env.MINIMAX_MODEL || 'MiniMax-M3';
|
||||||
|
const res = await fetch(`${minmBase}/v1/chat/completions`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${process.env.MINIMAX_API_KEY}`,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
model: model,
|
||||||
|
messages: [{ role: 'user', content: 'Diga "ok"' }],
|
||||||
|
max_tokens: 10
|
||||||
|
})
|
||||||
|
});
|
||||||
|
if (res.ok) {
|
||||||
|
const data = await res.json();
|
||||||
|
const answer = data.choices?.[0]?.message?.content || JSON.stringify(data);
|
||||||
|
results.push({
|
||||||
|
service: `MiniMax (${model})`,
|
||||||
|
status: '✅ OK',
|
||||||
|
details: `Resposta: "${answer.trim()}"`
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const txt = await res.text();
|
||||||
|
results.push({
|
||||||
|
service: `MiniMax (${model})`,
|
||||||
|
status: `❌ HTTP ${res.status}`,
|
||||||
|
details: txt
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
results.push({
|
||||||
|
service: 'MiniMax',
|
||||||
|
status: '❌ ERRO',
|
||||||
|
details: err.message
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Test Groq
|
||||||
|
try {
|
||||||
|
const model = process.env.GROQ_MODEL || 'llama-3.3-70b-versatile';
|
||||||
|
const res = await fetch('https://api.groq.com/openai/v1/chat/completions', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${process.env.GROQ_API_KEY}`,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
model: model,
|
||||||
|
messages: [{ role: 'user', content: 'Diga "ok"' }],
|
||||||
|
max_tokens: 10
|
||||||
|
})
|
||||||
|
});
|
||||||
|
if (res.ok) {
|
||||||
|
const data = await res.json();
|
||||||
|
const answer = data.choices?.[0]?.message?.content || JSON.stringify(data);
|
||||||
|
results.push({
|
||||||
|
service: `Groq (${model})`,
|
||||||
|
status: '✅ OK',
|
||||||
|
details: `Resposta: "${answer.trim()}"`
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const txt = await res.text();
|
||||||
|
results.push({
|
||||||
|
service: `Groq (${model})`,
|
||||||
|
status: `❌ HTTP ${res.status}`,
|
||||||
|
details: txt
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
results.push({
|
||||||
|
service: 'Groq',
|
||||||
|
status: '❌ ERRO',
|
||||||
|
details: err.message
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. Test OpenRouter
|
||||||
|
try {
|
||||||
|
const model = process.env.OPENROUTER_MODEL || 'openai/gpt-4.1-nano';
|
||||||
|
const res = await fetch('https://openrouter.ai/api/v1/chat/completions', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${process.env.OPENROUTER_API_KEY}`,
|
||||||
|
'HTTP-Referer': 'https://pedagog.app',
|
||||||
|
'X-Title': 'Pedagog AI Test',
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
model: model,
|
||||||
|
messages: [{ role: 'user', content: 'Diga "ok"' }],
|
||||||
|
max_tokens: 10
|
||||||
|
})
|
||||||
|
});
|
||||||
|
if (res.ok) {
|
||||||
|
const data = await res.json();
|
||||||
|
const answer = data.choices?.[0]?.message?.content || JSON.stringify(data);
|
||||||
|
results.push({
|
||||||
|
service: `OpenRouter (${model})`,
|
||||||
|
status: '✅ OK',
|
||||||
|
details: `Resposta: "${answer.trim()}"`
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const txt = await res.text();
|
||||||
|
results.push({
|
||||||
|
service: `OpenRouter (${model})`,
|
||||||
|
status: `❌ HTTP ${res.status}`,
|
||||||
|
details: txt
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
results.push({
|
||||||
|
service: 'OpenRouter',
|
||||||
|
status: '❌ ERRO',
|
||||||
|
details: err.message
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. Test Google Gemini AI
|
||||||
|
try {
|
||||||
|
const model = process.env.GOOGLE_AI_MODEL || 'gemini-2.5-flash';
|
||||||
|
const apiKey = process.env.GOOGLE_AI_API_KEY;
|
||||||
|
const res = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({
|
||||||
|
contents: [{ parts: [{ text: 'Diga "ok"' }] }]
|
||||||
|
})
|
||||||
|
});
|
||||||
|
if (res.ok) {
|
||||||
|
const data = await res.json();
|
||||||
|
const answer = data.candidates?.[0]?.content?.parts?.[0]?.text || JSON.stringify(data);
|
||||||
|
results.push({
|
||||||
|
service: `Google Gemini (${model})`,
|
||||||
|
status: '✅ OK',
|
||||||
|
details: `Resposta: "${answer.trim()}"`
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const txt = await res.text();
|
||||||
|
results.push({
|
||||||
|
service: `Google Gemini (${model})`,
|
||||||
|
status: `❌ HTTP ${res.status}`,
|
||||||
|
details: txt
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
results.push({
|
||||||
|
service: 'Google Gemini',
|
||||||
|
status: '❌ ERRO',
|
||||||
|
details: err.message
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(JSON.stringify(results, null, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
testAll();
|
||||||
Reference in New Issue
Block a user