Failed after 3 attempts. Last error: limit_error (request id: 202604021658101864...

2026年04月02日 16:59 processing

错误信息

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. 原因分析


  • 根本原因:请求触发了服务端限制(如速率限制、配额耗尽),连续3次重试均失败。

  • 发生位置_retryWithExponentialBackoff 重试函数中,第3次尝试后返回最终错误 limit_error

  • 上下文:调用AI服务时未遵守其速率/配额规则,导致被限流。
  • 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. 预防措施


  • 最佳实践1:调用前查询API文档的速率限制(如QPS、日配额),用工具(如Postman)测试边界。

  • 最佳实践2:集成速率限制库(如axios-rate-limitbottleneck),自动管控请求频率;或用监控系统(如Prometheus)跟踪用量。
  • :若需进一步调整,请提供API服务商的限制规则细节。