Skip to content

Commit da741b0

Browse files
authored
Merge pull request docker#1404 from krissetto/disable-interleved-thinking-if-thinking-is-disabled
Remove interleaved thinking if thinking is explicitly disabled
2 parents 4a33f0f + 86cf855 commit da741b0

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

pkg/config/latest/types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ type ModelConfig struct {
143143
BaseURL string `json:"base_url,omitempty"`
144144
ParallelToolCalls *bool `json:"parallel_tool_calls,omitempty"`
145145
TokenKey string `json:"token_key,omitempty"`
146-
// ProviderOpts allows provider-specific options. Currently used for "dmr" provider only.
146+
// ProviderOpts allows provider-specific options.
147147
ProviderOpts map[string]any `json:"provider_opts,omitempty"`
148148
TrackUsage *bool `json:"track_usage,omitempty"`
149149
// ThinkingBudget controls reasoning effort/budget:

pkg/model/provider/clone.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ func CloneWithOptions(ctx context.Context, base Provider, opts ...options.Opt) P
2525
opt(tempOpts)
2626
mt := tempOpts.MaxTokens()
2727
modelConfig.MaxTokens = &mt
28-
if t := tempOpts.Thinking(); t != nil && !*t {
29-
modelConfig.ThinkingBudget = nil
30-
}
3128
}
3229

3330
clone, err := New(ctx, &modelConfig, config.Env, mergedOpts...)

pkg/model/provider/provider.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,20 @@ func createDirectProvider(ctx context.Context, cfg *latest.ModelConfig, env envi
211211

212212
// Apply defaults from custom providers (from config) or built-in aliases
213213
enhancedCfg := applyProviderDefaults(cfg, globalOptions.Providers())
214+
if thinking := globalOptions.Thinking(); thinking != nil && !*thinking {
215+
enhancedCfg.ThinkingBudget = nil
216+
217+
// with thinking explicitly disabled, also remove the interleaved_thinking provider option
218+
if enhancedCfg.ProviderOpts != nil {
219+
// Copy to avoid mutating shared ProviderOpts in the original config
220+
optsCopy := make(map[string]any, len(enhancedCfg.ProviderOpts))
221+
for key, value := range enhancedCfg.ProviderOpts {
222+
optsCopy[key] = value
223+
}
224+
delete(optsCopy, "interleaved_thinking")
225+
enhancedCfg.ProviderOpts = optsCopy
226+
}
227+
}
214228

215229
// Apply overrides (e.g., disable thinking if requested by session)
216230
enhancedCfg = applyOverrides(enhancedCfg, &globalOptions)

0 commit comments

Comments
 (0)