遇到这种情况先别急着重装,多半是某处配置或状态没对上,按下面的顺序查一般十分钟内能看出方向。 把 model 从 gpt-4o 换成 o1-mini,复用同一段代码后立刻返回 400,提示 Unsupported parameter: ‘max_tokens’ is not supported with this model,要求改用 max_completion_tokens。
拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
先分清是哪一类原因
- o1 系列把输出上限参数改名成了 max_completion_tokens
- 该系列不接受自定义 temperature,传了同样报参数不支持
- 旧版 SDK 在底层会自动补上 max_tokens 字段
- 封装层做了参数白名单,新旧字段都被过滤掉
按顺序处理
1. 把参数名替换后再发一次最小请求
curl https://api.openai.com/v1/chat/completions -H "Authorization: Bearer $KEY" -d '{"model":"o1-mini","max_completion_tokens":512,"messages":[{"role":"user","content":"1+1"}]}'
2. 升级 SDK 到支持新参数的版本
pip install -U 'openai>=1.45.0'
3. 代码里去掉 temperature 与 top_p 传参
kwargs.pop('temperature', None); kwargs.pop('top_p', None)
4. 把输出上限写进配置并记录实际用量
print(resp.usage.completion_tokens_details.reasoning_tokens)
怎么确认已经恢复
请求返回 200,usage 里出现 completion_tokens_details.reasoning_tokens,输出不再是空串,参数报错消失。
容易忽略的地方
max_completion_tokens 把推理过程和最终回答一起算进去,按老经验设 256 很容易被推理阶段吃光,表面看就是模型什么都不回答。 命令执行完不要只看有没有报错,还要看输出里的计数和状态码是否符合预期。