Failed after 3 attempts. Last error: limit_error (request id: 202604021658101864...
错误信息
AI_RetryError: Failed after 3 attempts. Last error: limit_error (request id: 20260402165810186405918EXI0xh8M)
at _retryWithExponentialBackoff (file:///D:/app/ai/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BlW_UB3I.js:44004:37)
at async streamStep (file:///D:/app/ai/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BlW_UB3I.js:47449:109)
at async fn (file:///D:/app/ai/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BlW_UB3I.js:47755:5)
at async file:///D:/app/ai/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BlW_UB3I.js:43834:19
AI 解决方案
报错分析报告
1.错误翻译
原文:Failed after 3 attempts. Last error: limit_error
译文:尝试3次后失败。最后一个错误:限制错误
2. 原因分析
_retryWithExponentialBackoff 重试函数中,第3次尝试后返回最终错误 limit_error。 3.解决方案
// 修复思路:捕获limit_error并延长等待,或降低请求频率
async function safeRequest(apiCall, maxRetries = 3, baseDelay = 2000) {
for (let i = 0; i < maxRetries; i++) {
try {
return await apiCall();
} catch (err) {
if (err.message.includes("limit_error") && i < maxRetries - 1) {
// 遇到限流时,指数退避+额外延迟(如原基础延迟×2^i + 随机抖动)
const delay = baseDelay * Math.pow(2, i) + Math.random() * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
continue;
}
throw err; // 非限流错误或已达最大重试次数,抛出原错误
}
}
}
// 使用示例:包装原AI请求
safeRequest(() => yourOriginalApiCall())
.then(res => console.log(res))
.catch(err => console.error("最终失败:", err));
4. 预防措施
axios-rate-limit、bottleneck),自动管控请求频率;或用监控系统(如Prometheus)跟踪用量。 注:若需进一步调整,请提供API服务商的限制规则细节。