qwen3.8-27b-uncensored の reasoning_effort で "high" が使えません
追記 2026-08-22: この制限は解消しました。 2026-08-22 の基盤更新で reasoning_effort: "high" が使えるようになり、"none" で思考が止まるようになりました。以下は当時の記録です(基盤更新のお知らせ)。
qwen3.8-27b-uncensored に reasoning_effort: "high" を指定するとエラーが返ります。このモデルが受け付ける思考量は "xhigh" / "medium" / "low" の 3 つで、"high" はそのいずれにも該当しないためです。指定を "xhigh" に変えるか、reasoning_effort を省略すると解消します。
"high" は多くの API で使われる値のため、クライアントやフレームワークが既定で送っていることがあります。qwen3.8-27b-uncensored 以外のモデルは "high" を受け付けるため、モデルを切り替えたときに初めて表面化します。
対象
この事象が起きるのは qwen3.8-27b-uncensored だけです。同じモデルに読み替わる旧 ID qwen3.6-35b-a3b-uncensored を指定した場合も同様です。kimi-k3・kimi-k2.6・qwen3.8-2.4t-a95b・qwen3.8-27b・gemma-4-31b-it・qwen3.6-35b-a3b・deepseek-v4-flash は "high" を受け付けます。
指定できる値
| 指定 | qwen3.8-27b-uncensored |
|---|---|
reasoning_effort 省略 |
使えます(既定) |
reasoning_effort: "xhigh" |
使えます |
reasoning_effort: "medium" |
使えます |
reasoning_effort: "low" |
使えます |
reasoning_effort: "none" |
使えます(思考は止まりません) |
reasoning_effort: "high" |
エラーになります |
reasoning_effort: "max" |
エラーになります |
reasoning_effort: "minimal" |
エラーになります |
"none" はエラーになりませんが、思考は止まりません。思考を止める方法は前回の告知のとおり chat_template_kwargs の enable_thinking: false です。
Claude Code / Codex から使う場合
/v1/messages(Claude Code)の thinking.budget_tokens は、思考量の指定に変換されてモデルへ渡ります。qwen3.8-27b-uncensored では 4,096 以上を指定すると "high" 相当に変換されてエラーになります。4,095 以下であればエラーになりません。
/v1/responses(Codex)の reasoning: { effort: "high" } も同じくエラーになります。"xhigh" を指定してください。
使い方
"xhigh" を指定します。
curl https://hai-api.hcloud.ltd/v1/chat/completions \
-H "Authorization: Bearer hai_..." \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.8-27b-uncensored",
"messages": [{ "role": "user", "content": "こんにちは" }],
"reasoning_effort": "xhigh"
}'
reasoning_effort を省略した場合も同じ挙動になります。
エラーレスポンスの変更
これまでこの事象は HTTP 500 を返していました。リクエストの内容に起因するエラーであるため、HTTP 400 を返すよう変更しました。
{
"error": {
"type": "api_error",
"param": "reasoning_effort",
"message": "Invalid request (param: reasoning_effort)"
}
}
リトライ処理で 5xx のみを再試行している場合、これまでは同じリクエストを繰り返して同じエラーを受け取っていました。400 になったことで、再試行せずに指定の誤りとして扱えます。
注意点
"high"を指定したリクエストは課金されません。 モデルが応答を生成する前にエラーになるためです- ストリーミング(
stream: true)でも同じくエラーになります。エラーはストリーム開始前に返ります - 対応する値は将来のモデル更新で変わる可能性があります。変更する場合は改めてお知らせします