fix: do not enforce temperature of 0 for OpenAI compatible provider

When no custom temperature is set and the model is not a DeepSeek
reasoner, the OpenAI compatible provider was hardcoding temperature=0.
This overrode whatever server-side default the provider may have.

Changed the fallback to undefined so the temperature field is omitted
from the API request, letting the remote provider use its own default.

Fixes #12042
This commit is contained in:
Roo Code 2026-04-01 21:07:37 +00:00
parent 137d3f4fd8
commit e6713b07ca
4 changed files with 16 additions and 4 deletions

View file

@ -632,7 +632,7 @@ describe("OpenAiHandler", () => {
],
stream: true,
stream_options: { include_usage: true },
temperature: 0,
temperature: undefined,
tools: undefined,
tool_choice: undefined,
parallel_tool_calls: true,

View file

@ -154,7 +154,8 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
const requestOptions: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = {
model: modelId,
temperature: this.options.modelTemperature ?? (deepseekReasoner ? DEEP_SEEK_DEFAULT_TEMPERATURE : 0),
temperature:
this.options.modelTemperature ?? (deepseekReasoner ? DEEP_SEEK_DEFAULT_TEMPERATURE : undefined),
messages: convertedMessages,
stream: true as const,
...(isGrokXAI ? {} : { stream_options: { include_usage: true } }),
@ -287,7 +288,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
modelId: id,
model: info,
settings: this.options,
defaultTemperature: 0,
defaultTemperature: undefined,
})
return { id, info, ...params }
}

View file

@ -123,6 +123,17 @@ describe("getModelParams", () => {
expect(result.temperature).toBe(0.3)
})
it("should return undefined temperature when defaultTemperature is undefined and no user/model temperature", () => {
const result = getModelParams({
...openaiParams,
settings: {},
model: baseModel,
defaultTemperature: undefined,
})
expect(result.temperature).toBeUndefined()
})
it("should use model maxTokens when available", () => {
const model: ModelInfo = {
...baseModel,

View file

@ -33,7 +33,7 @@ type GetModelParamsOptions<T extends Format> = {
modelId: string
model: ModelInfo
settings: ProviderSettings
defaultTemperature: number
defaultTemperature: number | undefined
}
type BaseModelParams = {