ebayDeepScan/test_access.js

58 lines
1.8 KiB
JavaScript

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);
});