Replies: 1 comment
|
你把两层丢弃都定位到了,这个诊断我认。补一条你可能没试过的当下就能用的路: 手写的形状llm-pi-ai:
providers:
my-gateway:
displayName: My Gateway
api: openai-completions
baseURL: https://your-endpoint/v1
apiKeyEnv: MY_GATEWAY_KEY
models:
- id: your-model-id
contextWindow: 131072
reasoningEfforts:
off:
low: low
high: high冒号左边是 DSH 的档位名,右边是发到 wire 上的值( 这段形状我们在 一个观察:这是同一个模式的第三次出现
所以这条诉求写成"给 边界
利益相关:我维护 pi2dsh。上面这段 YAML 是纯 DSH 官方配置,不需要装我们任何东西。只有在你的目录动态到手写跟不上、需要一个包实时拉 |
Uh oh!
There was an error while loading. Please reload this page.
Summary
When configuring a custom OpenAI-compatible provider under Settings → Models,
GET /v1/modelsmay return per-modelreasoningEfforts, but the harness discards that field. Adopted models therefore have no selectable thinking levels in the composer model picker.Repro
baseURL+ API key.{ "id": "Fast", "name": "Fast:快速回复 · Grok 4.5", "contextWindow": 500000, "maxTokens": 131072, "reasoning": true, "reasoningEfforts": { "low": "low", "medium": "medium", "high": "high" } }Expected
reasoningEffortsinto the profile entry (llm-pi-ai.providers.<route>.models[i].reasoningEfforts).low/medium/high, etc.).Actual
Why
Two layers currently drop the field:
dsh-llmdiscoverModels) rebuilds each discovered model as only{ id, name?, contextWindow?, maxTokens? }, so extra fields from the endpoint never leave the service boundary.dsh-client-ui-settings-modelsadopt(candidate)) likewise copies only those four fields into the drafted profile row.Separately, putting
reasoningEffortsat the provider level insettings.yamldoes not help: the pi-ai profile schema only recognizes per-modelreasoningEfforts. A provider-level key is ignored during resolution, so the adapter still treats hand-declared models as non-reasoning.Relevant references:
LlmDiscoveredModelhas noreasoningEffortsfieldresolveModelReasoning(...)only readsentry.reasoningEffortson each model entryreasoningEffortsSuggested fix
LlmDiscoveredModel(and the wireDiscoveredModelView) to optionally carryreasoningEfforts.llm.discoverModelsinstead of stripping unknown fields.adopt()path, copyreasoningEffortsinto the drafted model entry when present.reasoningEffortsis not a supported profile field; per-model entries are required.Workaround
Manually write per-model
reasoningEffortsintosettings.yaml, for example:Or use a temporary dynamic plugin that writes the same per-model fields via
settings.mutate.Environment
openai-completions)reasoningEffortsonGET /v1/modelsAll reactions