mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: support xhigh reasoning effort for OpenAI models (#23545)
## Summary Adds `xhigh` to the OpenAI reasoning effort normalizer so GPT-5.4 class models can use `reasoning_effort: xhigh` without it being silently dropped. ## Problem The SDK schema (`codersdk/chats.go`) already advertises `xhigh` as a valid `reasoning_effort` value, but the runtime normalizer in `chatprovider.go` only accepts `minimal|low|medium|high` for the OpenAI provider. When a user sets `xhigh`, `ReasoningEffortFromChat()` returns `nil` and the value never reaches the OpenAI API. ## Changes - **Fantasy dependency**: Updated `kylecarbs/fantasy` (cj/go1.25) which now includes the `ReasoningEffortXHigh` constant ([kylecarbs/fantasy#9](https://github.com/kylecarbs/fantasy/pull/9)). - **`chatprovider.go`**: Adds `fantasyopenai.ReasoningEffortXHigh` to the OpenAI case in `ReasoningEffortFromChat()`. - **`chatprovider_test.go`**: Adds `OpenAIXHighEffort` test case. ## Upstream - [charmbracelet/fantasy#186](https://github.com/charmbracelet/fantasy/pull/186)
This commit is contained in:
@@ -487,6 +487,7 @@ func ReasoningEffortFromChat(provider string, value *string) *string {
|
||||
string(fantasyopenai.ReasoningEffortLow),
|
||||
string(fantasyopenai.ReasoningEffortMedium),
|
||||
string(fantasyopenai.ReasoningEffortHigh),
|
||||
string(fantasyopenai.ReasoningEffortXHigh),
|
||||
)
|
||||
case fantasyanthropic.Name:
|
||||
return normalizedEnumValue(
|
||||
|
||||
@@ -29,6 +29,12 @@ func TestReasoningEffortFromChat(t *testing.T) {
|
||||
input: ptr.Ref(" HIGH "),
|
||||
want: ptr.Ref(string(fantasyopenai.ReasoningEffortHigh)),
|
||||
},
|
||||
{
|
||||
name: "OpenAIXHighEffort",
|
||||
provider: "openai",
|
||||
input: ptr.Ref("xhigh"),
|
||||
want: ptr.Ref(string(fantasyopenai.ReasoningEffortXHigh)),
|
||||
},
|
||||
{
|
||||
name: "AnthropicEffort",
|
||||
provider: "anthropic",
|
||||
|
||||
Reference in New Issue
Block a user