lifekline / server /testApi.js
xiaobo ren
Fix API key handling: clean whitespace/newlines, update test models to use correct names
8602f0b
/**
* API 连接测试端点
*/
import { buildApiRequest, parseApiResponse, getApiConfigForModel } from './apiConfig.js';
import fetch from 'node-fetch';
export async function testAllApis() {
const testModels = [
{ name: 'gpt-4o', provider: 'OpenAI' },
{ name: 'grok-4-0709', provider: 'Grok' },
{ name: 'claude-sonnet-4-5', provider: 'Claude' },
{ name: 'gemini-2.5-flash', provider: 'Gemini' },
];
const results = [];
for (const { name, provider } of testModels) {
try {
console.log(`测试 ${provider} (${name})...`);
const config = getApiConfigForModel(name);
const testPrompt = 'Say "Hello" in one word.';
const apiRequest = buildApiRequest(name, 'You are a helpful assistant.', testPrompt, 0.7);
const startTime = Date.now();
const response = await fetch(apiRequest.url, {
method: 'POST',
headers: apiRequest.headers,
body: JSON.stringify(apiRequest.body),
});
const elapsed = ((Date.now() - startTime) / 1000).toFixed(2);
if (!response.ok) {
const errorText = await response.text();
results.push({
provider,
model: name,
status: 'FAILED',
statusCode: response.status,
error: errorText.substring(0, 200),
elapsed,
});
continue;
}
const data = await response.json();
const content = parseApiResponse(data, name);
results.push({
provider,
model: name,
status: 'SUCCESS',
statusCode: response.status,
response: content?.substring(0, 100) || 'Empty response',
elapsed,
});
} catch (error) {
results.push({
provider,
model: name,
status: 'ERROR',
error: error.message,
});
}
}
return results;
}