版本: 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 请求阶段。
复现路径:
配置 Gemini provider 和 Gemini API key
启用帮我说模式
长按触发 VoiceAssistant
闪电说注册 14 个 tools 后向 Gemini 发请求
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.
In Review
Feature Request
17 days ago

araragi
Get notified by email when there are changes.
In Review
Feature Request
17 days ago

araragi
Get notified by email when there are changes.