From d13521ab698a2f28f58f123d0cd424855b8dab33 Mon Sep 17 00:00:00 2001 From: Michael Suchacz <203725896+ibetitsmike@users.noreply.github.com> Date: Wed, 25 Mar 2026 14:45:47 +0100 Subject: [PATCH] chore(openai): add missing constants and checks for some thinking effort levels (#186) We were missing some "none", "minimal" and "xhigh" constants, for the `openai`, `openaicompat` and `openrouter` packages. Added the missing checks to ensure they work as well. Co-authored-by: Andrey Nering --- providers/openai/language_model_hooks.go | 4 ++++ providers/openai/provider_options.go | 4 ++++ providers/openaicompat/language_model_hooks.go | 4 ++++ providers/openrouter/provider_options.go | 6 ++++++ 4 files changed, 18 insertions(+) diff --git a/providers/openai/language_model_hooks.go b/providers/openai/language_model_hooks.go index 34ed74c999f5c49100312ce8b11f1e5f104550b7..e1131bc771f9c34aff8488c45a8102e8694290b8 100644 --- a/providers/openai/language_model_hooks.go +++ b/providers/openai/language_model_hooks.go @@ -111,6 +111,8 @@ func DefaultPrepareCallFunc(model fantasy.LanguageModel, params *openai.ChatComp if providerOptions.ReasoningEffort != nil { switch *providerOptions.ReasoningEffort { + case ReasoningEffortNone: + params.ReasoningEffort = shared.ReasoningEffortNone case ReasoningEffortMinimal: params.ReasoningEffort = shared.ReasoningEffortMinimal case ReasoningEffortLow: @@ -119,6 +121,8 @@ func DefaultPrepareCallFunc(model fantasy.LanguageModel, params *openai.ChatComp params.ReasoningEffort = shared.ReasoningEffortMedium case ReasoningEffortHigh: params.ReasoningEffort = shared.ReasoningEffortHigh + case ReasoningEffortXHigh: + params.ReasoningEffort = shared.ReasoningEffortXhigh default: return nil, fmt.Errorf("reasoning model `%s` not supported", *providerOptions.ReasoningEffort) } diff --git a/providers/openai/provider_options.go b/providers/openai/provider_options.go index 141fd2dc477e71830f37b628880d79bc2fb692a5..0e5e8336f55fc0c6c14e6f25a3659220f88c119e 100644 --- a/providers/openai/provider_options.go +++ b/providers/openai/provider_options.go @@ -12,6 +12,8 @@ import ( type ReasoningEffort string const ( + // ReasoningEffortNone represents ReasoningEffortNone reasoning effort. + ReasoningEffortNone ReasoningEffort = "none" // ReasoningEffortMinimal represents minimal reasoning effort. ReasoningEffortMinimal ReasoningEffort = "minimal" // ReasoningEffortLow represents low reasoning effort. @@ -20,6 +22,8 @@ const ( ReasoningEffortMedium ReasoningEffort = "medium" // ReasoningEffortHigh represents high reasoning effort. ReasoningEffortHigh ReasoningEffort = "high" + // ReasoningEffortXHigh represents extra-high reasoning effort. + ReasoningEffortXHigh ReasoningEffort = "xhigh" ) // Global type identifiers for OpenAI-specific provider data. diff --git a/providers/openaicompat/language_model_hooks.go b/providers/openaicompat/language_model_hooks.go index 4da86c0f42a2db2392f99548d2d7f440c2e02761..b43cb4eea11e7598ab2d81507b5cab603a5c42fd 100644 --- a/providers/openaicompat/language_model_hooks.go +++ b/providers/openaicompat/language_model_hooks.go @@ -27,6 +27,8 @@ func PrepareCallFunc(_ fantasy.LanguageModel, params *openaisdk.ChatCompletionNe if providerOptions.ReasoningEffort != nil { switch *providerOptions.ReasoningEffort { + case openai.ReasoningEffortNone: + params.ReasoningEffort = shared.ReasoningEffortNone case openai.ReasoningEffortMinimal: params.ReasoningEffort = shared.ReasoningEffortMinimal case openai.ReasoningEffortLow: @@ -35,6 +37,8 @@ func PrepareCallFunc(_ fantasy.LanguageModel, params *openaisdk.ChatCompletionNe params.ReasoningEffort = shared.ReasoningEffortMedium case openai.ReasoningEffortHigh: params.ReasoningEffort = shared.ReasoningEffortHigh + case openai.ReasoningEffortXHigh: + params.ReasoningEffort = shared.ReasoningEffortXhigh default: return nil, fmt.Errorf("reasoning model `%s` not supported", *providerOptions.ReasoningEffort) } diff --git a/providers/openrouter/provider_options.go b/providers/openrouter/provider_options.go index 742e911031aa741e270e687d10a8b0e43c975903..5ef7f9dd45419865ee244c1bf115d821c0688f71 100644 --- a/providers/openrouter/provider_options.go +++ b/providers/openrouter/provider_options.go @@ -11,12 +11,18 @@ import ( type ReasoningEffort string const ( + // ReasoningEffortNone represents ReasoningEffortNone reasoning effort. + ReasoningEffortNone ReasoningEffort = "none" + // ReasoningEffortMinimal represents minimal reasoning effort. + ReasoningEffortMinimal ReasoningEffort = "minimal" // ReasoningEffortLow represents low reasoning effort. ReasoningEffortLow ReasoningEffort = "low" // ReasoningEffortMedium represents medium reasoning effort. ReasoningEffortMedium ReasoningEffort = "medium" // ReasoningEffortHigh represents high reasoning effort. ReasoningEffortHigh ReasoningEffort = "high" + // ReasoningEffortXHigh represents extra high reasoning effort. + ReasoningEffortXHigh ReasoningEffort = "xhigh" ) // Global type identifiers for OpenRouter-specific provider data.