From 2ed71281e4b8f5830a5dcc4a1d28a3c6a17f3bae Mon Sep 17 00:00:00 2001 From: Bao Date: Sun, 12 Jul 2026 07:03:11 +0700 Subject: [PATCH] fix: omit unset temperature from Responses API requests --- core/llm/llms/OpenAI.test.ts | 20 ++++++++++++++++++++ core/llm/llms/OpenAI.ts | 4 +++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/core/llm/llms/OpenAI.test.ts b/core/llm/llms/OpenAI.test.ts index 943e9436903..efa52a77dfc 100644 --- a/core/llm/llms/OpenAI.test.ts +++ b/core/llm/llms/OpenAI.test.ts @@ -1,6 +1,26 @@ +import { ChatMessage, CompletionOptions } from "../../index.js"; import OpenAI from "./OpenAI"; +class TestOpenAI extends OpenAI { + convertArgsResponses(options: CompletionOptions, messages: ChatMessage[]) { + return this._convertArgsResponses(options, messages); + } +} + describe("OpenAI", () => { + test("omits temperature from Responses API requests unless configured", () => { + const openai = new TestOpenAI({ model: "gpt-5" }); + const messages: ChatMessage[] = [{ role: "user", content: "Hello" }]; + const baseOptions = { model: "gpt-5" } as CompletionOptions; + + expect( + openai.convertArgsResponses(baseOptions, messages), + ).not.toHaveProperty("temperature"); + expect( + openai.convertArgsResponses({ ...baseOptions, temperature: 0 }, messages), + ).toHaveProperty("temperature", 0); + }); + test("should identify correct o-series models", () => { const openai = new OpenAI({ model: "o3-mini", diff --git a/core/llm/llms/OpenAI.ts b/core/llm/llms/OpenAI.ts index c65b55dc1a5..c9292a940d8 100644 --- a/core/llm/llms/OpenAI.ts +++ b/core/llm/llms/OpenAI.ts @@ -328,7 +328,9 @@ class OpenAI extends BaseLLM { const body: ResponseCreateParamsBase = { model, input, - temperature: options.temperature ?? null, + ...(options.temperature !== undefined && { + temperature: options.temperature, + }), top_p: options.topP ?? null, reasoning: { effort: "medium",