chore(openai): add missing constants and checks for some thinking effort levels (#186)
Michael Suchacz
and
Andrey Nering
created 13 hours ago
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 <andreynering@users.noreply.github.com>
Change summary
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(+)
Detailed changes
@@ -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)
}
@@ -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.
@@ -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)
}
@@ -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.