From 0a2de47f0ed37a66ee2398ea2371dc9eb2ff6939 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Thu, 14 May 2026 16:00:46 -0300 Subject: [PATCH] fix: address thinking on/off toggle for provider (#2916) --- internal/agent/coordinator.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/internal/agent/coordinator.go b/internal/agent/coordinator.go index 3dea024a844f20ecb48dca5c6efae3842bf1de32..aed5624e178d80310784f5a2014b92b32afcacd8 100644 --- a/internal/agent/coordinator.go +++ b/internal/agent/coordinator.go @@ -346,13 +346,18 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy. options[google.Name] = parsed } case openaicompat.Name, hyper.Name: + extraBody := make(map[string]any) + _, hasReasoningEffort := mergedOptions["reasoning_effort"] if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" { - mergedOptions["reasoning_effort"] = model.ModelCfg.ReasoningEffort + switch providerCfg.ID { + case string(catwalk.InferenceProviderIoNet): + extraBody["reasoning"] = map[string]string{"effort": model.ModelCfg.ReasoningEffort} + default: + mergedOptions["reasoning_effort"] = model.ModelCfg.ReasoningEffort + } } - extraBody := make(map[string]any) - // "reasoning effort" is a standard OpenAI field, but "thinking" is not. // Setting it in the right way for each provider. // TODO: Abstract this in Fantasy somehow? @@ -361,8 +366,12 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy. case hyper.Name: extraBody["thinking"] = model.ModelCfg.Think case string(catwalk.InferenceProviderIoNet): - extraBody["chat_template_kwargs"] = map[string]any{ - "thinking": model.ModelCfg.Think, + if _, ok := extraBody["reasoning"]; !ok && model.CatwalkCfg.CanReason { + if model.ModelCfg.Think { + extraBody["reasoning"] = map[string]string{"effort": "medium"} + } else { + extraBody["reasoning"] = map[string]string{"effort": "none"} + } } case string(catwalk.InferenceProviderZAI), string(catwalk.InferenceProviderDeepSeek): if model.ModelCfg.Think {