最近在折腾接口的兄弟们可能会踩到一个坑,特别是那些刚把模型更新到最新版本的朋友。

直接调用新版 GPT(尤其是带推理功能的版本)时,如果参数没写对,反手就是一个 invalid_request_error

🛑 报错现场

错误日志大概长这样,看起来是不是很眼熟?

{
  "error": {
    "code": "invalid_value",
    "message": "Invalid value: 'max'. Supported values are: 'none', 'minimal', 'low', 'medium', 'high', and 'xhigh'.",
    "param": "reasoning.effort",
    "type": "invalid_request_error"
  }
}

GPT API 报错信息

调用 API 时遇到的报错,提示 'max' 值无效

这就很尴尬了。明明文档里(或者旧版习惯里)我们习惯用 max 来开启最强推理压缩,现在居然告诉我这个值无效?

🔍 问题深扒

经过排查,这不仅仅是代码写错字那么简单。这是官方 API 策略的一次悄悄变更。

reasoning.effort 这一项里,原本可能存在的 maxultra 这种直观的“最大值”参数,目前已经被官方弃用或暂时移除了。根据报错提示,当前后端支持的合法参数库仅剩下以下 6 个档位:

  • none
  • minimal
  • low
  • medium
  • high
  • xhigh

也就是说,xhigh 现在其实就是你要找的“顶配版”。很多使用了第三方转发框架(比如 Sub2api)的用户,如果框架的预设选项没有及时更新,或者你的老代码里硬编码了 max,就会直接撞上这堵墙。

🛠️ 解决方案

解决方法非常简单,不需要改复杂的架构,只要做一个小小的参数映射替换。

1. 手动调整参数

如果你是在直接调用 API,或者手动调试,请立即将 reasoning.effort 的值从 maxultra 改为 xhigh。这相当于现在的“Ultra”模式,效果是一样的。

2. Sub2api 框架修复指南

很多搭建中转站的同学是在用 Sub2api 这类框架。这类框架通常会有预设的下拉菜单或配置文件。遇到这个报错,通常是前端传给 OpenAI 的参数值被拦截了。

排查步骤:

参数映射伪代码示例

在代码中将 'max' 映射到 'xhigh' 的修复逻辑

  1. 检查你的模型配置文件,通常会有关于 reasoning_effort 的映射表。
  2. 找到定义 max 的地方,将其重定向到 xhigh

伪代码/配置逻辑参考:

假设你原本的逻辑是用户选“MAX”,后端传 max,现在需要加个中间层转换:

// 旧逻辑
// payload.reasoning_effort = userSelection;

// 新逻辑:做一个简单的映射映射
const effortMap = {
  'none': 'none',
  'low': 'low',
  'medium': 'medium',
  'high': 'high',
  'max': 'xhigh',   // 关键修复:将 max 映射到 xhigh
  'ultra': 'xhigh'  // 同理,如果有 ultra 选项也转过去
};

payload.reasoning_effort = effortMap[userSelection] || 'medium';

这样,即便用户依然在界面上选择“MAX”模式,实际发出去的请求就是合法的 xhigh,报错立马消失。

💡 总结

这次调整主要是为了规范化推理强度的参数名称。虽然名称变了,但 xhigh 依然能提供我们需要的最高压缩率和推理深度。

如果你之前的服务突然挂了,别慌,先去检查日志里的 reasoning.effort,大概率是 max 阀门被关了,顺手换成 xhigh 即可丝滑复活。记得把你的前端配置也同步更新一下,免得用户一脸懵逼。

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭