on main help sign in
fix: address thinking on/off toggle for provider (#2916)
0a2de47Andrey Nering
internal/agent/coordinator.go+14−5
@@ -346,13 +346,18 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy.
346 options[google.Name] = parsed
346 options[google.Name] = parsed
347 }
347 }
348 case openaicompat.Name, hyper.Name:
348 case openaicompat.Name, hyper.Name:
349+ extraBody := make(map[string]any)
350+
349 _, hasReasoningEffort := mergedOptions["reasoning_effort"]
351 _, hasReasoningEffort := mergedOptions["reasoning_effort"]
350 if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" {
352 if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" {
353+ switch providerCfg.ID {
354+ case string(catwalk.InferenceProviderIoNet):
355+ extraBody["reasoning"] = map[string]string{"effort": model.ModelCfg.ReasoningEffort}
356+ default:
351− mergedOptions["reasoning_effort"] = model.ModelCfg.ReasoningEffort
357+ mergedOptions["reasoning_effort"] = model.ModelCfg.ReasoningEffort
358+ }
352 }
359 }
353
360
354− extraBody := make(map[string]any)
355−
356 // "reasoning effort" is a standard OpenAI field, but "thinking" is not.
361 // "reasoning effort" is a standard OpenAI field, but "thinking" is not.
357 // Setting it in the right way for each provider.
362 // Setting it in the right way for each provider.
358 // TODO: Abstract this in Fantasy somehow?
363 // TODO: Abstract this in Fantasy somehow?
@@ -361,8 +366,12 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy.
361 case hyper.Name:
366 case hyper.Name:
362 extraBody["thinking"] = model.ModelCfg.Think
367 extraBody["thinking"] = model.ModelCfg.Think
363 case string(catwalk.InferenceProviderIoNet):
368 case string(catwalk.InferenceProviderIoNet):
364− extraBody["chat_template_kwargs"] = map[string]any{
369+ if _, ok := extraBody["reasoning"]; !ok && model.CatwalkCfg.CanReason {
365− "thinking": model.ModelCfg.Think,
370+ if model.ModelCfg.Think {
371+ extraBody["reasoning"] = map[string]string{"effort": "medium"}
372+ } else {
373+ extraBody["reasoning"] = map[string]string{"effort": "none"}
374+ }
366 }
375 }
367 case string(catwalk.InferenceProviderZAI), string(catwalk.InferenceProviderDeepSeek):
376 case string(catwalk.InferenceProviderZAI), string(catwalk.InferenceProviderDeepSeek):
368 if model.ModelCfg.Think {
377 if model.ModelCfg.Think {