{"message":"502 status code (no body)","status":502,"modelId":"gpt-5.6-luna","pr...
错误信息
{"message":"502 status code (no body)","status":502,"modelId":"gpt-5.6-luna","providerId":"openai"}
AI 解决方案
🔍 错误分析
1. 🌐 错误翻译
原文:502 status code (no body)
译文:502 状态码(无响应体)
2. 🎯 原因分析
这是API网关层面的服务不可用错误,根本原因在于:
3. 💡 解决方案
#### 立即处理步骤
# 1. 检查OpenAI服务状态
# 访问 OpenAI Status 页面查看服务是否正常
# 2. 重试请求(建议指数退避)
# 添加重试逻辑,处理临时性服务故障
// 推荐:使用重试机制处理502错误
async function callOpenAIWithRetry(modelId, providerId, prompt) {
const MAX_RETRIES = 3;
const BASE_DELAY = 1000;
for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
try {
const response = await fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: modelId,
messages: [{ role: 'user', content: prompt }],
}),
});
if (response.status === 502) {
const delay = BASE_DELAY * Math.pow(2, attempt - 1);
console.log(`请求失败,${delay}ms 后重试...`);
await new Promise(resolve => setTimeout(resolve, delay));
continue;
}
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return await response.json();
} catch (error) {
if (attempt === MAX_RETRIES) throw error;
console.log(`请求异常,第${attempt}次重试...`);
}
}
}
// 调用示例
callOpenAIWithRetry('gpt-5.6-luna', 'openai', 'Hello!');
#### 替代方案
// 当OpenAI服务不稳定时,切换到备用provider
const providers = ['openai', 'anthropic', 'gemini'];
async function callWithFallback(modelId, providerId, prompt) {
for (const provider of providers) {
try {
// 实现具体的provider调用逻辑
return await callProvider(provider, modelId, prompt);
} catch (error) {
console.warn(`Provider ${provider} 不可用,尝试下一个...`);
continue;
}
}
throw new Error('所有provider均不可用');
}
4. 🛡️ 预防措施
#### 🔧 最佳实践
#### 🛠️ 推荐工具
retry、p-retry 等成熟的重试库,内置指数退避和熔断策略