Skip to content

Commit 14f6f57

Browse files
fix: API-scoped gpt-5.4-mini reasoning_effort suppression
Only suppress reasoning_effort for gpt-5.4-mini in chat/completions API. Responses API paths retain GPT_52 reasoning efforts since the model supports reasoning in that context. Fixes #76176
1 parent 96e3bc8 commit 14f6f57

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

src/agents/openai-reasoning-effort.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ describe("OpenAI reasoning effort support", () => {
1313
expect(resolveOpenAIReasoningEffortForModel({ model, effort: "xhigh" })).toBe("xhigh");
1414
});
1515

16+
it("omits reasoning_effort for gpt-5.4-mini in chat/completions", () => {
17+
const model = { provider: "openai", id: "gpt-5.4-mini", api: "openai-completions" };
18+
expect(resolveOpenAISupportedReasoningEfforts(model)).toHaveLength(0);
19+
expect(resolveOpenAIReasoningEffortForModel({ model, effort: "medium" })).toBeUndefined();
20+
});
21+
22+
it("preserves reasoning_effort for gpt-5.4-mini in responses API", () => {
23+
const model = { provider: "openai", id: "gpt-5.4-mini", api: "openai-responses" };
24+
expect(resolveOpenAISupportedReasoningEfforts(model)).toContain("medium");
25+
expect(resolveOpenAIReasoningEffortForModel({ model, effort: "medium" })).toBe("medium");
26+
});
27+
1628
it("does not downgrade xhigh when Pi compat metadata declares it explicitly", () => {
1729
const model = {
1830
provider: "openai-codex",

src/agents/openai-reasoning-effort.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,14 @@ export function resolveOpenAISupportedReasoningEfforts(
8080
if (/^gpt-5\.[2-9](?:\.\d+)?-pro(?:-|$)/u.test(id)) {
8181
return GPT_PRO_REASONING_EFFORTS;
8282
}
83+
const api = normalizeLowercaseStringOrEmpty(typeof model.api === "string" ? model.api : "");
84+
if (api === "openai-responses" || api === "openai-codex-responses") {
85+
if (/^gpt-5\.4-mini(?:-|$)/u.test(id)) {
86+
return GPT_52_REASONING_EFFORTS;
87+
}
88+
} else if (/^gpt-5\.4-mini(?:-|$)/u.test(id)) {
89+
return [];
90+
}
8391
if (/^gpt-5\.[2-9](?:\.\d+)?(?:-|$)/u.test(id)) {
8492
return GPT_52_REASONING_EFFORTS;
8593
}

0 commit comments

Comments
 (0)