diff --git a/openai/openai.go b/openai/openai.go index 335c75cc4787f74dd3bc31cf151cb78615a618e7..0dc92eccd50d14878fcff7f61f85a63fab19b321 100644 --- a/openai/openai.go +++ b/openai/openai.go @@ -274,14 +274,6 @@ func prepareCallWithOptions(model ai.LanguageModel, params *openai.ChatCompletio }) } - // reasoning models use max_completion_tokens instead of max_tokens - if call.MaxOutputTokens != nil { - if providerOptions.MaxCompletionTokens == nil { - params.MaxCompletionTokens = param.NewOpt(*call.MaxOutputTokens) - } - params.MaxTokens = param.Opt[int64]{} - } - } // Handle service tier validation @@ -369,6 +361,14 @@ func (o languageModel) prepareParams(call ai.Call) (*openai.ChatCompletionNewPar Details: "PresencePenalty is not supported for reasoning models", }) } + + // reasoning models use max_completion_tokens instead of max_tokens + if call.MaxOutputTokens != nil { + if !params.MaxCompletionTokens.Valid() { + params.MaxCompletionTokens = param.NewOpt(*call.MaxOutputTokens) + } + params.MaxTokens = param.Opt[int64]{} + } } // Handle search preview models