From d8092e35dcdde8a1823d8d7b9ad265430f6c74c3 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Fri, 8 Aug 2025 03:34:06 +0000 Subject: [PATCH] feat: hardcode temperature to 1 for GPT-5 models - Set temperature to 1 for all GPT-5 model variants (gpt-5, gpt-5-mini, gpt-5-nano) - Added comprehensive tests to verify temperature hardcoding - Ensures consistent behavior for GPT-5 models as requested --- .../transform/__tests__/model-params.spec.ts | 132 ++++++++++++++++++ src/api/transform/model-params.ts | 5 + 2 files changed, 137 insertions(+) diff --git a/src/api/transform/__tests__/model-params.spec.ts b/src/api/transform/__tests__/model-params.spec.ts index bd75e7eafb..aac1a32016 100644 --- a/src/api/transform/__tests__/model-params.spec.ts +++ b/src/api/transform/__tests__/model-params.spec.ts @@ -885,4 +885,136 @@ describe("getModelParams", () => { expect(result.reasoningBudget).toBe(8192) // Default thinking tokens }) }) + + describe("GPT-5 temperature hardcoding", () => { + it("should hardcode temperature to 1 for gpt-5 models", () => { + const model: ModelInfo = { + ...baseModel, + } + + const result = getModelParams({ + modelId: "gpt-5-2025-08-07", + format: "openai" as const, + settings: { modelTemperature: 0.5 }, // User setting should be overridden + model, + }) + + expect(result.temperature).toBe(1) + }) + + it("should hardcode temperature to 1 for gpt-5-mini models", () => { + const model: ModelInfo = { + ...baseModel, + } + + const result = getModelParams({ + modelId: "gpt-5-mini-2025-08-07", + format: "openai" as const, + settings: { modelTemperature: 0.7 }, // User setting should be overridden + model, + }) + + expect(result.temperature).toBe(1) + }) + + it("should hardcode temperature to 1 for gpt-5-nano models", () => { + const model: ModelInfo = { + ...baseModel, + } + + const result = getModelParams({ + modelId: "gpt-5-nano-2025-08-07", + format: "openai" as const, + settings: { modelTemperature: 0.3 }, // User setting should be overridden + model, + }) + + expect(result.temperature).toBe(1) + }) + + it("should hardcode temperature to 1 even when no temperature is specified for gpt-5", () => { + const model: ModelInfo = { + ...baseModel, + } + + const result = getModelParams({ + modelId: "gpt-5-2025-08-07", + format: "openai" as const, + settings: {}, // No temperature specified + model, + defaultTemperature: 0.2, // Default should also be overridden + }) + + expect(result.temperature).toBe(1) + }) + + it("should not hardcode temperature for non-gpt-5 openai models", () => { + const model: ModelInfo = { + ...baseModel, + } + + const result = getModelParams({ + modelId: "gpt-4-turbo", + format: "openai" as const, + settings: { modelTemperature: 0.5 }, + model, + }) + + expect(result.temperature).toBe(0.5) + }) + + it("should not hardcode temperature for gpt-5 models in non-openai format", () => { + const model: ModelInfo = { + ...baseModel, + } + + const result = getModelParams({ + modelId: "gpt-5-2025-08-07", + format: "openrouter" as const, + settings: { modelTemperature: 0.5 }, + model, + }) + + expect(result.temperature).toBe(0.5) // Should not be hardcoded for openrouter + }) + + it("should hardcode temperature for gpt-5 with reasoning effort", () => { + const model: ModelInfo = { + ...baseModel, + supportsReasoningEffort: true, + } + + const result = getModelParams({ + modelId: "gpt-5-2025-08-07", + format: "openai" as const, + settings: { + modelTemperature: 0.5, + reasoningEffort: "high", + }, + model, + }) + + expect(result.temperature).toBe(1) + expect(result.reasoningEffort).toBe("high") + }) + + it("should hardcode temperature for gpt-5 with verbosity settings", () => { + const model: ModelInfo = { + ...baseModel, + } + + const result = getModelParams({ + modelId: "gpt-5-2025-08-07", + format: "openai" as const, + settings: { + modelTemperature: 0.5, + verbosity: "high", + }, + model, + }) + + expect(result.temperature).toBe(1) + expect(result.verbosity).toBe("high") + }) + }) }) diff --git a/src/api/transform/model-params.ts b/src/api/transform/model-params.ts index cc30aa5605..19c83f0fe8 100644 --- a/src/api/transform/model-params.ts +++ b/src/api/transform/model-params.ts @@ -146,6 +146,11 @@ export function getModelParams({ params.temperature = undefined } + // Hardcode temperature to 1 for GPT-5 models + if (modelId.startsWith("gpt-5")) { + params.temperature = 1 + } + return { format, ...params,