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