Custom (OpenAI-compatible) provider models cannot be given reasoning-effort levels from the GUI #843
TeaDrink666
started this conversation in
General
Replies: 1 comment
|
This is the exact gap: hand-declared ( I built a small dual-face plugin for this: dsh-thinking-effort (MIT)
Install: dsh plugin --profile <profile> add github:hytime/dsh-thinking-effortAI-friendly install doc: https://github.com/hytime/dsh-thinking-effort/blob/main/INSTALL.md |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
When connecting models through a custom (OpenAI-compatible) provider — e.g. a relay gateway fronting ChatGPT or DeepSeek — there is no way in the web GUI to make reasoning effort selectable for those models. The composer's model picker never shows the 推理等级 (reasoning effort) pane for them, so the user cannot choose a thinking intensity, even though the engine fully supports it.
Expected
After adding a custom provider (or editing its models) in Settings → Models, the user should be able to declare which reasoning-effort levels each model supports (e.g.
off / low / medium / high), and the composer's model picker should then offer those levels exactly as it does for the shipped DeepSeek models.Actual
id,name,contextWindow,maxTokens(packages/client/ui-settings-models/src/client/ModelListEditor.tsx)./modelsendpoint carry no reasoning metadata at all (DiscoveredModelViewis onlyid/name/contextWindow/maxTokensinpackages/host/apiproxy/src/api/llm.ts).resolveModelreturns noreasoningfield for these models (reasoningInfo()inpackages/llm/llm-pi-ai/src/adapter.ts), andModelSelect.tsxhides the effort pane entirely whenmodel.reasoningis undefined.Root cause
Reasoning effort is deliberately a per-model capability: the engine supports declaring
models[].reasoningEfforts(level → wire spelling, e.g.{ off: null, high: 'high', max: 'ultra' }) insettings.yamlforllm-pi-aiproviders, and the composer surfaces it correctly — proven by theapps/web/tests/declared-reasoning.e2e.tstest. The gap is that the GUI offers no way to set that field: neither the custom-provider create card nor the model editor exposes it, and the fetch dialog cannot discover it.Workaround
Hand-edit
settings.yaml:Suggested fix
Add a per-model
reasoningEffortseditor to the custom-provider model rows (alongsidecontextWindow/maxTokensin the advanced fold), and optionally surface reasoning hints in the fetch dialog. The settings schema (packages/llm/llm-pi-ai/src/config.ts) already accepts the field, so this is primarily a UI gap.All reactions