这类问题我又碰上了一次。在阿里云百炼用 OpenAI 兼容模式调 qwen3-235b-a22b,想把思考关掉做低延迟问答,请求里加 enable_thinking=false,接口回 400,原文是 parameter.enable_thinking must be used with stream mode,可我这边是非流式批量调用。
第一反应是「模板默认开了思考 只传 false 没覆盖住」,验证下来不成立。
把日志和配置对完,能解释这个现象的基本就这几处。该参数要求 stream=true 才生效;走 DashScope 原生协议时参数名不一样;批量任务复用了流式分支的请求体。
第一件事是用 curl 确认报错原文与参数名
curl https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions -H "Authorization: Bearer $DASHSCOPE_API_KEY" -H "Content-Type: application/json" -d '{"model":"qwen3-235b-a22b","messages":[{"role":"user","content":"1+1"}],"enable_thinking":false}'
随后改成流式请求 看参数是否被接受
curl -N https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions -H "Authorization: Bearer $DASHSCOPE_API_KEY" -H "Content-Type: application/json" -d '{"model":"qwen3-235b-a22b","stream":true,"enable_thinking":false,"messages":[{"role":"user","content":"1+1"}]}'
批处理侧改走 SDK 的流式接口再聚合
python batch_qwen.py --stream --thinking off
剩下的就是把参数从公共配置拆出来 按模型注入
python -c "cfg={'stream':True,'enable_thinking':False};print(cfg)"
怎么算真的好了,看的是同一批现象。流式返回里直接出现 content 增量,没有大段思考内容,HTTP 状态 200,批量任务改走 SDK 后也不再报 400。
这里还有个坑。兼容模式的参数名和原生 DashScope 不一致,同一个开关在两套协议里叫法不同,迁移时按协议分别对照。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
