require('dotenv').config(); const axios = require('axios'); async function testOpenAI() { const API_KEY = process.env.OPENAI_API_KEY; const MODEL = process.env.OPENAI_MODEL || 'gpt-4o-mini'; console.log('=== OpenAI API Access Test ==='); console.log(`Model : ${MODEL}`); console.log(`API Key : ${API_KEY ? API_KEY.slice(0, 7) + '...' + API_KEY.slice(-4) : '(not set)'}`); console.log(''); if (!API_KEY) { console.log('❌ OPENAI_API_KEY not set in .env'); process.exit(1); } try { const res = await axios.post( 'https://api.openai.com/v1/chat/completions', { model: MODEL, max_tokens: 16, messages: [{ role: 'user', content: 'Reply with: OK' }], }, { headers: { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json', }, timeout: 15000, } ); const reply = res.data.choices?.[0]?.message?.content?.trim(); const usage = res.data.usage; const model = res.data.model; console.log(`✅ Connected`); console.log(` Model : ${model}`); console.log(` Response : ${reply}`); console.log(` Tokens used : ${usage?.total_tokens} (prompt ${usage?.prompt_tokens} + completion ${usage?.completion_tokens})`); console.log(` Est. cost : $${((usage?.prompt_tokens / 1_000_000) * 0.15 + (usage?.completion_tokens / 1_000_000) * 0.60).toFixed(6)}`); } catch (err) { const status = err.response?.status; const msg = err.response?.data?.error?.message || err.message; const code = err.response?.data?.error?.code || ''; console.log(`❌ FAILED — HTTP ${status} ${code}: ${msg}`); } console.log('\n=== Done ==='); } testOpenAI().catch(err => { console.error('Fatal:', err.message); process.exit(1); });