diff --git a/src/api/providers/__tests__/openai-native.spec.ts b/src/api/providers/__tests__/openai-native.spec.ts index 1d76d387a9f..cdf52da7889 100644 --- a/src/api/providers/__tests__/openai-native.spec.ts +++ b/src/api/providers/__tests__/openai-native.spec.ts @@ -634,7 +634,8 @@ describe("OpenAiNativeHandler", () => { expect(body1).toContain('"effort":"medium"') expect(body1).toContain('"summary":"auto"') expect(body1).toContain('"verbosity":"medium"') - expect(body1).toContain('"temperature":1') + // GPT-5 no longer supports temperature parameter + expect(body1).not.toContain('"temperature"') expect(body1).toContain('"max_output_tokens"') // Verify the streamed content @@ -856,7 +857,8 @@ describe("OpenAiNativeHandler", () => { expect(body2).toContain('"effort":"low"') expect(body2).toContain('"summary":"auto"') expect(body2).toContain('"verbosity":"medium"') - expect(body2).toContain('"temperature":1') + // GPT-5 no longer supports temperature parameter + expect(body2).not.toContain('"temperature"') expect(body2).toContain('"max_output_tokens"') // Clean up @@ -906,7 +908,8 @@ describe("OpenAiNativeHandler", () => { expect(body3).toContain('"effort":"minimal"') expect(body3).toContain('"summary":"auto"') expect(body3).toContain('"verbosity":"high"') - expect(body3).toContain('"temperature":1') + // GPT-5 no longer supports temperature parameter + expect(body3).not.toContain('"temperature"') expect(body3).toContain('"max_output_tokens"') // Clean up diff --git a/src/api/providers/openai-native.ts b/src/api/providers/openai-native.ts index 053af7f5e5f..662d0e42edd 100644 --- a/src/api/providers/openai-native.ts +++ b/src/api/providers/openai-native.ts @@ -273,7 +273,7 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio stream: boolean reasoning?: { effort: ReasoningEffortWithMinimal; summary?: "auto" } text?: { verbosity: VerbosityLevel } - temperature?: number + // temperature parameter removed - GPT-5 no longer supports it max_output_tokens?: number previous_response_id?: string } @@ -289,7 +289,7 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio }, }), text: { verbosity: (verbosity || "medium") as VerbosityLevel }, - temperature: this.options.modelTemperature ?? GPT5_DEFAULT_TEMPERATURE, + // GPT-5 no longer supports temperature parameter // Explicitly include the calculated max output tokens for GPT‑5. // Use the per-request reserved output computed by Roo (params.maxTokens from getModelParams). ...(model.maxTokens ? { max_output_tokens: model.maxTokens } : {}), diff --git a/src/api/transform/model-params.ts b/src/api/transform/model-params.ts index 933697c0a53..2d5ff167436 100644 --- a/src/api/transform/model-params.ts +++ b/src/api/transform/model-params.ts @@ -142,9 +142,9 @@ export function getModelParams({ reasoning: getAnthropicReasoning({ model, reasoningBudget, reasoningEffort, settings }), } } else if (format === "openai") { - // Special case for o1 and o3-mini, which don't support temperature. + // Special case for o1, o3-mini, and GPT-5 models, which don't support temperature. // TODO: Add a `supportsTemperature` field to the model info. - if (modelId.startsWith("o1") || modelId.startsWith("o3-mini")) { + if (modelId.startsWith("o1") || modelId.startsWith("o3-mini") || modelId.startsWith("gpt-5")) { params.temperature = undefined }