diff --git a/.env b/.env index 6b9296d..71201af 100644 --- a/.env +++ b/.env @@ -6,7 +6,7 @@ SESSION_SECRET=pedagog-secret-key-321123 MINIMAX_API_KEY=sk-cp-siEwoNh9WA3Prxe6frpJ2HsXPje-gjt5jObhHloqqoO0FX0i9yP54N3zhY492GKu18l9XiANDiCoECU3t0uMtRODvkzzi93A2Rmtco6MjATrKNOEDR_bxa4 MINIMAX_API_BASE=https://api.minimax.io/v1 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_MODEL=gemini-2.5-flash diff --git a/scratch/test_keys.js b/scratch/test_keys.js new file mode 100644 index 0000000..e86239d --- /dev/null +++ b/scratch/test_keys.js @@ -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();