错误信息: openai_error 堆栈信息: AI_APICallError: openai_error at file:///D:/%E8%BD%AF%E...

2026年03月14日 15:08 状态: processing

🚨 错误信息

错误名称: AI_APICallError 错误信息: openai_error 堆栈信息: AI_APICallError: openai_error at file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/dist-B9rPABmV.js:2082:11 at async postToApi (file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/dist-B9rPABmV.js:1977:24) at async OpenAICompatibleChatLanguageModel.doStream (file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/dist-CAQbAROO.js:451:48) at async wrapStream (file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/store-Dg8vqSku.js:54870:32) at async fn (file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/store-Dg8vqSku.js:53736:17) at async file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/store-Dg8vqSku.js:50090:19 at async _retryWithExponentialBackoff (file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/store-Dg8vqSku.js:50253:10) at async streamStep (file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/store-Dg8vqSku.js:53705:109) at async fn (file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/store-Dg8vqSku.js:54011:5) at async file:///D:/%E8%BD%AF%E4%BB%B6/Cherry%20Studio-GPT/resources/app.asar/out/renderer/assets/store-Dg8vqSku.js:50090:19 错误原因: "[undefined]" 状态码: 504 请求路径: https://api301.com/v1/chat/completions 请求体: { "model": "gpt-5.1-codex", "user": "[undefined]", "max_tokens": "[undefined]", "temperature": "[undefined]", "top_p": "[undefined]", "frequency_penalty": "[undefined]", "presence_penalty": "[undefined]", "response_format": "[undefined]", "stop": "[undefined]", "seed": "[undefined]", "serviceTier": "[undefined]", "reasoning_effort": "[undefined]", "verbosity": "[undefined]", "messages": [ { "role": "user", "content": "我是一名闲鱼商家:做中转站,销售claude api 。我们的优势是上游用claude max20X号作为号池供应给客户使用。请帮我整理一份客服话术,关于大量客户咨询claude api相关的问题,和相关回答" } ], "tools": "[undefined]", "tool_choice": "[undefined]", "stream": true, "stream_options": { "include_usage": true } } 响应首部: { "cache-control": "no-cache", "content-type": "text/event-stream", "date": "Sat, 14 Mar 2026 07:07:36 GMT", "document-policy": "include-js-call-stacks-in-crash-reports", "server": "nginx", "x-new-api-version": "v0.11.2-alpha.1", "x-oneapi-request-id": "20260314070636219086150lBMFpq70" } 响应内容: { "error": { "message": "openai_error", "type": "bad_response_status_code", "param": "", "code": "bad_response_status_code" } } 数据: { "error": { "message": "openai_error", "type": "bad_response_status_code", "param": "", "code": "bad_response_status_code" } }

🤖 AI解决方案

报错分析报告

1.错误翻译



原文:AI_APICallError: openai_error
译文:AI_APICallError:openai错误

2.原因分析


  • 根本原因:调用OpenAI兼容API时,请求体含多个[undefined]无效参数,且遭遇504网关超时,API返回bad_response_status_code错误。

  • 发生位置postToApi函数调用OpenAICompatibleChatLanguageModel.doStream的异步流请求中(堆栈第2-3行)。

  • 上下文:请求路径https://api301.com/v1/chat/completions可能无效,且user/max_tokens等核心参数未定义。
  • 3.解决方案


    javascript
    // 修复后的请求构造与发送逻辑(JavaScript示例)
    async function callChatAPI() {
    // 1. 构造有效请求体(移除undefined字段+设默认值)
    const requestBody = {
    model: "gpt-5.1-codex",
    messages: [{
    role: "user",
    content: "我是一名闲鱼商家:做中转站,销售claude api...请整理客服话术"
    }],
    stream: true,
    stream_options: { include_usage: true },
    temperature: 0.7, // 补充合理默认值
    max_tokens: 2000
    };

    // 2. 过滤undefined字段(可选,确保安全)
    const cleanBody = Object.fromEntries(
    Object.entries(requestBody).filter(([_, v]) => v !== undefined)
    );

    // 3. 使用正确API端点(替换无效的api301.com为官方/可用地址)
    try {
    const response = await fetch("https://api.openai.com/v1/chat/completions", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(cleanBody)
    });
    return response;
    } catch (err) {
    console.error("API调用失败:", err);
    }
    }

    4. 预防措施


  • 参数校验:请求前用Object.entries().filter()移除undefined字段,或为必填项设默认值(如temperature: 0.7)。

  • 工具辅助:用Postman预测试API端点/参数有效性,避免无效请求;用ESLint检测未定义变量。

  • 超时控制:给fetchAbortController设置超时(如10秒),避免无限等待。
  • ---
    :若仍报错,需确认api301.com是否为合法代理端点(建议切换至官方API)。