错误信息: 堆栈信息: AI_APICallError at file:///D:/cherry/Cherry%20Studio/resources/app.a...
🚨 错误信息
错误名称: 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 规范。