Skip to content

关闭思考时请求体携带 reasoning_effort: "none",Gemini OpenAI 兼容端点 400,且兜底重试未生效 #439

Description

@lancelotlee

环境

  • SmartSub 版本:3.7
  • 操作系统:Windows

复现步骤

  1. 添加 Gemini provider:
    • apiUrl:https://generativelanguage.googleapis.com/v1beta/openai/
    • modelName:gemini-3.6-flash-lite(或 gemini-3.6-flash
    • enableThinking(启用思考):关闭
    • 填好 API key
  2. 对 1 条字幕(如 Hello)执行翻译/测试。

实际行为

  • 报错:OpenAI translation failed: 400 status code (no body)
  • 界面上提示"已自动尝试所有结构化输出模式仍然失败"
  • 抓包确认请求体携带:
{
  "model": "gemini-3.6-flash-lite",
  "messages": [...],
  "temperature": 0.3,
  "stream": false,
  "reasoning_effort": "none"
}
  • Gemini 实际返回(错误体为数组,openai-node 因而显示为 "no body"):
[{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT"
  }
}]
  • json_schema / json_object / 标准 三种模式全部失败,因为该字段位于公共请求体中,与结构化输出模式无关。

预期行为

  • 关闭思考时不应发送 reasoning_effort 字段;或
  • provider 拒绝该参数时,按既有的"thinking 参数被拒则去掉后重试"逻辑兜底(当前未触发)。

分析

  1. enableThinking: false 时请求体被注入了 reasoning_effort: "none"
  2. Gemini 的 OpenAI 兼容端点不接受该取值(实测模型兼容矩阵见下),返回 400。
  3. 现有的"thinking 参数被拒检测"未识别 Gemini 的错误格式(错误体为 [{...}] 数组、message 为 Request contains an invalid argument.),因此没有去掉参数重试,最终所有模式都失败。

模型兼容矩阵(实测,2026-08)

模型 reasoning_effort=none low
gemini-3.5-flash 200 ✅ 200 ✅
gemini-3.5-flash-lite 400 ❌ 200 ✅
gemini-3.6-flash 400 ❌ 200 ✅

临时方法

  • 使用 gemini-3.5-flash(接受 none);
  • 或在本地 OpenAI 兼容中继中剥离 reasoning_effort: "none" 后转发。

建议修复

  1. enableThinking=false 时不注入 reasoning_effort
  2. 扩展"thinking 参数被拒"的识别逻辑,兼容 [{ "error": { "code": 400, "message": "Request contains an invalid argument.", ... } }] 这类错误格式,触发去掉参数后的重试。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions