Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Commit e6713b0

Browse files
committed
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
1 parent 137d3f4 commit e6713b0

4 files changed

Lines changed: 16 additions & 4 deletions

File tree

src/api/providers/__tests__/openai.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ describe("OpenAiHandler", () => {
632632
],
633633
stream: true,
634634
stream_options: { include_usage: true },
635-
temperature: 0,
635+
temperature: undefined,
636636
tools: undefined,
637637
tool_choice: undefined,
638638
parallel_tool_calls: true,

src/api/providers/openai.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
154154

155155
const requestOptions: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = {
156156
model: modelId,
157-
temperature: this.options.modelTemperature ?? (deepseekReasoner ? DEEP_SEEK_DEFAULT_TEMPERATURE : 0),
157+
temperature:
158+
this.options.modelTemperature ?? (deepseekReasoner ? DEEP_SEEK_DEFAULT_TEMPERATURE : undefined),
158159
messages: convertedMessages,
159160
stream: true as const,
160161
...(isGrokXAI ? {} : { stream_options: { include_usage: true } }),
@@ -287,7 +288,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
287288
modelId: id,
288289
model: info,
289290
settings: this.options,
290-
defaultTemperature: 0,
291+
defaultTemperature: undefined,
291292
})
292293
return { id, info, ...params }
293294
}

src/api/transform/__tests__/model-params.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,17 @@ describe("getModelParams", () => {
123123
expect(result.temperature).toBe(0.3)
124124
})
125125

126+
it("should return undefined temperature when defaultTemperature is undefined and no user/model temperature", () => {
127+
const result = getModelParams({
128+
...openaiParams,
129+
settings: {},
130+
model: baseModel,
131+
defaultTemperature: undefined,
132+
})
133+
134+
expect(result.temperature).toBeUndefined()
135+
})
136+
126137
it("should use model maxTokens when available", () => {
127138
const model: ModelInfo = {
128139
...baseModel,

src/api/transform/model-params.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type GetModelParamsOptions<T extends Format> = {
3333
modelId: string
3434
model: ModelInfo
3535
settings: ProviderSettings
36-
defaultTemperature: number
36+
defaultTemperature: number | undefined
3737
}
3838

3939
type BaseModelParams = {

0 commit comments

Comments
 (0)