Gemini 帮我说模式请求格式错误: function_declarations 里 array 缺少 items

版本: v0.7.0-beta.1 系统: macOS 模式: 帮我说 / VoiceAssistant Provider: Gemini 测试模型:

  • gemini-3.1-pro-preview

  • gemini-3.5-flash

  • gemini-3.1-flash-lite

现象: 使用“帮我说”时弹出“AI 助手调用失败: 请求格式错误, 请检查模型配置”。

日志里的实际错误是:

GenerateContentRequest.tools[0].function_declarations[n].parameters.properties[steps].items: missing field

这不是 API key 或模型名问题。Gemini 能正常响应普通 generateContent 请求, 失败发生在带 tools 的 agent 请求阶段。

复现路径:

  1. 配置 Gemini provider 和 Gemini API key

  2. 启用帮我说模式

  3. 长按触发 VoiceAssistant

  4. 闪电说注册 14 个 tools 后向 Gemini 发请求

  5. Gemini 返回 400 INVALID_ARGUMENT

日志片段:

[Agent LLM] provider=gemini, model=gemini-3.1-flash-lite, messages=2, tools=14 API error 400 Bad Request: GenerateContentRequest.tools[0].function_declarations[n].parameters.properties[steps].items: missing field

判断: 某个 tool 的 JSON schema 里 steps 是 array, 但没有提供 items。Gemini 对 function_declarations 的 schema 校验比较严格, 因此直接拒绝请求。

可能相关: 内置 plan/update_plan 类工具的 steps 参数。描述里有 “Ordered list of plan steps”, 但发送给 Gemini 的 schema 似乎缺少:

items: { type: "object", properties: { step: { type: "string" }, status: { type: "string", enum: ["pending", "in_progress", "completed"] } }, required: ["step", "status"] }

期望: Gemini provider 下的所有 function_declarations 都生成合法 JSON schema。至少 array 类型必须带 items。这样帮我说模式可以在 Gemini 路径下正常使用。

临时验证: 我本地用一个 proxy 只做 schema 修正: 遇到 type=array 但缺 items 就补 items={}, 然后原样转发到 Gemini。补完后 Gemini 请求可以通过, 说明问题集中在 tools schema 生成, 不是 Gemini key 或模型不可用。

Please authenticate to join the conversation.

Upvoters
Status

In Review

Board
💡

Feature Request

Date

17 days ago

Author

araragi

Subscribe to post

Get notified by email when there are changes.