遇到这种情况先别急着重装,多半是某处配置或状态没对上,按下面的顺序查一般十分钟内能看出方向。 把 model 从 gpt-4o 换成 o1-mini,复用同一段代码后立刻返回 400,提示 Unsupported parameter: ‘max_tokens’ is not supported with this model,要求改用 max_completion_tokens。

拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

先分清是哪一类原因

  1. o1 系列把输出上限参数改名成了 max_completion_tokens
  2. 该系列不接受自定义 temperature,传了同样报参数不支持
  3. 旧版 SDK 在底层会自动补上 max_tokens 字段
  4. 封装层做了参数白名单,新旧字段都被过滤掉

按顺序处理

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 很容易被推理阶段吃光,表面看就是模型什么都不回答。 命令执行完不要只看有没有报错,还要看输出里的计数和状态码是否符合预期。

作者 9823189