错误信息: 堆栈信息: AI_APICallError at file:///D:/cherry/Cherry%20Studio/resources/app.a...

2025年10月05日 05:06 响应: 5.05秒 状态: success

🚨 错误信息

错误名称: AI_APICallError 错误信息: 堆栈信息: AI_APICallError at file:///D:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/dist-DljPbAPG.js:4470:11 at async postToApi (file:///D:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/dist-DljPbAPG.js:4352:24) at async GoogleGenerativeAILanguageModel.doStream (file:///D:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-D-H00nsq.js:49668:48) at async fn (file:///D:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-D-H00nsq.js:39723:17) at async file:///D:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-D-H00nsq.js:37132:19 at async _retryWithExponentialBackoff (file:///D:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-D-H00nsq.js:37234:10) at async streamStep (file:///D:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-D-H00nsq.js:39691:108) at async fn (file:///D:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-D-H00nsq.js:39970:5) at async file:///D:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-D-H00nsq.js:37132:19 错误原因: "[undefined]" 状态码: 400 请求路径: https://newapi.sisuo.de/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse 请求体: { "generationConfig": { "maxOutputTokens": "[undefined]", "temperature": 1, "topK": "[undefined]", "topP": 1, "frequencyPenalty": "[undefined]", "presencePenalty": "[undefined]", "stopSequences": "[undefined]", "seed": "[undefined]", "responseMimeType": "[undefined]", "responseSchema": "[undefined]", "responseModalities": "[undefined]", "thinkingConfig": { "thinkingBudget": 16448, "includeThoughts": true } }, "contents": [ { "role": "user", "parts": [ { "text": "你好" } ] } ], "systemInstruction": "[undefined]", "safetySettings": "[undefined]", "tools": { "urlContext": {} }, "toolConfig": "[undefined]", "cachedContent": "[undefined]", "labels": "[undefined]" } 响应首部: { "cache-control": "no-cache", "content-type": "text/event-stream", "date": "Sat, 04 Oct 2025 21:04:29 GMT", "server": "nginx", "x-oneapi-request-id": "20251005050429309256000Lj6qBOlH" } 响应内容: { "error": { "message": "json: cannot unmarshal object into Go struct field ***.tools of type []***.GeminiChatTools (request id: 20251005050437180791311xCQAg7VF)", "type": "upstream_error", "param": "", "code": 400 } } 数据: "[undefined]"

🤖 AI解决方案

错误信息: 
"json: cannot unmarshal object into Go struct field ***.tools of type []***.GeminiChatTools"

原因分析

API 请求中的 tools 字段格式不正确,期望的是一个数组([]GeminiChatTools),但实际传入的是一个对象({ urlContext: {} })。

解决方案

修改请求体中 tools 字段的结构,使其符合 API 的要求。如果 urlContext 是你想要传递的工具配置,需要将其包装成一个符合 GeminiChatTools 类型的数组。

// 假设 GeminiChatTools 的结构类似于 { type: '...', function: { ... } }
// 如果你的 urlContext 应该被视为一种工具,你需要这样构造:

// 示例:如果 urlContext 是一种特定的工具类型,例如 'url_retrieval'
"tools": [
  {
    "type": "url_retrieval", // 或者你的工具实际的类型
    "urlContext": {} // 如果 urlContext 本身就是一个参数
  }
],

// 或者,如果 tools 应该是一个空数组,表示不使用任何工具:
"tools": [],

// 请根据你实际的 API 文档和需求来调整 tools 字段的结构。
// 如果没有明确的工具配置,直接将其设置为空数组是最稳妥的。

预防措施

  • 查阅 API 文档:在发送请求前,务必仔细阅读 DMXAPI 或 Gemini API 的官方文档,确认 tools 字段的正确类型和结构。
  • 校验请求体:在代码中对要发送的请求体进行预先校验,确保所有字段的类型和格式都符合 API 规范。