Repository navigation
API contract: /v1/chat/completions accepts reasoning_effort but the level has no effect (deepseek-v4.1-flash) #9233
Replies: 1 comment
|
If you are on a Design Plan (Go/Plus/Pro/Max) key and have five minutes, an independent replication would be genuinely useful here — one report is easy to file as an outlier, three are not. What to check: whether KEY=...
for E in none low high max; do for i in 1 2 3; do
curl -s https://amr-link.open-design.ai/v1/chat/completions \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d "{\"model\":\"deepseek-v4.1-flash\",\"max_tokens\":3000,\"reasoning_effort\":\"$E\",\"messages\":[{\"role\":\"user\",\"content\":\"Integers 1..1000 divisible by none of 2, 3, 5: derive with inclusion-exclusion step by step, then verify the arithmetic.\"}]}" \
| jq -r "\"$E \(.usage.completion_tokens_details.reasoning_tokens)\""
done; doneTwo things matter or the numbers mean nothing: the prompt has to need real derivation, and What I get on the Cloud API (means of 3): If you get a materially different result, please say so — that would be more informative than a confirming run. Either way, |
Uh oh!
There was an error while loading. Please reload this page.
Cross-posting from Issues (#9232) because this is arguably an API-contract question as much as a bug: the Cloud API accepts
reasoning_effort, validates it, and then behaves identically whatever you ask for.Same prompt,
deepseek-v4.1-flash, 3 samples per level,max_tokens: 3000, comparingusage.completion_tokens_details.reasoning_tokens:reasoning_effortnonelowhighmaxOn the Cloud API that is 1.16× from
lowtomax, with intra-level spread larger than the gap between levels. On the other gateway the same model spreads 3.5×. A second control gateway (OpenCode Zen) gives 4.4×, so it is not a one-off.Two supporting observations:
prompt_tokensreports 74 for a prompt that reports 48 atreasoning_effort: "none"— the gateway appears to rewrite the request rather than pass it through.The question I'd like a stance on: when a route cannot honour a graded level, is the intended behaviour to accept and ignore it, or to reject it? Accepting it makes the failure invisible to callers — you can't tell a downgraded request from a normal one without writing a benchmark. #8839 asks for a per-request usage log that would at least surface it; that has been in product-direction review since Oct 17.
Either fix the ladder, or reject the parameter, or document that this route ignores it. Full repro, raw numbers and controls are in #9232.
All reactions