错误信息: upstream error: do request failed (request id: 20260103204432591660753Mp1r...

2026年01月03日 20:50 状态: processing

🚨 错误信息

错误名称: AI_APICallError 错误信息: upstream error: do request failed (request id: 20260103204432591660753Mp1rvxbJ) 堆栈信息: AI_APICallError: upstream error: do request failed (request id: 20260103204432591660753Mp1rvxbJ) at file:///C:/Users/86153/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/dist-K3A05YNJ.js:543:11 at async postToApi (file:///C:/Users/86153/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/dist-K3A05YNJ.js:439:24) at async OpenAICompatibleChatLanguageModel$1.doStream (file:///C:/Users/86153/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-e4Pmzkul.js:253086:48) at async fn (file:///C:/Users/86153/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-e4Pmzkul.js:37120:17) at async file:///C:/Users/86153/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-e4Pmzkul.js:34498:19 at async _retryWithExponentialBackoff (file:///C:/Users/86153/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-e4Pmzkul.js:34600:10) at async streamStep (file:///C:/Users/86153/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-e4Pmzkul.js:37088:108) at async fn (file:///C:/Users/86153/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-e4Pmzkul.js:37367:5) at async file:///C:/Users/86153/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-e4Pmzkul.js:34498:19 错误原因: "[undefined]" 状态码: 500 请求路径: https://www.dmxapi.cn/v1/chat/completions 请求体: { "model": "claude-3-5-sonnet-20241022", "user": "[undefined]", "max_tokens": "[undefined]", "temperature": 1, "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": "在宏观的建筑生长角度,从控制建筑的生长密度和控制建筑的生长类型角度出发,分别有一些什么样的约束条件,(比如物理环境的舒适度需求,人体的舒适度需求),请分别给我至少约束条件" } ], "tools": "[undefined]", "tool_choice": "[undefined]", "stream": true, "stream_options": { "include_usage": true } } 响应首部: { "cache-control": "no-cache", "content-type": "text/event-stream", "date": "Sat, 03 Jan 2026 12:49:46 GMT", "document-policy": "include-js-call-stacks-in-crash-reports", "server": "nginx", "x-rixapi-request-id": "20260103204938359922572uhfpm1Ae" } 响应内容: { "error": { "message": "upstream error: do request failed (request id: 20260103204432591660753Mp1rvxbJ)", "type": "rix_api_error", "param": "", "code": null } } 数据: { "error": { "message": "upstream error: do request failed (request id: 20260103204432591660753Mp1rvxbJ)", "type": "rix_api_error", "param": "", "code": null } }

🤖 AI解决方案

AI API调用错误分析报告

1. 错误翻译



原文:upstream error: do request failed
译文:上游错误:执行请求失败

2. 原因分析

这是一个典型的上游API服务错误,核心问题如下:

主要问题:


  • 上游服务故障:DMXAPI平台的后端服务在处理请求时失败

  • 状态码500:服务器内部错误,表明问题在服务端而非客户端

  • 请求参数问题:多个参数值为"[undefined]"字符串而非实际的undefined或有效值
  • 关键发现:


  • 请求体格式异常:多个参数被错误地设置为字符串"[undefined]"而不是真正的undefined

  • 代理层错误:Cherry Studio通过DMXAPI调用Claude-3-5-Sonnet模型时,中间层出现问题

  • 请求ID完整链路20260103204432591660753Mp1rvxbJ20260103204938359922572uhfpm1Ae
  • 3. 解决方案

    客户端修复(Cherry Studio端):


    javascript
    // 修复前的错误参数设置
    const wrongParams = {
    user: "[undefined]", // ❌ 错误:字符串"[undefined]"
    max_tokens: "[undefined]", // ❌ 应该为undefined或数字
    // ... 其他参数
    };

    // 修复后的正确设置
    const correctParams = {
    user: undefined, // ✅ 正确:真正的undefined
    max_tokens: undefined, // ✅ 或设置为有效数值如4096
    temperature: 1,
    top_p: undefined, // ✅ 使用undefined而不是字符串
    frequency_penalty: undefined,
    presence_penalty: undefined,
    response_format: undefined,
    stop: undefined,
    seed: undefined,
    serviceTier: undefined,
    reasoning_effort: undefined,
    verbosity: undefined,
    model: "claude-3-5-sonnet-20241022",
    messages: [
    {
    role: "user",
    content: "在宏观的建筑生长角度,从控制建筑的生长密度和控制建筑的生长类型角度出发,分别有一些什么样的约束条件,(比如物理环境的舒适度需求,人体的舒适度需求),请分别给我至少约束条件"
    }
    ],
    tools: undefined,
    tool_choice: undefined,
    stream: true,
    stream_options: {
    include_usage: true
    }
    };

    临时处理方案:


    ``javascript
    // 1. 清理请求参数
    function cleanApiParams(params) {
    const cleaned = { ...params };

    // 移除所有值为"[undefined]"的参数
    Object.keys(cleaned).forEach(key => {
    if (cleaned[key] === "[undefined]") {
    delete cleaned[key];
    }
    });

    return cleaned;
    }

    // 2. 重试机制
    async function callApiWithRetry(apiCall, maxRetries = 3) {
    for (let i = 0; i < maxRetries; i++) {
    try {
    return await apiCall();
    } catch (error) {
    if (error.statusCode === 500 && i < maxRetries - 1) {
    console.log(
    API调用失败,${i+1}秒后重试...);
    await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)));
    } else {
    throw error;
    }
    }
    }
    }

    4. ️ 预防措施

    ️ 最佳实践:


  • 参数验证:在发送API请求前,验证所有参数类型

  • javascript
    function validateApiParams(params) {
    const allowedUndefined = ['user', 'tools', 'tool_choice'];

    Object.entries(params).forEach(([key, value]) => {
    if (value === "[undefined]" || (value === undefined && !allowedUndefined.includes(key))) {
    console.warn(
    参数 ${key} 存在潜在问题:, value);
    }
    });
    }

  • 错误处理优化:添加更详细的错误日志记录

  • javascript
    try {
    const response = await fetch(apiUrl, options);
    if (!response.ok) {
    const errorText = await response.text();
    console.error(
    API响应异常:
    状态码: ${response.status}
    请求ID: ${response.headers.get('x-request-id')}
    错误详情: ${errorText});
    }
    return await response.json();
    } catch (error) {
    console.error('API调用失败:', {
    错误类型: error.name,
    错误信息: error.message,
    请求URL: apiUrl,
    时间戳: new Date().toISOString()
    });
    throw error;
    }
    ``

    监控建议:


  • 记录所有请求ID:便于跟踪完整的请求链路

  • 设置API健康检查:定期测试DMXAPI服务可用性

  • 使用参数清理中间件:确保发送到API的数据格式正确
  • 调试工具推荐:


  • Postman/Insomnia:手动测试API端点

  • Charles Proxy/Fiddler:抓包分析请求响应

  • Chrome DevTools Network面板:实时监控API调用
  • ---

    关键提示:此错误主要由服务端引起,但客户端不正确的参数格式可能触发服务端的异常处理路径。建议先修复参数格式,如果问题持续存在,联系DMXAPI技术支持并提供完整的请求ID链路。